![]() |
JvPanel zur Laufzeit skalieren
Hallo und einen schönen Sonntag zusammen,
ich habe ein Form mit mehreren gleichgroßen JvPanel Komponenten. Ich möchte diese zur Laufzeit skalieren können. Das geht auch soweit ohne Problem. Jetzt kommt das was ich bislang noch nicht hinbekommen habe. Ändere ich die Größe von z.B. Panel1, sollen alle anderen Panels ebenfalls gleichmäßig mit "Größer" oder "Kleiner" werden. Die Panels werden zur Laufzeit auch erst erstellt. Das heißt, ich muss der Methode eine Prozedure zuweisen.
Delphi-Quellcode:
Das Problem ist, ich kann das entsprechenden Panel skalieren, allerdings wird die Methode OnChangeWidth und OnChangeHeigth nie aufgerufen. Selbst wenn ich eine Komponente zur Entwurfszeit auf die Form legen und z.B. ein ShowMessage('Größe geändert'); in die Methode eintrage. Es passiert nichts. Kennt jemand vieleicht das Problem?
private
//Methoden zu JvPanel procedure PanelSetWidth(Sender: TObject; ChangedSize: Integer); procedure PanelSetHeight(Sender: TObject; ChangedSize: Integer); ... //Erstellen der Panels zu Laufzeit Panels[i] := TJvPanel.Create(Self); with Panels[i] do begin Name := 'p'+IntToStr(i);; Parent := ParentPan; Align := alClient; Height := KPanelHeight; Width := KPanelWidth; Caption := IntToStr(i); Sizeable := True; OnChangedWidth := PanelSetWidth; OnChangedHeigth := PanelSetHeigth; TabOrder := i; end; Gruß Jens |
AW: JvPanel zur Laufzeit skalieren
Versuzch es mal ohne with
|
AW: JvPanel zur Laufzeit skalieren
Zitat:
|
AW: JvPanel zur Laufzeit skalieren
Du musst eine Prozedur zuweisen die erreichbar ist
Delphi-Quellcode:
TForm1 = class(TForm)
JvPanel1: TJvPanel; procedure JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer); //...... procedure TForm1.JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer); begin //CODE end; |
AW: JvPanel zur Laufzeit skalieren
Zitat:
Delphi-Quellcode:
Wie gesagt, selbst bei zur Entwurszeit auf die Form gelegten Komponenten wird die Prozedur nicht ausgelößt..
private
//Ist in der selben Unit, ansonsten könnte ich ja nicht kompilieren... Gruß Jens |
AW: JvPanel zur Laufzeit skalieren
dann muss es irgendwo ein Missverständnis geben, das hier funktioniert ....
Delphi-Quellcode:
procedure TForm1.JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer);
begin Showmessage(IntToStr(ChangedSize)); end; procedure TForm1.JvPanel1Click(Sender: TObject); begin JvPanel1.Height := JvPanel1.Height + 10; end; |
AW: JvPanel zur Laufzeit skalieren
Ich weiß, das geht. Da Du die Höhe hier durch das OnClick beeinflussen tust.
Du kannst aber die Größe ja auch bei der Eigenschaft
Delphi-Quellcode:
über die Maus mit ziehen im unteren Bereich einstellen. Dabei passiert nichts..
Sizeable := True;
|
AW: JvPanel zur Laufzeit skalieren
OK, jetzt habe ich verstanden wo es hängt ....
Delphi-Quellcode:
TForm1 = class(TForm) JvPanel1: TJvPanel; procedure JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} { TJvPanel } procedure TJvPanel.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); begin inherited; if Assigned(OnChangedHeight) then OnChangedHeight(Self,AHeight); end; procedure TForm1.JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer); begin Caption := (IntToStr(ChangedSize)); end; |
AW: JvPanel zur Laufzeit skalieren
Zitat:
Ich muss allerdings gestehen, noch nie eine Prozedur mit dem Aufruf
Delphi-Quellcode:
aus einer anderen Klasse genutzt zu haben.
inherited
Gruß Jens |
AW: JvPanel zur Laufzeit skalieren
Delphi-Quellcode:
type
TJvPanel=Class(JVPanel.TJvPanel) procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer);override; End; TForm1 = class(TForm) JvPanel1: TJvPanel; procedure JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer); private { Private-Deklarationen } ................. ................ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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