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 Alle Captions ändern (https://www.delphipraxis.net/148573-alle-captions-aendern.html)

Dragon27 4. Mär 2010 12:55


Alle Captions ändern
 
Hallo,

hänge im Moment an einem Problem und weiß auch nicht ob es überhaupt lösbar ist.

Ich würde gerne bei allen Komponenten, die die Property Caption haben, diese ändern.
Ist das möglich? Zumal ich ja keinen Typ (TLabel) angeben will...

Danke für die Hilfe!

himitsu 4. Mär 2010 12:59

Re: Alle Captions ändern
 
http://www.delphipraxis.net/internal...hlight=caption

Bernhard Geyer 4. Mär 2010 13:07

Re: Alle Captions ändern
 
Nimm die Funktonen aus TypeInfo.pas und gehe über die RTTI.

blablab 4. Mär 2010 13:44

Re: Alle Captions ändern
 
du könntest dich wahrscheinlich auch rekursiv durch alle Components durchhangeln, also in etwa:

Delphi-Quellcode:
procedure bla(c: TComponent)
   for i := 0 to c.ComponentsCount-1 do begin
      bla(c.Components[i])
      try
         (c.Components[i] as TControl).Caption := str
      except
      end
   end
end

Teekeks 4. Mär 2010 13:49

Re: Alle Captions ändern
 
wobei Rekursion jetzt nicht so die beste Lösung währe...

blablab 4. Mär 2010 13:53

Re: Alle Captions ändern
 
wahrum? Wenn ich fragen darf...

DeddyH 4. Mär 2010 13:54

Re: Alle Captions ändern
 
Wozu das Array rekursiv durchlaufen? Einmal reicht doch.

[edit] Achso, wegen der Unterkomponenten. [/edit]

blablab 4. Mär 2010 13:58

Re: Alle Captions ändern
 
Ja genau. Beispiel:

Wenn man zb auf einer Form ein Panel und ein Label in diesem Panel hat, dann hat die Form nur die Komponente Panel und das Panel die Komponente Label.
Wenn man also nur die Komponenten von der Form durchgeht, erreicht man nicht das Label.

dominikkv 4. Mär 2010 14:21

Re: Alle Captions ändern
 
Zitat:

Zitat von blablab
Ja genau. Beispiel:

Wenn man zb auf einer Form ein Panel und ein Label in diesem Panel hat, dann hat die Form nur die Komponente Panel und das Panel die Komponente Label.
Wenn man also nur die Komponenten von der Form durchgeht, erreicht man nicht das Label.

Probiers mal aus :wink:

Blup 4. Mär 2010 14:37

Re: Alle Captions ändern
 
Nicht Controls und Components verwechseln.
Owner aller Komponenten ist normalerweise die Form.
Ausnahme wären z.B. TRadioGroup, die eigene Steuerelemente verwalted.

blablab 4. Mär 2010 14:58

Re: Alle Captions ändern
 
Aber echt, sorry! :oops:
Ich hab da wohl was verwechelt.
Es reicht also nur die Components der Form durchzugehen...

Oder folgendes:

Delphi-Quellcode:
procedure bla(c: TControl)
   for i := 0 to c.ControlCount-1 do begin
      bla(c.Controls[i])
      try
         c.Controls[i].Caption := str
      except
      end
   end
end
weil man benötigt ja eigentlich nur die Controls und nicht die Components...

(der code ist nur bsp-code)

DeddyH 4. Mär 2010 15:04

Re: Alle Captions ändern
 
Und auch das wird ohne Hack nicht gehen. Schau Dir mal den verlinkten Thread von himitsu an.

blablab 4. Mär 2010 15:28

Re: Alle Captions ändern
 
Aber mit hack... (hab ja dazugeschrieben dass es nur beispielcode ist)

Dragon27 sollte sich auf jeden fall den Beitrag von himitsu angucken. Und wenn er sich duch die Komponenten durchhangeln muss, dann kann ers ja so machen wie ichs geschrieben hab...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz