Hallo, ich habe eine Form mit einem TImage.
Weiß jemand eine Möglichkeit, wie man die Position des Cursors (bzw die gerade aktuellen Maße der Form) WÄHREND des OnResize-Events abfragen und dementsprechend das davon abhängige Bild (TImage) ändern kann?
Bis jetzt sehe ich nur die Möglichkeit, die Größenänderung der Form abzuschließen und dann über OnResize die Veränderung der Höhe und Breite zu verarbeiten. Ich bräuchte einen Bezugspunkt außerhalb der Form. Vielleicht geht es irgendwie über die (Windows-) Messages, die während der Größenänderung gesendet werden?
Herzlichen Dank!
P. Nikolaus
Cursorposition abfragen während OnResize-Event?
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Cursorposition abfragen während OnResize-Event?
Die aktuelle Position des Mauszeigers kannst du über Forms.Mouse.CursorPos abfragenbr_klaus hat geschrieben:Weiß jemand eine Möglichkeit, wie man die Position des Cursors (bzw die gerade aktuellen Maße der Form) WÄHREND des OnResize-Events abfragen und dementsprechend das davon abhängige Bild (TImage) ändern kann?
Mir ist nicht wirklich klar, was du erreichen willst. Insbesondere ist mir nicht klar, inwiefern du zum Berechnen der Größe eines Steuerelementes eine Bezugsgröße außerhalb des Formulars benötigst -- zumal die Mausposition auch eine Position haben kann, die nichts mit der Größenänderung zu tun hat (bspw. über einen Doppelklick in die Kopfzeile).br_klaus hat geschrieben:Bis jetzt sehe ich nur die Möglichkeit, die Größenänderung der Form abzuschließen und dann über OnResize die Veränderung der Höhe und Breite zu verarbeiten. Ich bräuchte einen Bezugspunkt außerhalb der Form. Vielleicht geht es irgendwie über die (Windows-) Messages, die während der Größenänderung gesendet werden?
Zuletzt geändert von Socke am Mi 27. Apr 2011, 19:17, insgesamt 2-mal geändert.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Cursorposition abfragen während OnResize-Event?
der meinung bin ich auch.
Wenn du das OnResize kontrolieren willst.
Dann nimm BorderStyle = bsnone und erarbeite das resizen selber - ist nicht schwer, sieht am ende nur nicht schön aus
Wenn du das OnResize kontrolieren willst.
Dann nimm BorderStyle = bsnone und erarbeite das resizen selber - ist nicht schwer, sieht am ende nur nicht schön aus

Code: Alles auswählen
Signatur := nil;
-
- Beiträge: 244
- Registriert: Do 21. Jan 2010, 22:33
- OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)
Re: Cursorposition abfragen während OnResize-Event?
Und gibt es eine Möglichkeit, die aktuelle Formgröße zu ermitteln WÄHREND des Onresize? Normalerweise bleibt ja die Form davon unberührt, erst beim Loslassen der Maus werden die Änderungen wirksam.
Kann man die Änderungen schon während der Mausbewegung sichtbar machen?
Kann man die Änderungen schon während der Mausbewegung sichtbar machen?
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Cursorposition abfragen während OnResize-Event?
Ich kann mir vorstellen, dass dies auch vom jeweiligen Window-Manager abhängig ist, also unter einigen Window-Managern überhaupt nicht funktioniert. Aber in diesen Fällen dürfte das Formular bis zur Größenänderung auch gar nicht mitbekommen, dass die Größe geändert wird, und somit OnResize gar nicht erst auslösen.br_klaus hat geschrieben:Und gibt es eine Möglichkeit, die aktuelle Formgröße zu ermitteln WÄHREND des Onresize? Normalerweise bleibt ja die Form davon unberührt, erst beim Loslassen der Maus werden die Änderungen wirksam.
Bei mir (Debian 6, GNOME, Metacity, GTK 2) füllt dieser Code meine Listbox wunderbar:
Code: Alles auswählen
var
r: TRect;
begin
r := BoundsRect;
ListBox1.Items.Add(IntToStr(r.Right - r.Left)+'x'+IntToStr(r.Bottom-r.Top));
Application.ProcessMessages;
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 244
- Registriert: Do 21. Jan 2010, 22:33
- OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)
Re: Cursorposition abfragen während OnResize-Event?
Und wo bzw wann wird dieser Code aufgerufen?
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Cursorposition abfragen während OnResize-Event?
Beispielsweisebr_klaus hat geschrieben:Und wo bzw wann wird dieser Code aufgerufen?
oder auch in OnChangeBounds (das wird direkt davor aufgerufen) -- je nachdem was du willst.br_klaus hat geschrieben:WÄHREND des Onresize
Inwiefern das Application.ProcessMessages(); wichtig ist, kann ich dir nicht sagen; ich habs einfach mal reingeschrieben, damit auf jeden Fall neu gezeichnet wird und ich die Einträge in der ListBox sehe.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein