Hoe kan ik meerdere labels in 1 keer hernoemen. Ik heb dus een een aantal labels die "°C" en die wil ik dus allemaal omzetten naar "°F" wanneer ik de eenheid verander.
Je kunt gewoon een sekwentie schrijven:
Maar dat is natuurlijk heel wat typewerk.
Je kunt ook door de Controls property van de form loopen en kijken welk type de control is en de caption veranderen.
Deze code gaat de caption van alle labels op de form gaan veranderen.
Disclaimer: niet getest
code:
1
2
3
4
| Label1.Caption := 'bla'; Label2.Caption := 'bla'; ... Labeln.Caption := 'bla'; |
Maar dat is natuurlijk heel wat typewerk.
Je kunt ook door de Controls property van de form loopen en kijken welk type de control is en de caption veranderen.
code:
1
2
3
4
5
| for Indx := 0 to Self.ControlCount -1 do begin
if Controls[Indx] is TLabel then begin
TLabel(Controls[Indx]).Caption := 'bla';
end;
end; |
Deze code gaat de caption van alle labels op de form gaan veranderen.
Disclaimer: niet getest
https://fgheysels.github.io/
je kunt 't ook zo doen:Op dinsdag 02 juli 2002 09:05 schreef EvdB het volgende:
Hoe kan ik meerdere labels in 1 keer hernoemen. Ik heb dus een een aantal labels die "°C" en die wil ik dus allemaal omzetten naar "°F" wanneer ik de eenheid verander.
code:
1
2
3
4
5
6
7
| for k := 0 to 10 do
begin
with Form1.FindComponent('label' + inttostr(k)) as TLabel do
begin
caption := 'blaat';
end;
end; |
zo refereer je een component dus aan zijn naam...
Cogito Ergo Credo
Verwijderd
Other solution:
Keep in mind that self isn't always the form ...
MvG
Peter
code:
1
2
3
| for i := 0 to componentcount - 1 do
if components[ i ] = TLabel then
TLabel( components[ i ]).Caption := 'blub'; |
Keep in mind that self isn't always the form ...
MvG
Peter
Waarom reageer je in het Engels op een Nederlandse vraagOp dinsdag 02 juli 2002 10:40 schreef Norrit het volgende:
Other solution:
code:
1 2 3for i := 0 to componentcount - 1 do if components[ i ] = TLabel then TLabel( components[ i ]).Caption := 'blub';
Keep in mind that self isn't always the form ...
MvG
Peter
Als alles hier in het Nederlands is, dan is het toch duidelijk dat je hier in het Nederlands mag communiceren
Dit is een Nederlandstalig forum, dus wensen wij Nederlandstalige replies en topics.Op dinsdag 02 juli 2002 10:40 schreef Norrit het volgende:
Other solution:
code:
1 2 3for i := 0 to componentcount - 1 do if components[ i ] = TLabel then TLabel( components[ i ]).Caption := 'blub';
Keep in mind that self isn't always the form ...
MvG
Peter
Je moet ook geen groeten posten onder je post, zie de FAQ:
Wij tweakers doen elkaar permanent de groeten. Het is dus niet nodig om steeds ruimteverspillende "greetz [user]" of iets dergelijks onder je post te plakken. Als je perse zoiets wilt kun je daar je signature voor gebruiken (zie latere uitleg).
https://fgheysels.github.io/
deze code is mijns inziens incorrect!!!Op dinsdag 02 juli 2002 10:40 schreef Norrit het volgende:
Other solution:
code:
1 2 3for i := 0 to componentcount - 1 do if components[ i ] = TLabel then TLabel( components[ i ]).Caption := 'blub';
Keep in mind that self isn't always the form ...
MvG
Peter
"if components[ i ] = TLabel then" moet zijn
"if components[ i ] is TLabel then"
over self:
om vage dingen te voorkomen kun je beter altijd "formname.componentcount" gebruiken i.p.v. van self uit te gaan, dit laatste gebruik ik zelf wel, maar moet je alleen gebruiken als je snapt hoe dat allemaal werkt, dus zeker niet gebruiken in een antwoord op een forum-vraag!!!
Cogito Ergo Credo
Verwijderd
Als je nu niet wilt dat alle labels aangepast worden, moet je ze een tag geven. De TAG bij alle componenten wordt niet door delphi gebruikt, maar is er om dus zelf te gebruiken.
Bij die for regels kun je dan iets toevoegen van:
if TLabel( components[ i ]).Tag=1 then ...
Ik heb hier zo geen delphi op staan, kan geen voorbeeldje maken
success iig!
Bij die for regels kun je dan iets toevoegen van:
if TLabel( components[ i ]).Tag=1 then ...
Ik heb hier zo geen delphi op staan, kan geen voorbeeldje maken
success iig!
ff een extra uitleg van wat ReneLies zegt:Op dinsdag 02 juli 2002 10:47 schreef ReneLies het volgende:
Als je nu niet wilt dat alle labels aangepast worden, moet je ze een tag geven. De TAG bij alle componenten wordt niet door delphi gebruikt, maar is er om dus zelf te gebruiken.
Bij die for regels kun je dan iets toevoegen van:
if TLabel( components[ i ]).Tag=1 then ...
Ik heb hier zo geen delphi op staan, kan geen voorbeeldje maken
success iig!
- je set de component tag van elke label op een waarde en kunt nu i.p.v. de naam refereren aan deze tag.
dit is een goede oplossing indien je de componentne in een bepaalde volgorde hebt, maar vooral geschikt als je de Sender in een aanroepende procedure/functie gebruikt
dan zeg je bijv.
case TLAbel(sender).Tag of
1: doetietsmet1;
2: doetietsmet2;
end;
Cogito Ergo Credo
Pagina: 1