Tool Button direkt ansprechen?
-
Hallo,
wie kann ich den Button direkt ansprechen?
in Moment mache ich das so
for (int i = 0; i < ToolBar2->ButtonCount; i++) { if (ToolBar2->Buttons[i]->Tag == Child->Tag) { ToolBar2->Buttons[i]->ImageIndex = (bModi) ? 1 : 0; break; } }
habe versucht es so zu machen
TMDIChild *Child = static_cast<TMDIChild*>(ActiveMDIChild); TToolButton* Button = reinterpret_cast<TToolButton*>(Child->Tag); static_cast<TToolButton*>(Button)->Caption = (bModi) ? "lala" : "hihi";
da ändert er mir das Caption vom Child
Erstellt ist er mit
TToolButton *pButton = new TToolButton(ToolBar2); ... TMDIChild* Child = static_cast<TMDIChild*>(ActiveMDIChild); pButton->Tag = reinterpret_cast<int>(Child);
Nun weiß ich nicht mehr weiter.
-
Warum kannst du denn nicht weiterhin
ToolBar2->Buttons[i]
benutzen?
Oder möchtest du, daß jeder MDIChild seinen eigenen ToolBar-Button hat und du dann vom aktiven MDIChild auf dessen ToolBar-Button zugreifen?
-
Hi,
Jeder MDIChild hat sein eigenen Button. Nur ich wollte wen ich den
TMDIChild *Child = static_cast<TMDIChild*>(ActiveMDIChild);
aufrufe, das ich den Button direkt ansprechen (wen es geht) und nicht
überfor (int i = 0; i < ToolBar2->ButtonCount; i++) { if (ToolBar2->Buttons[i]->Tag == Child->Tag) { ToolBar2->Buttons[i]->ImageIndex = (bModi) ? 1 : 0; break; } }
-
Dann trage doch jeweils im MDIChild->Tag den Index des ToolBar-Buttons ein, so daß du dann direkt mittels
TToolButton* pButton = ToolBar2->Buttons[ActiveMDIChild->Tag];
darauf zugreifen kannst.
P.S. Das Eintragen von Speicheradressen im Tag ist ungünstig (da Tag nur vom Typ int ist) und dies bei 64-bit Programmen dann zu Problemen führt.