![]() |
OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
Zur Zeit entwickle ich eine Komponente, die vom TCustomPanel abgeleitet
wird. Auf diesem Panel werden verschiedene weitere Panels dargestellt. Wie kann ich für ein TCustomPanel abfragen, wann mit dem Resize begonnen bzw. wann es abgeschlossen ist? Ich möchte gern im Ereignis "OnBeforeResize" ein BeginUpdate und im "OnAfterResize" ein EndUpdate realisieren! Ähnlich wie dieses hier, nur dieses bezieht sich ja auf ein DelphiForm! Procedure OnBeforeResize (var msg: TMessage); message WM_ENTERSIZEMOVE; Procedure OnAfterResize (var msg: TMessage); message WM_EXITSIZEMOVE; // implementation Procedure TForm1.OnBeforeResize(var msg: TMessage); begin //.. end; Procedure TForm1.OnAfterResize(var msg: TMessage); begin //.. end; Danke |
Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
Kannst du genau so machen. Einfach in deine Deklaration die zwei Message-Handler rein und implementieren.
|
Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
Das hatte ich schon versucht, nur die werden leider nicht aufgerufen!
|
Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
Hmm... müssten aber... zeig mal deinen Code.
Ein Problem könnte ja noch sein, dass dein Panel solche Nachrichten einfach nciht kriegt, weil es ja keinen SizeGrip hat. Da müsstest du SetBounds, SetWidth, SetHeight etc. überschreiben und da deinen Eventhandler aufrufen. EDIT: bzw. da würden dann andere Messages kommen... die weiß ich aber grad nicht auswendig. |
Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
es genügt nur SetBounds zu überschreiben da SetWidth etc. auch letztendlich SetBounds aufruft.
|
Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
Hier mal der eine Code-Auszug ... wo bzw. wie müsste SetBounds überschreiben?
Danke
Delphi-Quellcode:
TTestPanel = class(TPanel)
private { Private-Deklarationen } Procedure OnBeforeResize (var msg: TMessage); message WM_ENTERSIZEMOVE; Procedure OnAfterResize (var msg: TMessage); message WM_EXITSIZEMOVE; protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create(AOwner: TComponent); override; destructor Destroy; override; published { Published-Deklarationen } end; { TTestPanel } constructor TTestPanel.Create(AOwner: TComponent); begin inherited Create (AOwner); end; destructor TTestPanel.Destroy; begin inherited; end; procedure TTestPanel.OnAfterResize(var msg: TMessage); begin // hier die Anweisung nach dem Resize end; procedure TTestPanel.OnBeforeResize(var msg: TMessage); begin // hier die Anweisung vor dem Resize end; |
Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
BeforeResize wirst du nicht bekommen. bzw. so müsste man es machen:
Delphi-Quellcode:
Die "Do"-Methoden und die "On"-Events musst du natürlich auch noch entsprechend deklarieren/implementieren.
//in den public-Abschnitt deiner Deklaration
procedure SetBounds(AWidth, AHeight: Integer); override; //hoffe das AWidth, AHeight passt //implementieren: procedure TTestPanel.SetBounds(AWidth, AHeight: Integer); override; var Allowed: Boolean; begin Allowed := true; DoBeforeResize(AWidth, AHeight, Allowed); //das gehört als virtuelle Methode rein, wenn du wi9llst, dass andere es anständig ableiten können if Assigned(OnBeforeResize) then OnBeforeResize(Self, AWidth, AHeight, Allowed); //Allowed jeweils als var-Parameter if Allowed then begin inherited; DoAfterResize; if Assigned(OnAfterResize) then OnAfterResize(self); end; end; EDIT: Ich habs im Moment nicht so mit Typen... |
Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
Danke erstmal für die Hilfe ..
SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; Der Aufruf sieht so aus, nur zur Info ... |
Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
Richtig. Die Events musst du dann natürlich auch entsprechend deklarieren.
|
Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
Besten Dank für die Hilfe, klappt alles bestens!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 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