AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

Ein Thema von TheFrog · begonnen am 22. Mai 2015 · letzter Beitrag vom 22. Mai 2015
Antwort Antwort
Seite 1 von 2  1 2      
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#1

Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

  Alt 22. Mai 2015, 09:26
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:
procedure TForm1.Button1Click(Sender: TObject);
begin
  PageControl1.ActivePage := TabSheet2;
  Edit2.SetFocus; // Control auf TabSheet2
end;
Mir ist klar, was diese Fehlermeldung bedeutet. Mir ist nicht klar, an welcher Stelle ich den Focus setzen soll/kann.

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.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

  Alt 22. Mai 2015, 09:38
Bei meinem kleinen Testprogramm funktioniert dein Code, ich vermute mal, dass der Fehler wo anders zu finden ist.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

  Alt 22. Mai 2015, 09:39
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.)?

Geändert von Perlsau (22. Mai 2015 um 09:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

  Alt 22. Mai 2015, 09:43
Setze den Fokus auf das TabSheet
TabSheet2.SetFocus; Dann übernimmt die Tabulatorreihenfolge des TabSheets, welches Control den Focus erhält.

Deine Fehlermeldung lässt aber vermuten, dass dein EDIT2 überhaupt nicht auf dem TabSheet2 liegt, daher die Fehlermeldung, ggf. unsichtbar?

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

  Alt 22. Mai 2015, 09:43
Wie wäre es denn mit dem OnShow -Ereignis deines TTabSheet ?
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

  Alt 22. Mai 2015, 09:50
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!
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

  Alt 22. Mai 2015, 09:51
@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
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

  Alt 22. Mai 2015, 09:56
Kommando zurück:

Ich hatte noch ein Fehler im Code

Als ich diesen korrigiert habe, hat es funktioniert!

Sorry und danke fürs Diskutieren!

Hans.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.077 Beiträge
 
Delphi 12 Athens
 
#9

AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

  Alt 22. Mai 2015, 10:00
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Fehler bei SetFocus() nach Wechseln der ActivePage im PageControl

  Alt 22. Mai 2015, 10:12
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 ) 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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz