AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel
Thema durchsuchen
Ansicht
Themen-Optionen

OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

Ein Thema von hhluemmel · begonnen am 23. Feb 2007 · letzter Beitrag vom 25. Feb 2007
Antwort Antwort
hhluemmel

Registriert seit: 14. Mär 2005
Ort: Hamburg
49 Beiträge
 
#1

OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

  Alt 23. Feb 2007, 17:03
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
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

  Alt 23. Feb 2007, 17:24
Kannst du genau so machen. Einfach in deine Deklaration die zwei Message-Handler rein und implementieren.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
hhluemmel

Registriert seit: 14. Mär 2005
Ort: Hamburg
49 Beiträge
 
#3

Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

  Alt 24. Feb 2007, 10:24
Das hatte ich schon versucht, nur die werden leider nicht aufgerufen!
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

  Alt 24. Feb 2007, 11:05
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.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

  Alt 24. Feb 2007, 12:04
es genügt nur SetBounds zu überschreiben da SetWidth etc. auch letztendlich SetBounds aufruft.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
hhluemmel

Registriert seit: 14. Mär 2005
Ort: Hamburg
49 Beiträge
 
#6

Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

  Alt 24. Feb 2007, 12:18
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;
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

  Alt 24. Feb 2007, 16:35
BeforeResize wirst du nicht bekommen. bzw. so müsste man es machen:

Delphi-Quellcode:
//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;
Die "Do"-Methoden und die "On"-Events musst du natürlich auch noch entsprechend deklarieren/implementieren.

EDIT: Ich habs im Moment nicht so mit Typen...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
hhluemmel

Registriert seit: 14. Mär 2005
Ort: Hamburg
49 Beiträge
 
#8

Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

  Alt 25. Feb 2007, 10:50
Danke erstmal für die Hilfe ..

SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;

Der Aufruf sieht so aus, nur zur Info ...
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#9

Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

  Alt 25. Feb 2007, 11:04
Richtig. Die Events musst du dann natürlich auch entsprechend deklarieren.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
hhluemmel

Registriert seit: 14. Mär 2005
Ort: Hamburg
49 Beiträge
 
#10

Re: OnBeforeResize bzw. OnAfterResize bezogn auf ein TPanel

  Alt 25. Feb 2007, 13:21
Besten Dank für die Hilfe, klappt alles bestens!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 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