I 100 haben, um Gegenstand von TEdit
(zum Beispiel)Wie eine Schleife verwenden, um Text aus TEdit eins nach dem anderen
Edit1, Edit2, Edit3 ... Edit100
Wie eine Schleife benutzen Sie Text von ihnen eins nach dem anderen?
I 100 haben, um Gegenstand von TEdit
(zum Beispiel)Wie eine Schleife verwenden, um Text aus TEdit eins nach dem anderen
Edit1, Edit2, Edit3 ... Edit100
Wie eine Schleife benutzen Sie Text von ihnen eins nach dem anderen?
So etwas sollte funktionieren:
for (int i = 0; i < form->ControlCount; ++i)
{
TEdit *edit = dynamic_cast<TEdit *>(form->Controls[i]);
if (edit)
ShowMessage(edit->Text);
}
Der Code basiert auf der dynamic_cast
Umwandlung: Wenn die Umwandlung fehlschlägt es einen Null-Zeiger zurückgibt und Sie können die aktuelle Steuer überspringen.
Dies würde nur wie gezeigt funktionieren, wenn Die 'TEdit'-Steuerelemente sind * direkte * Kinder des Formulars selbst und nicht irgendein anderer 'Eltern'-Container auf dem Formular, wie ein Panel, Frame, TabSheet, etc. Und auch das durchläuft ALLE verfügbaren' TEdit'-Steuerelemente, aber Was ist, wenn das OP nur an einer Untergruppe von ihnen interessiert ist? Und auch das berücksichtigt nur die Erstellungsreihenfolge, nicht die Reihenfolge. –
@RemyLebeau Nun, es ist wahr, aber das Snippet ist nur ein "Proof of Concept". Es kann mit Rekursion erweitert werden, um verschachtelte Steuerelemente zu handhaben (das Filtern der Ergebnisse ist ziemlich einfach). In der Tat könnte die Baumdurchquerungsreihenfolge ein Problem sein. – manlio
Ich würde vorschlagen, ein Array für die Verwendung, zB:
class TForm1 : public TForm
{
__published:
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
...
private:
TEdit* edits[100];
...
public:
__fastcall TForm1(TComponent *Owner);
...
};
__fastcall TForm1::TForm1(TComponent *Owner)
{
for(int i = 0; i < 100; ++i)
{
edits[i] = static_cast<TEdit*>(FindComponent("Edit"+IntToStr(i+1)));
}
}
...
for(int i = 0; i < 100; ++i)
{
// use edits[i]->Text as needed...
}
TEdit *tmpEdit = NULL ;
vector <AnsiString> tmpStr ;
for(int i = 0; i < 100; ++i)
{
tmpEdit = static_cast<TEdit*>(FindComponent("Edit"+IntToStr(i+1)));
tmpStr.push_back(tmpEdit->Text) ;
}
Sie eine bessere Antwort bekommen würde, wenn Sie einen Code zeigen, die Ihnen helfen zu müssen. Die StackOverflow-Community runzelt sich über Fragen, die wie Hausaufgaben aussehen, ohne dass der ursprüngliche Poster (in diesem Fall) anfängt. – callisto
Wie speichern Sie diese "TEdit" -Objekte in z. ein Array, eine AWL-Liste? Welche Methoden haben Sie für das TEdit-Objekt, das Sie aufrufen möchten? Was möchten Sie mit den Daten machen? – LordWilmore
Werfen Sie einen Blick auf 'FindComponentl (Komponentenname)' und verwenden Sie dann das mit '" Edit1 "', '" Edit2 "' usw. Die Namen können in einer Schleife generiert werden. –