![]() |
Eigenschaften aus dem OI in "Create" benutzen
Schon wieder ich..
komme mir schon fast blöd vor, aber habe wieder eine kleine Frage: Ich habe eine Eigenschaft im OI (published) deklariert und einen Pfad zum Bild angegeben. Doch diese Variable ist zum Zeitpunkt "Constructor TImageButton.Create(..)" nicht verfügbar und im Paint kann ich das Bitmap nicht laden, weil es sonst durch das ständige neu Laden flimmern würde. Wie müsste der Code richtig sein? Achja: Gebe ich im constructor einen Pfad (statisch) ein, klappt alles. Die Variable ist wirklich zu diesem Zeitpunkt leer. hier mein Code
Delphi-Quellcode:
Danke!
private
{ Private-Deklarationen } imgnormal: String; public { Public-Deklarationen } constructor Create(AOwner: TComponent); override; published { Published-Deklarationen } property ImageNormal: String read imgnormal write imgnormal; end; [..] constructor TImageButton.Create(AOwner: TComponent) begin inherited Create(AOwner); Glyph.loadFromFile(imgnormal); end; |
Re: Eigenschaften aus dem OI in "Create" benutzen
Schreibe eine Setter-Methode für ImageNormal:
Delphi-Quellcode:
und dort kannst Du das gewünschte erledigen.
property ImageNormal: String read imgnormal write SetImageNormal;
|
Re: Eigenschaften aus dem OI in "Create" benutzen
Oder pack den Code, der die persistenten Eigenschaften einer Komponente benötigt, in die AfterConstruction-Methode ;)
|
Re: Eigenschaften aus dem OI in "Create" benutzen
Hm... :gruebel:
Was ist eine "Setter-Methode"? |
Re: Eigenschaften aus dem OI in "Create" benutzen
Zitat:
|
Re: Eigenschaften aus dem OI in "Create" benutzen
Eine Methode die bei der Property hinterlegt werden kann, in welcher man die übergeben Werte prüfen und entscheiden kann, ob man sie in den privaten member übernimmt.
Delphi-Quellcode:
procedure SetImageNormal( Value: string);
begin if ... imgnormal := Value; end; |
Re: Eigenschaften aus dem OI in "Create" benutzen
Puh.. kannst du mir da mal bitte ein Beispiel zeigen.
Habe die Prozedur
Delphi-Quellcode:
Aber das hat auch nicht geholfen
protected
procedure AfterConstruction; override; [..] procedure TImageButton.AfterConstruction; begin inherited; ShowMessage('SD'); Glyph.LoadFromFile(imgnormal); end; |
Re: Eigenschaften aus dem OI in "Create" benutzen
So, hab's jetzt auch nochmal mit der Prozedur
Delphi-Quellcode:
probiert, aber ich weiß nicht, wann ich die Aufrufen muss. Der Wert "imgnormal" ist allerdings auch leer.
procedure TImageButton.SetImageNormal( Value: string);
begin imgnormal := Value; Glyph.LoadFromFile(imgnormal); end; |
Re: Eigenschaften aus dem OI in "Create" benutzen
Du hast das mißverstanden. diese Methode wird aufgerufen, wenn du im oi einen Pfad zuweist. dieser wird dann in der dfm gespeichert und wird beim Erzeugen der form dann herangezogen.
|
Re: Eigenschaften aus dem OI in "Create" benutzen
Okay,
klingt logisch! Und wie kann ich diese Methode bei dir Property hinterlegen oder geschieht dies automatisch und im Quelltext reicht einfach dieser Code
Delphi-Quellcode:
mit der Deklaration in "protected"
procedure TImageButton.SetImageNormal(Value: string);
begin imgnormal := Value; end;
Delphi-Quellcode:
procedure SetImageNormal(Value: String);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 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-2025 by Thomas Breitkreuz