![]() |
Komponente auf Frame ansprechen
Hallo Leute!
Ich habe ein eher ungewöhnliches Problem und ich kann mir gut vorstellen dass ich einfach nur einen Denkfehler gemacht habe: Es ist ein Frame über folgenden Code in meine Hauptunit eigebunden worden:
Delphi-Quellcode:
Soweit, sogut, nun möchte ich aber ein Label mit dem Namen Label1 auf dem Frame verändern. Ich habe verschiedene Möglichkeiten ausprobiert, habe aber jede Mal eine Fehlermeldung bekommen:
uses Unit2, Unit3;
var fr : array[0..3] of TFrame; procedure TForm1.FormCreate(Sender: TObject); begin fr[0] := Unit2.TFrame2.Create(self); fr[0].Parent := Form1; end;
Delphi-Quellcode:
fr[0].FindComponent('Label1').Caption := 'hi';
Zitat:
Delphi-Quellcode:
fr[0].FindComponent(Label1).Caption := 'hi';
Zitat:
Delphi-Quellcode:
fr[0].Label1.Caption := 'hi';
Zitat:
Ich hoffe da gibt es eine einfache Lösung, mit Forms bekomme ich die ganze sache sehr leicht hin, nur halt mit dem Frame nicht :-( mfG TheThrust |
Re: Komponente auf Frame ansprechen
Das Frame kann man doch auch über FormX. ansprechen oder nicht?
mfg Looper |
Re: Komponente auf Frame ansprechen
Woher soll der Compiler wissen, welche Komponenten sich auf dem Frame fr[0] befinden? fr ist ja ein Array von TFrame und nicht von TFrame2.
Delphi-Quellcode:
oder
TFrame2(fr[0]).Label1.Caption := 'hi';
Delphi-Quellcode:
(fr[0] as TFrame2).Label1.Caption := 'hi';
|
Re: Komponente auf Frame ansprechen
Zitat:
Delphi-Quellcode:
Weil ein TComponent kennt keine Eigenschaft Caption :wink:
TLabel(fr[0].FindComponent('Label1')).Caption := 'hi';
|
Re: Komponente auf Frame ansprechen
Oder besser einen Softcast:
Delphi-Quellcode:
(fr[0].FindComponent('Label1') as TLabel).Caption := 'hi';
|
Re: Komponente auf Frame ansprechen
Zitat:
|
Re: Komponente auf Frame ansprechen
Zitat:
Delphi-Quellcode:
-> Compiler beschwert sich nicht, Caption wird (zufällig!) auf "0" gesetzt. Da kommt nicht mal eine Exception :shock:
procedure TForm1.Button1Click(Sender: TObject);
begin Caption := IntToStr(TStrings(Button1).IndexOf('Not a Stringlist')); end;
Delphi-Quellcode:
-> Compiler bemerkt den Fehler und bricht mit der Meldung "Inkompatible Typen" ab.
procedure TForm1.Button1Click(Sender: TObject);
begin Caption := IntToStr((Button1 as TStrings).IndexOf('Not a Stringlist')); end; |
Re: Komponente auf Frame ansprechen
Eine andere Variante wäre der IS-Operator.
Gruss Thorsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 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