![]() |
Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
Guten Morgen,
ich habe ein ganz banales Problem: Wenn ich bei einer PageControl die ActivePage setze und gleich danach den Focus auf ein Control setze, welches auf dem soeben aktivierten TabSheet sitzt, dann erhalte ich die Fehlermeldung: "Deaktiviertes oder unsichtbares Fenster kann den Fokus nicht erhalten"
Delphi-Quellcode:
Mir ist klar, was diese Fehlermeldung bedeutet. Mir ist nicht klar, an welcher Stelle ich den Focus setzen soll/kann.
procedure TForm1.Button1Click(Sender: TObject);
begin PageControl1.ActivePage := TabSheet2; Edit2.SetFocus; // Control auf TabSheet2 end; Ich habe es schon im OnChange()-Ereignis der PageControl versucht, aber dieses wird beim Zuweisen von ActivePage nicht aufgerufen. Danke für jede Hilfe! Hans. |
AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
Bei meinem kleinen Testprogramm funktioniert dein Code, ich vermute mal, dass der Fehler wo anders zu finden ist.
|
AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
Versuche doch einmal, statt ActivePage den entsprechenden TabIndex zuzuweisen.
OnChange reagiert bei den allermeisten Komponenten ausschließlich auf Benutzereingaben und nicht auf vom Programm selbst hervorgerufene Änderungen. Nachdem ich den Post von Baumina gelesen habe, ist mir noch diese Frage zu deinem Problem eingefallen: Befindet sich dieses PageControl vielleicht auf einem zum Zeitpunkt der Zuweisung nicht sichtbaren Tabsheet eines übergeordneten PageControl oder ist es aus irgendwelchen anderen Gründen nicht sichtbar (unsichtbarer Frame etc.)? |
AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
Setze den Fokus auf das TabSheet
Delphi-Quellcode:
Dann übernimmt die Tabulatorreihenfolge des TabSheets, welches Control den Focus erhält.
TabSheet2.SetFocus;
Deine Fehlermeldung lässt aber vermuten, dass dein EDIT2 überhaupt nicht auf dem TabSheet2 liegt, daher die Fehlermeldung, ggf. unsichtbar? Grüße Mikhal |
AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
Wie wäre es denn mit dem
Delphi-Quellcode:
-Ereignis deines
OnShow
Delphi-Quellcode:
?
TTabSheet
|
AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
Vielen Dank schon mal!
Ich habe noch etwas rumprobiert: Da ich das Projekt von Delphi 7 nach XE3 übernommen habe, habe ich mich über die Fehlermeldung gewundert, welche vorher nicht da war. Und wirklich, in Delphi 7 funktionierte der gleiche Code noch ohne Meldung. Außerdem kommt die Fehlermeldung nur, wenn das Control noch zusätzlich auf einem Panel liegt. Wird das Control direkt auf das TabSheet gelegt, kommt es zu keiner Fehlermeldung. Irgendwie ziemlich rätselhaft. Ich versuche noch weiter! |
AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
@Der schöne Günther:
Das mit dem OnShow() habe ich auch schon ausprobiert. Hat nur den Haken, dass dann die Fehlermeldung evtl. schon beim Öffnen des Formulars kommt, wenn dieses TabSheet in der DFM als aktives eingetragen ist :( |
AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
Kommando zurück:
Ich hatte noch ein Fehler im Code :oops: Als ich diesen korrigiert habe, hat es funktioniert! Sorry und danke fürs Diskutieren! Hans. |
AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
Manchmal kann es nicht schagen die Lösungen/Gründe zu nennen.
Man stelle sich mal vor noch jemand hätte das Selbe, bzw. ein ähnliches Problem, findet dann den Thread über die Sufu und freut sich, weil keine Lösung da steht. |
AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
Joop, da hast du Recht:
In meinem kleinen Beispiel-Programm habe ich wirklich auf ein deaktivertes Control fokusiert (sprich: dieses lag nicht auf dem soeben aktivierten Tabsheet :oops:) Wie es immer so ist, wenn man mal schnell einen Prototyp zusammenklickt .... Leider ist im eigentlichen Programm die Konstellation komplexer und der Fehler tritt dort immer noch auf. Hier gehe ich mittels eines Automatismus über alle Controls und suche mir das passende zum Fokusieren aus. ... und da fällt das Programm dann auf die Schnauze! Ich dachte ich könnte dies mit einem kleinen Testprogramm nachstellen, muss jetzt aber leider doch durch den Orginal-Code durch :( Sollte ich noch was Erwähnenswertes herausfinden, so werde ich das posten! Hans. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz