Komponenten suchen...und ändern
-
Hallo,
wie kann ich per Buttonpress eine spezielle Koponente auf meiner Form suchen, und dann ihre eigenschaft verändern?
dachte an sowas
for(int i=0;iyForm1->ComponentCount;i++) { if(Component[i]==<dynamic_cast><*TButton>()) //möchte Button disablen }wie geht das richtig?
-
Hallo,
dann eher so
TButton *button; for(int i=0;iyForm1->ComponentCount;++i) { button = dynamic_cast<TButton*>(Component[i]); if(button != 0) button->Enabled = false; // Button disabled }Vielleicht solltest du dir noch ein paar C++-Grundlagen Tutorials/Bücher durchlesen.
-
Anhand welcher Kriterien willst Du denn eine Komponente suchen? Nach dem Namen? Oder weißt Du schon welche
Komponente Du suchst (dann bräuchtest Du sie allerdings nicht zu suchen)?
Nach Namen kannst Du über FindComponent() suchen, nach Typen am besten so wie von Braunstein vorgeschlagen.Gruß,
Alexander
-
Braunstein schrieb:
Vielleicht solltest du dir noch ein paar C++-Grundlagen Tutorials/Bücher durchlesen.
hm..hat das was mit C++ Grundlagen zu tun?
Buttons etc sind doch bei Standard C++ nich dabei!
-
Ich meinte eher das hier
if(Component[i]==<dynamic_cast><*TButton>())Da ist der Syntax wohl völlig durcheinander und das ist Standard-C++. Welche Typen hier verwendet werden (TComponent, TButton) spielt hier keine Rolle.
-
also bei der suche nach namen ist ganz ok!
Problem ist nur, das wenn ein Button nciht exisitiert, wie kann ich darauf reagieren?
if(FindComponent("Button1")) Button1->Caption="Hallo"; else ShowMessage("Button1 nicht gefunden");geht ja nicht, weil er mir sagt, das Button1 nicht exisitiert, möchte programm trotzdem starten
-
Da war der Hinweis bzgl. Buch von Braunstein vielleicht doch nicht so verkehrt

So könnte das klappen:AnsiString componentName = "Button1"; TComponent* component = FindComponent(componentName); if (component != 0) { TButton* button = dynamic_cast<TButton*> (component); if (button != 0) button->Caption="Hallo"; else ShowMessage(componentName + " ist kein Button"); } else { ShowMessage(componentName + " nicht gefunden"); }
-
Schau dir bitt mal den Rückgabewert von FindComponent in der Hilfe an. Das ist kein bool sondern ein Pointer auf die von dir gewünschte Komponente oder Null.
-
funktioniert das auch mit dynamisch zur laufzeit hinzugefügten komponenten?
-
Hallo
ja, wenn du der dynamischen Komponente einen passenden Namen gibst, den du dann suchen läßt.
bis bald
akari
-
fein
