Zugriff auf dynamische erzeugte Frames



  • Hi,

    ich hab folgendes Problem:
    Im Formular möchte ich verschiedene Frames je nach Auswahl aus dem Mainmenu zum Vorschein bringen:

    void __fastcall TForm1::NeuesVerbClick(TObject *Sender)
    {
      if ( verb_flag == 1 )
        {
          Hier soll jetzt der Zugriff auf den schon vorhandenen Frame erfolgen
          und ihn in den Vordergrund bringen.     
    
          return;
        }
    
      TVerb_Neu *Verb_Neu = new TVerb_Neu(Application);
    
      verb_flag = 1;
      Verb_Neu->Parent = Form1;
    }
    

    Das Problem ist, das wenn man den Menupunkt zum zweiten Mal aufruft und vorher schon einen anderen, der andere Frame ueber dem gewollten liegt und der erstere sich nicht mehr ansprechen lassen will.

    Bei Form1->Components findet sich leider kein Frame.

    Hab auch mit FindChildControl ein bissl rumexperimentiert, das fuehrte aber zu keinem Ergebnis.

    Hoffe jemand kann mir helfen.

    Danke im Voraus.



  • Welches Verhalten hast Du denn erwartet?



  • Naja, ich möchte, das beim wiederholten Aufruf des Menupunktes der bei ersten Mal erstellte Frame wieder in den Vordergrund geholt wird.



  • Äh, es geht also darum, dass Du verschiedene Menüpunkte hast. Jeder Menüpunkt ist mit einem Frame verbunden. Also soll beim ersten Click auf den Menüpunkt der Frame erzeugt und dargestellt werden, und beim zweiten Click der Frame einfach nur wieder in den Vordergrund geholt werden. Es soll keine weitere Instanz desselben Frames erzeugt werden. Habe ich das so richtig verstanden?



  • Exakt. Das Problem ist, dass ich beim zweiten Mal an den Frame nicht mehr rankomme um ihn in den Vordergrund zu holen.



  • Dann speicher doch den Zeiger auf das TFrame in der Tag-Eigenschaft des Menüitems.

    // in der OnClick des Menupunktes (Menupunkt1 genannt):

    if (Menupunkt1->Tag = 0)
    {
    	// Frame erzeugen
    	Menupunkt1->Tag = (int) Verb_Neu;
    }
    else
    {
    	TVerb_Neu* tempVerb_Neu = (TVerb_Neu*) Menupunkt1->Tab;
    	tempVerb_Neu->BringToFront;
    }
    


  • Vielen, vielen Dank. Das hat mich weitergebracht und es funzt jetzt auch wie es soll.


Anmelden zum Antworten