![]() |
Componentenart als String -> erstellen der Componente
Hallo zusammen,
ich habe eine ComboBox, in denen ich die Componentenarten als String hinterlegt habe, wie TTabSheet oder TBitBtn. Nun möchte ich , wenn man z.B. TTabSheet auswählt in einer weiteren ComboBox alle verfügbaren Namen der TTabSheets auf einer Form dort eingefügt werden. Hier mein Code:
Delphi-Quellcode:
Gegen was muss ich in dem Code diesen Eintrag: "CB_Item_Art.Text" ersetzen, damit es klappt ?
procedure TForm1.CB_Item_ArtChange(Sender: TObject);
var I: Integer; StrList: TStringList; Form: TForm; begin Form := Form1; StrList := TStringList.Create(); For I := 0 to Form.ComponentCount - 1 do begin if Form.Components[I] is CB_Item_Art.Text then begin StrList.add(Form.Components[I].Name); end; end; CB_Item.Clear; CB_Item := StrList; end; Gruss Holger |
Re: Componentenart als String -> erstellen der Componente
Das geht IMHO nur über einen Umweg:
Delphi-Quellcode:
if AnsiLowerCase(Form.Components[I].ClassName) = AnsiLowerCase(CB_Item_Art.Text) then
|
Re: Componentenart als String -> erstellen der Componente
Perfekt,
das funktioniert. Gruss Holger |
Re: Componentenart als String -> erstellen der Componente
Moin,
Jeder Nachfahre von TObject hat eine Methode ClassNameIs, die Du zu dieser Prüfung nutzen kannst. Noch eine Anmerkung zu Deinem Quelltext: Du referenzierst hier in einer Methode eine Instanz des Methodeneigners. Dadurch ist es nicht mehr möglich, eine weitere Instanz zu erstellen, die wie gewünscht arbeitet. Außerdem ist an dieser Stelle die Zuweisung zu einer lokalen Variablen überflüssig.
Delphi-Quellcode:
procedure TForm1.CB_Item_ArtChange(Sender: TObject);
var I: Integer; StrList: TStringList; // Form: TForm; ueberfluessig begin //Form := Form1; StrList := TStringList.Create(); For I := 0 to {Form.}ComponentCount - 1 do begin if Components[I].ClassNameIs (CB_Item_Art.Text) then begin StrList.add({Form.}Components[I].Name); end; end; CB_Item.Clear; CB_Item := StrList; // das funktioniert nicht end; |
Re: Componentenart als String -> erstellen der Componente
Wenn ich das richtig überflogen habe, macht die Methode aber auch nichts Anderes als mein Vorschlag.
|
Re: Componentenart als String -> erstellen der Componente
Hi,
danke nochmals. Die Proceduren sind gleichwertig. Zitat:
Delphi-Quellcode:
CB_Item.List := StrList;
Zitat:
Danke euch beiden Gruss Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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