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 Aktion nach(!) Zeichnen des Formulars & Controls zentrieren (https://www.delphipraxis.net/75445-aktion-nach-zeichnen-des-formulars-controls-zentrieren.html)

c.wuensch 19. Aug 2006 00:26


Aktion nach(!) Zeichnen des Formulars & Controls zentrie
 
Hallo,

sorry für die dumme Frage, aber wie kann ich denn eine Prozedur ausführen, nachdem mein Hauptformular gezeichnet wurde (OnShow wird ja vorher ausgeführt)?

Ach, und noch was: Wie kriege ich es hin, dass ein Control beim Ändern der Formgröße immer in der Mitte bleibt, aber seine Größe nicht ändert (also scheiden Anchors wohl aus...)?

Cu, Chris

_frank_ 19. Aug 2006 00:38

Re: Aktion nach(!) dem Zeichnen des Formulars ausführen
 
wegen nr. 1 evtl. so:

Delphi-Quellcode:
procedure paint;override;

procedure TFormx.Paint;
begin
inherited;
//hier dein code
end;
nr. 2: http://www.delphi-forum.de/viewtopic...500&highlight=

HTH Frank

Hawkeye219 19. Aug 2006 00:48

Re: Aktion nach(!) dem Zeichnen des Formulars ausführen
 
Hallo Chris,

Zitat:

Zitat von c.wuensch
also scheiden Anchors wohl aus...

Es geht auch mit den Anchors. Zentriere das Control in der IDE über den Ausrichtungs-Dialog (horizontal und vertikal "in Fenster zentrieren"). Anschließend schaltest du alle Anchors für das Control ab.

PS: ändere bitte den Titel deines Beitrag so ab, daß auch die zweite Frage über die Suchfunktion gefunden wird. In Zukunft bitte nur eine Frage pro Thread - ist übersichtlicher so.

Gruß Hawkeye

uligerhardt 19. Aug 2006 01:09

Re: Aktion nach(!) dem Zeichnen des Formulars ausführen
 
Zitat:

Zitat von c.wuensch
sorry für die dumme Frage, aber wie kann ich denn eine Prozedur ausführen, nachdem mein Hauptformular gezeichnet wurde (OnShow wird ja vorher ausgeführt)?

Vielleicht reicht's ja, mit PostMessage eine benutzerdefinierte Message an die Form zu schicken.

Uli.

c.wuensch 19. Aug 2006 01:19

Re: Aktion nach(!) Zeichnen des Formulars & Controls zen
 
@Hawkeye:
Diese Lösung ist genial! Genau das was ich gesucht hatte, und noch dazu weiß ich jetzt auch, wofür dieser Ausrichten-Dialog gut ist ;-)

@Uli:
Zitat:

Vielleicht reicht's ja, mit PostMessage eine benutzerdefinierte Message an die Form zu schicken.
Das klingt gut, bloß wie mache ich das? Mit Windows-Messages habe ich leider noch nie gearbeitet...

Cu, Chris

c.wuensch 21. Aug 2006 00:10

Re: Aktion nach(!) Zeichnen des Formulars & Controls zen
 
Das mit dem PostMessage habe ich leider immernoch nicht zu meiner Zufriedenheit hinbekommen. Kann mir da vielleicht jemand auf die Sprünge helfen?

Cu, Chris

uligerhardt 21. Aug 2006 08:01

Re: Aktion nach(!) Zeichnen des Formulars & Controls zen
 
Zitat:

Zitat von c.wuensch
Das mit dem PostMessage habe ich leider immernoch nicht zu meiner Zufriedenheit hinbekommen. Kann mir da vielleicht jemand auf die Sprünge helfen?

Mal sehen. :-)

Erstmal musst du dir eine Message-Konstante definieren:
Delphi-Quellcode:
const
  UM_STARTMODUSCHANGE = WM_APP + 663;
Der genaue Wert der Konstanten ist egal, er sollte nur im von Microsoft angedachten Bereich (> WM_APP) und innerhalb deiner Anwendung eindeutig sein.

An geeigneter Stelle (bei dir vielleicht im OnShow) postest du deine Message:
Delphi-Quellcode:
  PostMessage(Handle, UM_STARTMODUSCHANGE, 0, 0);
Schließlich musst du die Message auch wieder auffangen:
Delphi-Quellcode:
  TDeineForm = class(TForm)
strict private
  procedure UMStartModusChange(var Message: TMessage); message UM_STARTMODUSCHANGE;
end;
Delphi-Quellcode:
procedure TDeineForm.UMStartModusChange(var Message: TMessage);
begin
  // was auch immer
end;
Das war's auch schon. Jetzt ist nur noch die Frage, ob der Teil mit "was auch immer" für deine Bedürfnisse zum richtigen Zeitpunkt kommt.

HTH, Uli.

c.wuensch 21. Aug 2006 22:46

Re: Aktion nach(!) Zeichnen des Formulars & Controls zen
 
@Uli: Vielen Dank für das tolle Beispiel!!!

Ich werde das gleich morgen mal testen, und hoffe schonmal, dass die Message wirklich nach dem Zeichnen des Formulars verarbeitet wird.

Cu, Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:50 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