Delphi-PRAXiS

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 Captions aller Komponenten in ein Memo-Feld schreiben (https://www.delphipraxis.net/1912-captions-aller-komponenten-ein-memo-feld-schreiben.html)

Primus 30. Dez 2002 12:25


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:
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;
Danke schon mal,

Primus

CalganX 30. Dez 2002 12:28

SourceCode ungetestet, dürfte aber funktionieren:
Delphi-Quellcode:
var
  i: integer;
begin
  for i := 0 to Form1.ComponentCount do begin
    Memo1.Lines.Add( Form1.Components[i].Caption );
  end;
end;
Chris

Primus 30. Dez 2002 12:34

Leider funktioniert das nicht, da es kein Form1.Components[i].Caption gibt.

Gruss,

Primus

CalganX 30. Dez 2002 12:50

Dann eben so:

Delphi-Quellcode:
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;
Wusste gerade nicht, ob Caption von TControl oder von TComponent kommt...

Chris

Primus 1. Jan 2003 15:27

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

jbg 1. Jan 2003 15:38

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