>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<
Een form heeft (net als andere container-controls) een property Controls. Dit is een array die een verwijzing bevat naar alle controls op die form.
Als je daar door looped, kun je dus uw labels te pakken krijgen:
Als je daar door looped, kun je dus uw labels te pakken krijgen:
code:
1
2
3
4
5
| for Indx := 0 to Form1.ControlCount - 1 do begin
if Form1.Controls[Indx] is TLabel then begin
TLabel(Form1.Controls[Indx]).Caption := 'bla';
end;
end; |
https://fgheysels.github.io/
Of je maakt een array.
code:
1
2
3
4
5
6
7
8
9
10
11
12
| var Labels:array[1..5] of TLabel;
begin
Labels[1]:=Label1;
Label2[2]:=Label2;
...
Labels[5]:=Label5;
for i:=1 to 5 do begin
Labels[i].Caption:='Hoi';
end;
end; |
Siditamentis astuentis pactum.
Kan je met deze constructie niet krijgen, dat er toevallig een niet-label control tussendoorkomt en je dus in je label captions iets van {1,2,5,7} kan krijgen?Op dinsdag 23 april 2002 09:24 schreef whoami het volgende:
Een form heeft (net als andere container-controls) een property Controls. Dit is een array die een verwijzing bevat naar alle controls op die form.
Als je daar door looped, kun je dus uw labels te pakken krijgen:
code:
1 2 3 4 5for Indx := 0 to Form1.ControlCount - 1 do begin if Form1.Controls[Indx] is TLabel then begin TLabel(Form1.Controls[Indx]).Caption := 'bla'; end; end;
ik wilde dat ik eens een coole sig. kon bedenken.
Ja dat kan (daarom staat er ook een if in), maar dan gebruik je maar een aparte teller.Op dinsdag 23 april 2002 13:18 schreef nulkelvin het volgende:
Kan je met deze constructie niet krijgen, dat er toevallig een niet-label control tussendoorkomt en je dus in je label captions iets van {1,2,5,7} kan krijgen?
https://fgheysels.github.io/
Volgens mij kan het zo wel, sorry is niet getest........Op dinsdag 23 april 2002 09:17 schreef Hu9o het volgende:
Ik heb 4 labels, en ik wil die in een loop op de volgende manier gebruiken.
code:
1 2 3 4 5 6 7 8 9procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i:=1 to 4 do begin (Label+IntToStr(i)).Caption:=IntToStr(i); end; end;
Dit geeft een foutmelding, omdat dit Label+IntToStr(i) niet goed gekeurd wordt.
volgens mij zou het zo moeten kunnen
Weet iemand hoe dit wel wil??
code:
1
2
3
4
5
6
7
8
9
| procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to 4 do
begin
(Findcomponent('Label'+IntToStr(i))as TLabel).Caption:=IntToStr(i);
end;
end; |
edit:
bron toegevoegd
bron toegevoegd
[edit2]getest en werkt
bron: http://www.delphi-treff.de/content/tutorials/einsteigerkurs/index.php4?print=1&kat=6
ik wilde dat ik eens een coole sig. kon bedenken.
Verwijderd
Waarom zo'n omslachtige methode? Waarom zelf nog een array maken terwijl deze array al tot je beschikking staat (Controls[Index])?Op dinsdag 23 april 2002 09:32 schreef Varienaja het volgende:
Of je maakt een array.
code:
1 2 3 4 5 6 7 8 9 10 11 12var Labels:array[1..5] of TLabel; begin Labels[1]:=Label1; Label2[2]:=Label2; ... Labels[5]:=Label5; for i:=1 to 5 do begin Labels[i].Caption:='Hoi'; end; end;
Omdat daar, zoals al eerder genoemd is, ook andere componenten in staan, waardoor je nummering in de war kan lopen. Wat je natuurlijk wel kunt doen, is je labels runtime aanmaken. Dan kun je ze wel makkelijk in een array plaatsen.Op dinsdag 23 april 2002 15:11 schreef hvdberg het volgende:
[..]
Waarom zo'n omslachtige methode? Waarom zelf nog een array maken terwijl deze array al tot je beschikking staat (Controls[Index])?
- This line is intentionally left blank -
Niet als je een apart tellertje gebruikt...Op dinsdag 23 april 2002 15:15 schreef Knutselsmurf het volgende:
[..]
Omdat daar, zoals al eerder genoemd is, ook andere componenten in staan, waardoor je nummering in de war kan lopen. Wat je natuurlijk wel kunt doen, is je labels runtime aanmaken. Dan kun je ze wel makkelijk in een array plaatsen.
https://fgheysels.github.io/
ben ik nou suf, of heb ik geen oplossing gegeven, die goed werkt?
ik wilde dat ik eens een coole sig. kon bedenken.
Nee, je bent niet suf, en die oplossing werkt, maar in mijn ogen is dat geen fraaie (en snelle) oplossing. Daarom worden er andere oplossingen gegeven. Als namelijk het ontwerp iets beter doordacht zou zijn, zou deze vraag, en jouw oplossing, niet nodig zijn geweest. De andere oplossingen die hier genoemd zijn zijn op dat ontwerp gericht.Op dinsdag 23 april 2002 15:28 schreef nulkelvin het volgende:
ben ik nou suf, of heb ik geen oplossing gegeven, die goed werkt?
- This line is intentionally left blank -
Die FindComponent oplossing vind ik anders niet zo mis. Maar achter de schermen zal ze ook wel door de Controls array loopen en zal ze dus ook trager zijn dan de mijne, aangezien ik maar 1x door die array loop, en jij x keer.
https://fgheysels.github.io/
Ok voldoende antwoord lijkt me zo.
Iedereen bedankt voor z'n bijdrage.
Iedereen bedankt voor z'n bijdrage.
>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<
Pagina: 1