Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Zufällige Komponente auswählen


20:30 - Sa 14.07.12 11:28
Titel: Zufällige Komponente auswählen
Ich wollte fragen, ob man eine zufällige Komponente auswählen kann.

z.B.:

Ich habe 25 TImages
21 davon sollen sind benannt: I_1, I_2, I_3, etc.
Die restlichen Vier sollen nicht beeinflusst werden, heißen auch jeweils anders.
Jedes Mal soll ein TImage der 21 zufällig ausgesucht werden und mit einem anderem Bild (Picture) belegt werden.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var i:integer;

begin
Randomize;
i := Random(21) + 1;
I_[i].Picture := 'C:\...\...'
end;


jaenicke - Sa 14.07.12 11:39

Du kannst die betreffenden Komponenten in ein Array packen und das dann benutzen wie du gerade geschrieben hast.

Alternativ kannst du FindComponent benutzen um ein Image über den Namen zu finden.


IhopeonlyReader - Sa 14.07.12 23:20

wie jaenicke sagt, kannst du ein Array anlegen.. beispiel


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var ImageArray: Array[1..21of TImage; 
C: Integer;
Kom: TComponent;
begin
For C:=1 to Components-1 do
 begin
 if Kom[C]=TImage then
 begin
 (if not(Kom[C] as TImage).Name = 'nicht l_1' then)
 ImageArray[C] := Kom[C];
 end;
 end;
end;


P.S := Könnten Fehler drin sein, bin mir nicht mehr sicher, wie genau das mit dem Massenkomponentenabfragen ging.. aber vom prinzip her