Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TPanel: Height überschreiben (https://www.delphipraxis.net/138179-tpanel-height-ueberschreiben.html)

Helmi 4. Aug 2009 20:51


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?

himitsu 4. Aug 2009 20:57

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:

Helmi 4. Aug 2009 21:02

Re: TPanel: Height überschreiben
 
ich habs so propiert:

Delphi-Quellcode:
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;
Zur Erklärung, egal was eingegeben wird als Height, es soll immer 30 dazu gerechnet werden.

Wenn ich das ausführe, bekomm ich einen Stack-Überlauf.
Sprich, ne Endlosschleife.

Satty67 4. Aug 2009 21:13

Re: TPanel: Height überschreiben
 
Du rufst mit self.heigth auch permanent SetHeight auf.

Schreib einfach FHeight := Value +30;

Helmi 4. Aug 2009 21:16

Re: TPanel: Height überschreiben
 
Hab ich ausprobiert.

Aber dann wird die Höhe nicht geändert....

himitsu 4. Aug 2009 21:25

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;

Satty67 4. Aug 2009 21:30

Re: TPanel: Height überschreiben
 
Ach OK, man sollte alles lesen. Geht ja um eine TPanel Ableitung...

/killed ;)

Helmi 4. Aug 2009 21:33

Re: TPanel: Height überschreiben
 
Zitat:

Zitat von himitsu
und so?

ja genau so :-)

Danke - das hat funktioniert!

himitsu 4. Aug 2009 21:46

Re: TPanel: Height überschreiben
 
PS: dein Weg wäre vermutlich auch gegangen, allergings mit einer Änderung
Delphi-Quellcode:
procedure TMaskFrame.SetHeight(Value: Integer);
begin
  If FHeight <> Value then
    begin
      FHeight := Value;
      inherited Height := Value + 30;
    end;
end;
und es wäre FHeight sozusagen doppelt vorhanden, einmal bei dir und in den Vorfahren

Helmi 5. Aug 2009 04:55

Re: TPanel: Height überschreiben
 
Zitat:

Zitat von himitsu
PS: dein Weg wäre vermutlich auch gegangen, allergings mit einer Änderung
Delphi-Quellcode:
procedure TMaskFrame.SetHeight(Value: Integer);
begin
  If FHeight <> Value then
    begin
      FHeight := Value;
      inherited Height := Value + 30;
    end;
end;
und es wäre FHeight sozusagen doppelt vorhanden, einmal bei dir und in den Vorfahren

Hallo Himitsu,

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 Uhr.
Seite 1 von 2  1 2      

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