![]() |
Captions aller Komponenten in ein Memo-Feld schreiben
Hallo,
ich suche nach einer Möglichkeit alle Captions der Komponenten in meiner Form in ein Memo-Feld zu schreiben. Aber Irgendwie bekomme ich das nicht hin. Folgendes habe ich schon versucht:
Delphi-Quellcode:
Danke schon mal,
var
i: integer; PropInfo: PPropInfo; Component: TComponent; begin for i := 0 to ComponentCount - 1 do begin Component := Components[i]; PropInfo := GetPropInfo(Component.ClassInfo, 'Caption'); end; end; Primus |
SourceCode ungetestet, dürfte aber funktionieren:
Delphi-Quellcode:
Chris
var
i: integer; begin for i := 0 to Form1.ComponentCount do begin Memo1.Lines.Add( Form1.Components[i].Caption ); end; end; |
Leider funktioniert das nicht, da es kein Form1.Components[i].Caption gibt.
Gruss, Primus |
Dann eben so:
Delphi-Quellcode:
Wusste gerade nicht, ob Caption von TControl oder von TComponent kommt...
var
i: integer; begin for i:=0 to Form1.ComponentCount do begin if (Form1.Components[i] is TControl) then Memo1.Lines.Add( (Form1.Components[i] as TControl).Caption ); end; end; Chris |
Hallo Chris,
entweder stelle ich mich zu dusslig an, oder mein Delphi will mich ärgern. Auch der Code funktioniert nicht, Delphi meldet unbekannte Funktion Caption. Hast Du noch eine andere Idee? Ach so gesundes neues Jahr wünsche ich. Primus |
TControl hat zwar die Eigenschaft Caption, nur ist sie protected. Aus diesem Grund kann auch die RTTI nicht genutzt werden, weil diese nur für published Eigenschaften funktioniert (bei entsprechendem Compilerschalter).
Delphi-Quellcode:
type
TControlHack = class(TControl); ... var i: integer; begin for i := 0 to Form1.ComponentCount - 1 do if (Form1.Components[i] is TControl) then Memo1.Lines.Add(TControlHack(Form1.Components[i]).Caption); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 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