Avatar billede roz Nybegynder
30. maj 2005 - 17:08 Der er 4 kommentarer og
1 løsning

Løkke med objekter

Hvordan kan man lave en løkke der skal gøre således:

for i := 2
do button[i].width:= 1;

Altså køre igennem en masse objekter ved brug af en løkke eller noget i den stil?
Avatar billede martinlind Nybegynder
30. maj 2005 - 17:23 #1
Der er en property på formen der hedder components[] du kan også tilgå dine obj med navn som en tekststreng, det gør du ved at bruge :

TButton(FindComponent('Button'+IntToStr(I))).Width := 1;

/Martin
Avatar billede kroning Nybegynder
30. maj 2005 - 17:24 #2
Har du dine buttons i et array eller hvordan? Hvis de er i et array så er det jo bare at gøre som du selv skriver:

for i:=2 to 5 do
  button[i].width:=1;

Hvis dine buttons er på en form, og måske på flere paneler og andet så skal der en rekursiv procedure til at løbe dem igennem.
Avatar billede martinlind Nybegynder
30. maj 2005 - 17:32 #3
Nej bare sådan :

for I := 0 to antal do
  TButton(FindComponent('Button'+IntToStr(I))).Width := 1;
Avatar billede kroning Nybegynder
30. maj 2005 - 17:41 #4
Her er f.eks. en procedure som gennemløber alle TButtons og TLabels på din form eller andet og ændre Caption, det er uanset om din button eller label befinder sig direkte på formen eller på f.eks. et panel eller en groupbox.

procedure DoIt(WinC : TWinControl);
var
  i : integer;
begin
  for i:=0 to WinC.ControlCount-1 do
  begin
    if WinC.Controls[i] is TButton then
    (WinC.Controls[i] as TButton).Caption:='jowjow';
    if WinC.Controls[i] is TLabel then
    (WinC.Controls[i] as TLabel).Caption:='Så det';

    if WinC.Controls[i] is TWinControl then
    DoIt(WinC.Controls[i] as TWinControl); //rekursiv kald
  end;
end;

------------

begin
  DoIt(Self);
end;
Avatar billede roz Nybegynder
30. maj 2005 - 19:05 #5
Martins metode blev brugt :)Men tak til jer begge :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester