SetFocus auf MDIChilds oder auf das Hauptformular



  • Hallo Community,

    Ich nutze Codegear RAD Studio 2009 und habe folgendes Problem.
    Ich habe ein HauptFormular und unter diesem erstelle ich MDIChilds.
    diese Sind dann per ESC-Taste zu beenden. hat man mehere offen wird per ESC-Taste eins nach dem anderen geschlossen.
    Nun habe ich neu hinzugefügt in das Hauptformular ein Panel auf dem ein Memo- und ein Editfeld sitzn. Hier kann der Benutzer Notizen verfassen.
    Nachdem er eine Notitz abgesand hat oder das Panel minimiert (Ich setz Panel->Height = 10)
    soll der Fokus wieder auf die geöffneten Fenster springen, damit dort wieder per ESC beendet werden kann.

    Ich hab schon viel probiert, jedoch nichts führt zu dem gewünschen erfolg.

    try
      {
    	PanelLogbuch->SetFocus();
    	PanelLogbuch->Parent->BringToFront();
    	PanelLogbuch->Parent->SetFocus();
    	//PanelLogbuch->Parent->Repaint();
    	MainForm->BringToFront();
    	MainForm->SetFocus();
    	if (MDIChildCount)
    	{
    	  MainForm->MDIChildren[0]->BringToFront();
    	  MainForm->MDIChildren[0]->SetFocus();
    	}
    
    //	for (int i = 0 ; i < MDIChildCount; i++)
    //	{
    //	  if (MainForm->MDIChildren[i]->CanFocus())
    //	  {
    //		Sleep(500);
    //		MainForm->MDIChildren[i]->SetFocus();
    //	  }
    //	}
    
      }
      catch(...) {}
    

    Mit

    MainForm->MDIChildren[0]->BringToFront();
    MainForm->MDIChildren[0]->SetFocus();
    

    Hatte ich nur Erfolg als ich durchgetraced habe, also Zeile für Zeile..
    ansonsten steht der Focus immernoch auf dem Editfeld.

    Kann mir jemand helfen ?



  • Hast du auf dem MDIChild auch Controls wie Buttons oder Edits? Dann setz doch den Focus mal explizit auf eines von denen.



  • Ja war ne gute Idee von dir hat mich bissl weitergebracht xD
    aber ich hatte dann auch MDIChilds wo keine Elemente drauf waren sondern nur ein bild angezeigt wurde.

    Ich habs nun insofern so gelöst. Mein Problem war ja das man die MDIChildfenster per ESC schliessen kann. und mit dem Focus auf dem Edit ging das nicht mehr. Nun hab ich dem Edit wo der Focus dann drauf liegt
    im OnKeyPress für die ESC-Taste was zugewiesen,
    das prüft ob MDIFenster geöffnet sind und es anschließend schließt.

    eigentlich ganz simpl -.-


Anmelden zum Antworten