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 komponenten eines typs ansprechen? (https://www.delphipraxis.net/37606-alle-komponenten-eines-typs-ansprechen.html)

pirechner 7. Jan 2005 20:52


Alle komponenten eines typs ansprechen?
 
frohes neues!
ist es möglich alle komponenten eines typs die sich auf meinem formular befinden, anzusprechen und z.b. die textfarbe bei allen labels auf die gleiche farbe zu setzen?

natürlich ohne, dass ich weiß wie die label heißen und ihre namen selber eintippe?

Nillen 7. Jan 2005 20:55

Re: Alle komponenten eines typs ansprechen?
 
Spricht da die Faulheit ?!? ; )
Ich weiss ja nicht wieviele Komponenten du in deinem Prog hast aber es sollte doch möglich sein eine OnCreate
Prozi zu basteln die alle Labels auf eine einheitliche Farbe setzt oder ?

Ich wüsste keine möglichkeit wie man alle Komponenten ansprechen kann :(

pirechner 7. Jan 2005 21:03

Re: Alle komponenten eines typs ansprechen?
 
das mit den antworten geht hier immer echt schnell!
ich hab die label leider noch alle selber eingefügt per hand :pale: .
aber es sind zu viele um alles einzutippen und dann wollte ich es etwas eleganter machen.

SebE 7. Jan 2005 21:08

Re: Alle komponenten eines typs ansprechen?
 
Hi - Weis nicht, ob das dein Problem löst:

Code:
var
  i: Byte;
begin
  for i:=0 to Form1.ComponentCount-1 do
  if Form1.Components[i] is TLabel
  then with Form1.Components[i] as TLabel do
  Font.Color:=clRed
end;

jensw_2000 7. Jan 2005 21:10

Re: Alle komponenten eines typs ansprechen?
 
So kannst du das machen ...

Delphi-Quellcode:
procedure TForm1.Irgendwas;
VAR
  I: Integer;
begin

FOR I := 0 TO form1.ControlCount - 1 DO  
BEGIN
  IF (form1.Components[i] IS TLabel)THEN
  With (form1.Components[i] as TLabel) do
  begin
    Caption:='Label1234';
    color:=clRed;
  end; // with

  IF (form1.Components[i] IS TButton)THEN
  With (form1.Components[i] as TButton) do
  begin
    Caption:='Button 1234';
  end; // with


END;   // for
end;

:hi:

jensw_2000 7. Jan 2005 21:11

Re: Alle komponenten eines typs ansprechen?
 
Mist, wieder zu langsam ... :roll:

Robert_G 7. Jan 2005 21:14

Re: Alle komponenten eines typs ansprechen?
 
Zitat:

Zitat von pirechner
das mit den antworten geht hier immer echt schnell!
ich hab die label leider noch alle selber eingefügt per hand :pale: .
aber es sind zu viele um alles einzutippen und dann wollte ich es etwas eleganter machen.

Wie wär's wenn du sie alle markierst und dann im OI das Font (und damit die Font farbe) änderst? :mrgreen:

Wenn es per Code gehen soll ist Components als Array of Component dein Freund.
Delphi-Quellcode:
  for i := 0 to pred(ComponentCount) do
    if Components(i) is TLabel then
      with Components(i) as TLabel do
        TLabel(Components(i)).Font.Color := clIrgendWas;
oder in D2005:
Delphi-Quellcode:
var
  Component :TComponent;
begin
  ...
  for Component in Components do
    if Component is TLabel then
      TLabel(Component).Font.Color := clIrgendWas;
  ...
war auch zu langsam, aber ich bin auch im Urlaub. Da darf man langsam sein :P

pirechner 7. Jan 2005 21:33

Re: Alle komponenten eines typs ansprechen?
 
so jetzt funzt es!
vielen dank für eure schnellen und guten antworten.
aber erst musste ich self.controlcount schreiben da sonst zugriffsverletzungen oder listenüberschreitungen auftraten. hab ich da was falsch verstanden?

Robert_G 7. Jan 2005 21:40

Re: Alle komponenten eines typs ansprechen?
 
Zitat:

Zitat von pirechner
aber erst musste ich self.controlcount schreiben da sonst zugriffsverletzungen oder listenüberschreitungen auftraten. hab ich da was falsch verstanden?

Nein hast du nicht. Aber schaue mal links und rechts über die Taste [Strg]. Da findest du [Shift] -> macht Text gleich leserlicher. :mrgreen:

@Topic
  • Jens verwendete Form1.ControlCount lief aber durch das Array Components.
  • Zweitens heißt dein Formular wohl nicht Form1.
    Form1 hat 5 Controls, dein Form nur 3 -> beim durchlaufen von Control 4 knallt's dann natürlich ;)
  • Drittens sollte man diese ollen globalen Variablen des Form Designers nie im Code benutzen. ;)
Wenn ich eine Weile nicht programmiert habe, werde ich pingelig. :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 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