![]() |
WM_SIZE Handler Maximize, Minimize,...
Hallo Delphi Praxis,
vor kurzem hat man mir die Seite ![]() Jetzt möchte ich die Ereignisse 1) Fenster maximieren, 2) Fenster minimieren, 3) Fenstergröße wiederherstellen und 4) Fenster neu laden (aus der Taskleiste) erstellen. Size_Maximized, Size_Minimized, Size_Rerstored ... müsste ich eigentlich verwenden können. Ich kenne mich damit noch nicht sehr gut aus und habe Probleme die richtige procedure deklarierung im type Teil der Form zu finden. Ich hab es mit folgendem veruscht:
Delphi-Quellcode:
Ich bekomme beim kompilieren zahlreiche Fehlermeldungen und nichts funktioniert.
type
TForm1 = class(TForm) procedure WMSizeMaximized(var Message: TMessage); message WM_SIZE; [...] procedure TSchreibmaschine.WMSizeMaximized(var Message: TMessage); begin neuzeichnen; end; Was ich suche ist jemand der von WM_Size ahnung hat und mir erklären kann, wie ich es richtig benutzen kann. Ich möchte wissen wie man das jeweilige im Quelltext schreibt, ich weiß z.B. das man:
Delphi-Quellcode:
so schreibt, bei den anderen habe ich leider keine Ahnung.
procedure WMSizeMaximized(var Message: TMessage); message WM_SIZE;
Ich hoffe ihr könnt mir helfen, FG Dunkelbunt |
AW: WM_SIZE Handler Maximize, Minimize,...
Zitat:
|
AW: WM_SIZE Handler Maximize, Minimize,...
Häng die Deklaration in den private Teil und vergiss inherited nicht.
|
AW: WM_SIZE Handler Maximize, Minimize,...
Liste der Anhänge anzeigen (Anzahl: 1)
Natürlich nicht,
hier die Fehlermeldung (es kommt bei genauer betrachtung 4x dieselbe). |
AW: WM_SIZE Handler Maximize, Minimize,...
Zitat:
Könntest du mir das mal am Beispiel erklären, oder am besten kurz im Quelltextform schreiben? wäre ganz lieb |
AW: WM_SIZE Handler Maximize, Minimize,...
klingt nach einem Fehler in neuzeichnen;
|
AW: WM_SIZE Handler Maximize, Minimize,...
Wie leitet man denn normalerwiese das Ereignis ein, wenn das Fenster vergrößert wird, das Grundgerüst dazu müsste doch jedesmal gleich sein, oder?
Das zeichnen funktioniert eigentlich, es ist einfach übernommen, da bei alles anderen Schritten im Programm, wie resizen, ... läuft es problemlos ab. [edit] Wenn ich fogendes schreibe:
Delphi-Quellcode:
bekomme ich folgenden Fehler:
procedure WMSizeMaximized(var Message: TMessage); message WM_SIZE;
procedure WMSizeMinimized(var Message: TMessage); message WM_SIZE;
Code:
[/edit]
[DCC Fehler] Schreibunit.pas(22): E2140 Doppelter Botschaftsmethoden-Index
|
AW: WM_SIZE Handler Maximize, Minimize,...
Delphi-Quellcode:
Aber warum nutzt du nicht OnPaint, um festzustellen, ob neu gezeichnet werden muss oder nicht?
type
TForm1 = class(TForm) Label1: TLabel; private { Private declarations } procedure WMSize(var Msg: TMessage); message WM_SIZE; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMSize(var Msg: TMessage); begin case Msg.WParam of SIZE_MAXIMIZED: Label1.Caption := 'Maximiert'; SIZE_MINIMIZED: Label1.Caption := 'Minimiert'; SIZE_RESTORED: Label1.Caption := 'Wiederhergestellt'; end; end; |
AW: WM_SIZE Handler Maximize, Minimize,...
Zitat:
[edit] Danke, die Size Methode funktioniert super! Warum komm ich von alleine nie auf den richtigen Weg... Naja, dazu fragt man ja ;) [/edit] |
AW: WM_SIZE Handler Maximize, Minimize,...
Schon mal in die Ereignispalette des Objektinspektors deines Formulares geguckt?
|
AW: WM_SIZE Handler Maximize, Minimize,...
Ich weiß wo ich OnPaint finde ;D
Aber danke, für den Tipp. [edit]Ich muss mich leider nochmal melden. Das:
Delphi-Quellcode:
verträgt sich leider überhaupt nicht mit:
private
{ Private-Deklarationen } procedure WMSize(var Msg: TMessage); message WM_SIZE; [...]
Delphi-Quellcode:
Wenn ich beides schreibe, wirkt das ExitSizeMove nicht mehr, und das Fenster wird nicht neugezeichnet nach dem resizen.
type
[...] procedure WMExitSizeMove(var Message: TMessage); message WM_EXITSIZEMOVE; Jemand ne Idee wie ich das lösen könnte? Oder ob man beides verbinden kann? [/edit] [edit2] Ich hab das ganze jetzt mit folgendem gelöst, jedoch fehlt noch eine Kleinigkeit:
Delphi-Quellcode:
Was fehlt ist, wenn ich das Fenster maximiere und dann auf Größe wiederherstellen klicke, wird nicht neu gezeichnet!
procedure TForm1.FormPaint(Sender: TObject);
begin case Form1.WindowState of wsMaximized: //maximiert begin [...] end; wsMinimized: //minimiert begin [...] end; wsNormal: begin [...] //... end; else begin [...] //... end; end; end; Weiß jemand was ich dazu machen muss? [/edit2] |
AW: WM_SIZE Handler Maximize, Minimize,...
(Es sind jetzt mehr als 24h vergangen, also muss ich einen neuen Post schreiben.)
Mir fehlt eine Prozedur oder Eigenschaft die ich benutzen kann um ein Ereignis auszulösen, wnen ich das Programm erst maximiere und dann auf Größe wiederherstellen, Verkleinern, oder wie es sonst noch in den Windows versionen heißt. Es ist die Schaltfläche zwischen maximieren und minimieren. (Ich hoffe jeder weiß was ich meine) Es wäre klasse, wenn jemand eine Antwort wüsste! |
AW: WM_SIZE Handler Maximize, Minimize,...
Delphi-Quellcode:
type
TForm1 = class(TForm) private { Private-Deklarationen } procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; public { Public-Deklarationen } end; ... procedure TForm1.WMSysCommand(var Msg: TWMSysCommand); begin inherited; if Msg.CmdType = SC_RESTORE then ShowMessage('Hallo'); end; |
AW: WM_SIZE Handler Maximize, Minimize,...
Was willst du eigentlich erreichen? Jedes mal wenn ein neu zeichnen erforderlich ist, wird OnPaint ausgelöst.
|
AW: WM_SIZE Handler Maximize, Minimize,...
Danke!
DeddyH :thumb: funktioniert. Zitat:
FG Dunkelbunt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz