[Delphi] Meerdere label1 captions hernoemen?

Pagina: 1
Acties:

  • EvdB
  • Registratie: November 2001
  • Laatst online: 31-08 20:18
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.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:16
Je kunt gewoon een sekwentie schrijven:
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/


  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

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.
je kunt 't ook zo doen:
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:
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

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Op dinsdag 02 juli 2002 10:40 schreef Norrit het volgende:
Other solution:
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 vraag :?

Als alles hier in het Nederlands is, dan is het toch duidelijk dat je hier in het Nederlands mag communiceren :X

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:16
Op dinsdag 02 juli 2002 10:40 schreef Norrit het volgende:
Other solution:
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
Dit is een Nederlandstalig forum, dus wensen wij Nederlandstalige replies en topics.

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/


  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Op dinsdag 02 juli 2002 10:40 schreef Norrit het volgende:
Other solution:
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
deze code is mijns inziens incorrect!!!

"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!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

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!
ff een extra uitleg van wat ReneLies zegt:
- 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