Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 06, 2025 02:03

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Apr 19, 2010 15:01 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
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 ?

Danke,
Final


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 19, 2010 15:14 
Offline
DGL Member
Benutzeravatar

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...

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 22, 2010 11:10 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Die Frage ist, wo speichere ich das ?
Im WindowPosChanging/Change event ? Und wo setzte ich es zurück.

Das ist leider gar nicht so einfach, weil das verschieben ja automatisch passiert.

Ich trace mal ob nachdem welche Window Message aufgerufen wird, eventuell finde ich dann etwas.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 22, 2010 14:44 
Offline
DGL Member
Benutzeravatar

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^^

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 22, 2010 15:13 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Bergmann89 hat geschrieben:
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^^

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 :-(


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Apr 24, 2010 16:44 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Problem behoben:

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.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 25, 2010 14:19 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wie wärs wenn du die Ankerposition deiner Anwendung relativ anstatt absolut speicherst. Also statt (200px, 150px) speicherst du (0,23; 0,10)

Sobald dann ein Resize auftritt setzt du die Position des Fensters wieder, indem du die neue Absolute Position erstmal berechnest.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Apr 28, 2010 10:32 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Hmm das mit den Relativen Positionen wäre besser hast recht.

Ich merke auch aktuell das selbst durch mein Fix es passiert,
das beim Start die Playlist z.b. ein bischen verschoben ist :(

Ich glaube ich muss das Docking System und das komplette Fenster Management mal überarbeiten.
Da spinnt irgendwie alles.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]