Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Alle Komponenten gleichen Typ's ansprechen


Delete - Mo 14.11.05 16:22
Titel: Alle Komponenten gleichen Typ's ansprechen
Hallo,
ich habe mal wieder ein Problem. Wie kann ich bei allen Komponenten gleichen Typ's zur Laufzeit eine Eigenschaft verändern.

Genauer: Ich habe einige TDBEdit Komponenten auf meinem Form und möchte zur Laufzeit überall den Text auf den gleichen Eintrag setzen. Bisher habe ich immer nach der Methode
DBEdit1.Text:='blabla';
DBEdit2.Text:='blabla'; gearbeitet. Es muss doch aber eine Möglichkeit geben mit der ich alle TDBEdits den gleichen Text zuweisen kann.

Danke schon mal


MSCH - Mo 14.11.05 16:26

schau dir mal die Funktionen ComponentCount() und den Operator IS an. Dort findest du das gesuchte.
grez
msch


Grendel - Mo 14.11.05 16:28

Ganz einfach!

Du durchläuft die "Components" des Formulars auf dem du die Komponenten liegen hast und prüfst auf den Typ. Ist der Typ der gewünschte einfach die entsprechende Eigenschaft manipulieren.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  i: Integer:
begin
  for i := 0 to self.ComponentCount - 1 do
  begin
    if (Components[i] is TDBEdit) then
      TDBEdit(Components[i]).Text := 'blablub'
  end;
end;


Bis neulich ...


chrisw - Mo 14.11.05 16:29


Delphi-Quelltext
1:
2:
for i := 0 to ControlCount -1 do  
  if Controls[i] is TDBEdit then (Controls[i] as TDBEdit).Text := 'blablabla';


Delete - Mo 14.11.05 16:40

Danke schön