Fokus setzen auf XBP in modalem Fenster

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Fokus setzen auf XBP in modalem Fenster

Beitrag von Jan »

Mal 'ne Anfängerfrage. Da ich aber noch nie mit modalen Fenstern gearbeitet habe, muß ich halt doch mal fragen.

Ich habe ein Programm, in dem ein Child-Fenster geöffnet wird. So lange das auf ist soll nichts anderes in dem Programm gemacht werden können als das, was das Child-Fenster anbietet. Soweit klappt das, ich habe beim :create() die beiden unterschiedlichen Parents drin stehen, und darunter eii :showModal().

Aber ich bekomme es nicht hin, das der Focus auf einem bestimmten XBPart des modalen Dialoges liegt. Das klappt immer erst nach einem Mausklick darauf.

Und ich habe in der Eventschleife ein paar Besonderheiten zur Behandlung einiger Tastaturereignisse auf XBParts eingetragen. Wie: Pushbutton löst auch bei Enter aus, nicht nur bei Space. Diese Besonderheiten wurden ebenfalls nicht an den modalen Dialog weitergeleitet.

Was mache ich da falsch? Oder denke ich falsch, und das muß so sein?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Fokus setzen auf XBP in modalem Fenster

Beitrag von Wolfgang Ciriack »

Hast du auch ein SetAppFocus(oFenster) gemacht ?
Viele Grüße
Wolfgang
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fokus setzen auf XBP in modalem Fenster

Beitrag von Jan »

Hallo Wolfgang,

nützt nichts.

Ich habe da ja ein paar verschiedene Sachen:
Den modalen Dialog
Den betreffenden XBPart

Ich muß auf jeden Fall ja irgendwie den Fokus auf den XBPart legen
Danach muß ich das oDlg:showModal() machen. Denn mit dieser Zeile stoppt ja die Ausführung, bis der modale Dialog beendet wurde. Also muß das der letzte Schritt sein. Alles andere muß vorher eingestellt sein.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fokus setzen auf XBP in modalem Fenster

Beitrag von Martin Altmann »

Ändere die Reihenfolge!
Mach das SetAppFocus() nach dem ShowModal()

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fokus setzen auf XBP in modalem Fenster

Beitrag von Jan »

Martin,

das nützt nichts! Da die Ausführung des Codes mit der Zeile oDlg:showModal() stoppt. Der kommt garnicht erst bis zu der Zeile.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fokus setzen auf XBP in modalem Fenster

Beitrag von Jan »

Tja, wer die Forensuche zu nutzen weiß ... Ich selber ahbe vor gut einem Jahr einen anderen Trhead hier aufgemacht, wo es um die gleiche Frage ging. Die Antwort:

Code: Alles auswählen

oDlg:showModal(oCbp)
Dann wird der Fokus ganz sauber auf oXbp gelegt.

Bleibt noch die Frage, warum die Einstellungen in meiner Eventschleife dort nicht funktionieren ...

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Fokus setzen auf XBP in modalem Fenster

Beitrag von Dieter »

Hallo Jan,

die Klassenmethode :showModal() hat eine eigene interne Eventschleife. Wenn man die Haupteventschleife nutzen möchte, muss man ein nicht modales Fenster programmieren.
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Fokus setzen auf XBP in modalem Fenster

Beitrag von Jan »

Hallo Dieter,

Mist!

Kann man denn die interne Event-Schleife irgendwie beeinflussen? Wäre doch blöd wenn nicht, denn fast alle manipulieren die doch irgendwie. Oder?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fokus setzen auf XBP in modalem Fenster

Beitrag von brandelh »

ich setze in der CREATE() Methode des Fensters kurz vor :show()

Code: Alles auswählen

SetAppFocus(SELF) // das eigene Fenster, sonst war anfangs kein blauer Programmbalken, könnte aber schon verbessert sein...
SetAppFocus(::DasEditControl) // das gewünschte Control
Gruß
Hubert
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Fokus setzen auf XBP in modalem Fenster

Beitrag von Dieter »

Hallo Jan,

ich halte meine Event-Schleifen so klein wie möglich. Das Standardverhalten von Controls (z. B. bei Drücken der Enter-Taste) wird bei mir in der :handleEvent-Methode des Controls durch Auswertung des Keyboard-Events programmiert.

Code: Alles auswählen

CASE nEvent == xbeP_Keyboard
			DO CASE
				CASE mp1 == xbeK_ENTER
					PostAppEvent(xbeP_Keyboard,xbeK_TAB,,Self)
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Fokus setzen auf XBP in modalem Fenster

Beitrag von Dieter »

Hallo Hubert,

der bevorzugte Weg ( nach dem Create des Fensters) sollte eigentlich wie folgt sein:

Code: Alles auswählen

SetAppWindow(oDlgModal)
SetAppFocus(oDlgModal:DasEditControl)
nRet := oDlgModal:showModal()
IF nRet == XBP_MRESULT_CANCEL
   oDlgModal:destroy()
   SetAppWindow(oDlgMain)
ENDIF
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Antworten