Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Größenänderung der Komponente im Formulardesigner (https://www.delphipraxis.net/40223-groessenaenderung-der-komponente-im-formulardesigner.html)

MatthiasW 12. Feb 2005 17:05


Größenänderung der Komponente im Formulardesigner
 
Wie kann ich ermitteln ob eine Größenänderung meiner Komponente im Formulardesigner beendet wurde? Prinzipiell kann ich ja Größenänderungen mit WMSize feststellen. Aber wie kann ich jetzt ermitteln ob der Benutzer die Maustaste wieder losgelassen hat und die Größenänderung damit beendet ist? Ich möchte eine Aktion erst dann starten wenn die Größenänderung beendet ist.

Hat jemand eine Idee wie ich meinem Ziel näher kommen kann?

schöni 13. Feb 2005 00:43

Re: Größenänderung der Komponente im Formulardesigner
 
Hallo MatthiasW!

Zitat:

Zitat von MatthiasW
Aber wie kann ich jetzt ermitteln ob der Benutzer die Maustaste wieder losgelassen hat und die Größenänderung damit beendet ist? Ich möchte eine Aktion erst dann starten wenn die Größenänderung beendet ist.

Erzeuge im Objektinspektor per Doppelklick die Ereignisbehandlungsmethode für OnMouseUp. Dort rein gehören dann alle weteren Aktionen.

Viel Erfolg wünscht

schöni

Muetze1 13. Feb 2005 01:42

Re: Größenänderung der Komponente im Formulardesigner
 
Moin!

Zitat:

Zitat von schöni
Hallo MatthiasW!

Zitat:

Zitat von MatthiasW
Aber wie kann ich jetzt ermitteln ob der Benutzer die Maustaste wieder losgelassen hat und die Größenänderung damit beendet ist? Ich möchte eine Aktion erst dann starten wenn die Größenänderung beendet ist.

Erzeuge im Objektinspektor per Doppelklick die Ereignisbehandlungsmethode für OnMouseUp. Dort rein gehören dann alle weteren Aktionen.

Viel Erfolg wünscht

schöni

Hmm, versuch mal mit dem OI einer Komponente zur Designzeit was zu zu weisen welches die Komponente gerade in der Designzeit schon braucht.

Er ist in der Designzeit, daher nützt ihm sowas nicht.

Mal eine andere Frage: Brauchst du diese Informationen um nicht ständig etwas neu aufbauen zu müssen was wiederrum Zeit kostet und damit das resizen zu einer Qual macht? Wenn ja, dann löse ein invalidate beim Resize aus und schaue im Paint nach, ob sich die Grösse geändert hat - wenn ja, dann dort das benötigte neu erstellen. Hintergrund: Das "dreckig" markieren von Bereichen einer DC wird von Windows automatisch akkumuliert und zusammen gefasst. Das neu zeichnen wird in regelmässigen Abständen aufgerufen so lange etwas anliegt, aber gleichzeitig fasst es viele Anforderungen zusammen. Dadurch wird auch das Zeichnen entkoppelt.

Andere Möglichkeit: Einfach die SetBounds() Methode überschreiben - diese wird eh immer am Ende von Resizing aufgerufen und dann entsprechend reagieren. Beachte: Erst nach dem Inherited im SetBounds() hat die Komponente die neue Grösse...

MfG
Muetze1

MatthiasW 13. Feb 2005 09:12

Re: Größenänderung der Komponente im Formulardesigner
 
Zitat:

Zitat von Muetze1
Andere Möglichkeit: Einfach die SetBounds() Methode überschreiben - diese wird eh immer am Ende von Resizing aufgerufen und dann entsprechend reagieren. Beachte: Erst nach dem Inherited im SetBounds() hat die Komponente die neue Grösse...

ich glaube die wird aber doch nach jeder Größenänderung aufgerufen und nicht erst wenn die Maustaste wieder losgelassen wurde.

Zu dem was ich machen will: ich möchte, wenn eine Eigenschaft "IntegralHeight" gesetzt ist und die Gesamthöhe nicht genau ein vielfaches eines festgelegten wertes ist, die Controlhöhe neu setzen. Diese kann ich aber nicht solange tun wie die Größe noch verändert werden kann, denn dann wäre eine Größenänderung mit der Maus (im Formulardesigner) sehr schwierig bis unmöglich. Ich kann also meine funktion zum prüfen und setzen erst drauf loslassen wenn die Größenänderung abgeschlossen ist.

MatthiasW 13. Feb 2005 09:22

Re: Größenänderung der Komponente im Formulardesigner
 
Hallo,

meine Vermutung hat sich als falsch erwiesen, das "SetBounds" wird doch erst ausgelöst wenn die Maustaste losgelassen wurde.

Danke für den tipp so klappst

Muetze1 13. Feb 2005 13:36

Re: Größenänderung der Komponente im Formulardesigner
 
Moin!

Vor allem kannst du dort vor dem Inherited Aufruf die Höhe noch anpassen auf ein Vielfaches deiner Eigenschaft.

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz