Seite 1 von 1

Tabpage aktivieren [Erledigen]

Verfasst: Sa, 24. Feb 2018 11:23
von Jan
Hallo,

wie kann ich codetechnisch eine Tabpage aktivieren? Ich möchte einfach sagen: Wenn das passiert, dann muß dieser oder jener Tab ausgewählt und aktiviert werden. Irgendwie bekomme ich das nicht hin.

Jan

Re: Tabpage aktivieren

Verfasst: Sa, 24. Feb 2018 11:59
von Tom
SetAppFocus(oTab)?

Re: Tabpage aktivieren

Verfasst: Sa, 24. Feb 2018 12:04
von Werner_Bayern
Servus Jan,

Code: Alles auswählen

setappfocus(oDeingewünschterTab)

Re: Tabpage aktivieren

Verfasst: Sa, 24. Feb 2018 12:05
von Jan
Hallo Tom und Werner,

das hatte ich auch gedacht. Aber macht der nicht.

Wenn das der einzig korrekte Weg ist muß es irgend was anderes im Programm geben, was das umgeht. Werd mal suchen.

Jan

Re: Tabpage aktivieren

Verfasst: Sa, 24. Feb 2018 12:13
von Werner_Bayern
Ich habs vorher sicherheitshalber getestet, deswegen war wohl Tom schneller :)

Wie schaut Dein TabActivate-Codeblock aus? Der wird bei mir durch setappfocus() 2x (!) aufgerufen.

Re: Tabpage aktivieren

Verfasst: Sa, 24. Feb 2018 12:14
von Tom
Bei mir geht das. Wenn es nicht geht, dann liegt das möglicherweise daran, dass die Tabpage auf etwas liegt, das zuerst den Fokus bekommen muss. Oder etwas beim Fokusbekommen lässt den Fokus wieder verschwinden. Aber ich habe auf komplexen Dialogen z.B. Buttons, mit denen Einträge in derzeit nicht sichtbaren Browses auf derzeit nicht aktivierten Tabpages erzeugt werden können. Ein SetAppFocus(oTab) nach dem oZielBrowse:RefreshAll() tut dann seine Wirkung. Wie gesagt, es sei denn, SetInputFocus() oder ähnliches werden vorher aktiv. Bei Tabpages kann auch der SetSize-Codeblock eine Rolle spielen, denn eine Tabpage, die den Fokus bekommt, verändert gleichzeitig ihre Größe. Edit: Klemm doch einfach mal eine MessageBox in den SetInputFocus-Callback der Tabpage.

Re: Tabpage aktivieren

Verfasst: Sa, 24. Feb 2018 12:37
von Tom
Oder SetDisplayFocus, eigentlich. :wink:

Re: Tabpage aktivieren

Verfasst: Sa, 24. Feb 2018 12:44
von Jan
Hallo Tom,

was ich machen möchte: Ich habe eine Tabpage, auf der eine weitere Tabpage-Reihe liegt. Wenn ich in der zweiten Reihe auf dem n-ten Tab stehe, aber auf einen anderen Tab der ersten Reihe wechseln muß, möchte ich beim Zurückwechseln auf den ursprünglichen Tab in der ersten Reihe wieder auf den zuletzt aktiven Tab der zweiten Reihe landen. Also merke ich mir den zuletzt aktiven Tab in einer PUBLIC, und setze beim Fokuserhalt des Tabs in der ersten Reihe den Fokus auf den gemerkten in der zweiten Reihe.

War das jetzt irgendwie verständlich?

Jan

Re: Tabpage aktivieren

Verfasst: Sa, 24. Feb 2018 12:58
von Tom
Ja, war es. Du musst Dir mal die SetDisplayFocus- und, wenn vorhanden, Resize-Callbacks der Tabpages anschauen. Du löst mit SetAppFocus den SetDisplayFocus-Codeblock aus. Wahrscheinlich wäre es sinnvoll, darin dann den nächsten Fokus zu setzen, nach dem Abarbeiten der vorher nötigen Aktionen natürlich. Also: Fokus auf die "Mutter"-Tabpage setzen, und bei der in SetDisplayFocus auf irgendwas reagieren - und dann den Fokus auf die Tochter setzen.

Re: Tabpage aktivieren

Verfasst: Sa, 24. Feb 2018 13:36
von AUGE_OHR
Jan hat geschrieben: Sa, 24. Feb 2018 11:23 wie kann ich codetechnisch eine Tabpage aktivieren? I

Code: Alles auswählen

PostAppEvent(xbeTab_TabActivate...oTabPage)
bei einem Callback Slot für einen Codeblock steht oben die xbe* Konstante die man für PostAppEvent() benötigt um den Codeblock zu aktivieren.

Re: Tabpage aktivieren

Verfasst: Sa, 24. Feb 2018 17:23
von Jan
Die Kombination aus PostAppEvent(xbeTab_TabActivate, , , oTab) und SetAppFocus(oTab) macht es.

Danke für Eure Tipps.

Jan