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
    über

    for (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.


Anmelden zum Antworten