Zum Inhalt springen

Labels / buttons in ein Array Packen?


errox

Empfohlene Beiträge

Hallo.

Ich hab in meiner Form ca. 10 Labels. Alle mit dem Namen: label1, label2, etc.

Ich möchte gerne mit einem Klick allen einen Bestimmten namen geben. ( Quelle aus einer Datei )

Normalerweise müsste ist ja immer das tun:

label1->Text = ....

etc.

Wie kann das in eine Schleife packen? Es wird ja immer die Selbe Aktion durchgeführt.

Ich hab mir das so vorgestellt:


for(int i = 0; i<11;++i)

{

labeli = ... ;

}

Danke für antworten

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dafür gibt es nur 2 Alternativen:

1) Entweder Du gehst in der Schleife über das übergeordnete Control und lässt Dir alle darin eingebetteten Controls geben und prüfst ob die Control-Klasse Label-Klasse ist. Dann kannst Du das Control mit einem explizitem Typecast in Label casten und dann den Text zuweisen.

2) Du initialisierst zu Anfang ein Array mit Deinen Labels und läufst das durch.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Variante 1) dynmisch über Controls. Voraussetzung: die Labels sind alle direkt im Form und nicht in einem untergeordneten Panel, da das nicht rekursiv ist. Wenn die Labels in einem untergeordneten Control sind, musst Du dessen Controls benutzen.

Aber Vorsicht in den Compiler-Settings muss RTTI (RunTimeTypeInformation) angeschaltet sein. Außerdem ist in c++ ein dynamic_cast zur instance-of-Ermittlung kein guter Code.


for ( int i=0, n=Controls->Count; i<n; ++i )

    if ( Label* label = dynamic_cast<Label*>(Controls[i]))

		label->Text ...

Vielleicht gibt es ja in C++.NET direkt eine Implementierung dafür. Variante 2) der ganz pragmatische Weg

Label* labels[] = {&label1, &label2, &label3, ...};

for ( int i=0, n=sizeof(labels)/sizeof(Label*);  i<n;  ++i )

	labels[i]->Text ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Tut mir leid, dass ich erst so Spät antworte, aber ich war im Urlaub.


Label* labels[] = {&label1, &label2, &label3, ...};

for ( int i=0, n=sizeof(labels)/sizeof(Label*);  i<n;  ++i )

	labels[i]->Text ...

Der Hier gefällt mir nicht, weil ich jedes Label selbst eingeben muss ( label1,label2,label3, ... )

Der Andere Hingegen sieht besser aus. Aber dafür kompliziert

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...