![]() |
TPanel: Height überschreiben
Hallo,
ich habe eine Komponente die von TPanel abgeleitet ist. Nun möchte ich gerne das Height überschreiben. Wie mach ich das am Einfachsten? |
Re: TPanel: Height überschreiben
schonmal versucht es einfach neu zu definieren?
und um auf das "alte" Property zuzugreifen, gibt es auch da das gute alte Inherited. :stupid: |
Re: TPanel: Height überschreiben
ich habs so propiert:
Delphi-Quellcode:
Zur Erklärung, egal was eingegeben wird als Height, es soll immer 30 dazu gerechnet werden.
private
FHeight: Integer; procedure SetHeight(Value: Integer); puplished property Height: Integer read FHeight write SetHeight; { ... } procedure TMaskFrame.SetHeight(Value: Integer); begin If FHeight <> Value then begin FHeight := Value; self.Height := Value + 30; end; end; Wenn ich das ausführe, bekomm ich einen Stack-Überlauf. Sprich, ne Endlosschleife. |
Re: TPanel: Height überschreiben
Du rufst mit self.heigth auch permanent SetHeight auf.
Schreib einfach FHeight := Value +30; |
Re: TPanel: Height überschreiben
Hab ich ausprobiert.
Aber dann wird die Höhe nicht geändert.... |
Re: TPanel: Height überschreiben
und so?
Delphi-Quellcode:
private
function GetHeight: Integer; procedure SetHeight(Value: Integer); puplished property Height: Integer read GetHeight write SetHeight; { ... } function TMaskFrame.GetHeight: Integer; begin Result := inherited Height - 30; end; procedure TMaskFrame.SetHeight(Value: Integer); begin inherited Height := Value + 30; end; |
Re: TPanel: Height überschreiben
Ach OK, man sollte alles lesen. Geht ja um eine TPanel Ableitung...
/killed ;) |
Re: TPanel: Height überschreiben
Zitat:
Danke - das hat funktioniert! |
Re: TPanel: Height überschreiben
PS: dein Weg wäre vermutlich auch gegangen, allergings mit einer Änderung
Delphi-Quellcode:
und es wäre FHeight sozusagen doppelt vorhanden, einmal bei dir und in den Vorfahren
procedure TMaskFrame.SetHeight(Value: Integer);
begin If FHeight <> Value then begin FHeight := Value; inherited Height := Value + 30; end; end; |
Re: TPanel: Height überschreiben
Zitat:
deine Änderung klingt gut! - Ich werde das heute nachmittag/abend mal ausprobieren. Jetzt gehts nicht, weil ich schon der Arbeit bin... Ich hab das inherited vor der If-Anweisung gehabt (so wie z. b. bei einem constructor). Mit deiner Änderung hätte ich mein eigenes FHeight für weitere Zwecke im Code vorhanden. |
Re: TPanel: Height überschreiben
Vermutlich ist es die einfachste/sauberste Methode die Methode
Delphi-Quellcode:
welche in der Klasse TControl definiert ist zu überschreiben.
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); virtual;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:09 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