Ich habe das Problem dass bei Auflösungsänderung meine TForm´s verschoben werden. Da alle Forms über eine art Docking Manager verbunden sind, stimmen danach die States nicht mehr.
Ich versuche nun gerade einen Weg zu finden, bei dem ich Auflösungsänderungen bevor und nachdem sie passieren abfangen kann, vorher dann die Positionen speichere und wieder auf ihren ursprungswert zurücksetze.
Blöderweise gibt es nur das WM_DISPLAYCHANGE bei dem ich herauskriege, das eine Auflösung geändert wurde, das bringt mir nur leider nichts, weil genau an der stelle sind die Forms auch schon verschoben
Hätte da wer eine Idee wie man das Problem lösen kann ?
Würde die Form Docking Klasse helfen das problem zu analysieren ?
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
speicher dir die Position der Fomrs doch extra, das kostet zwar bisl Speicherplatz, aber das sollte das Problem lösen. Und wenn sich die Auflösung dann ändert kannst du mit den alten Positionswerten arbeiten...
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
na einfach ne Klassenvariable in die Form. N Record oder so, da haste ne schöne Struktur drin. Im OnShow setzten, und im OnResize dann verarbeiten und neu setzten. Dass erscheint mir der einfachste Weg, oder ich hab das Problem falsch verstanden^^
na einfach ne Klassenvariable in die Form. N Record oder so, da haste ne schöne Struktur drin. Im OnShow setzten, und im OnResize dann verarbeiten und neu setzten. Dass erscheint mir der einfachste Weg, oder ich hab das Problem falsch verstanden^^
MfG Bergmann
Ja sorry hast falsch verstanden. Es geht nicht darum wie ich die Form Position speichere, sondern wie ich verhindern kann oder zumindest abfangen kann, wenn sich meine Position verändert hat obwohl ich diese nicht selbst verändert habe.
Das passiert exakt indem moment wenn die Anwendung läuft, ich starte ein Spiel z.b. q3, das schaltet die Auflösung runter und boom, alle Fenster sind verschoben
Ich habe in der WM_WINDOWPOSCHANING methode eine überprüfung eingebaut ob die Anwendung aktiv ist (Mind. 1 Fenster enthält das Handle des aktiven Fokusierten Fenster) und danach verhindert das die Position verändert wird.
Das funktioniert wunderbar und ich hab endlich einen der nervigsten xenorate bugs hintermich gebracht
Ein Nachteil zieht das aber mit sich, wenn ich die Auflösung ändere von Grösser nach Kleiner und meine Forms sind ganz rechts oder ganz unten positioniert, dann wird wohl oder übel die Form nicht mehr sichtbar sein, da diese Ausserhalb des Screenrects befinden. Dafür hab ich leider noch keine Lösung.
Ich frag mich echt wie WinAMP das macht, das ist einer der einzigen Player mit perfekt funktionierendem Form Docking System.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.