WHEN Klausel

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

WHEN Klausel

Beitrag von Manfred »

Moin,

ich habe mich für besonders clever gehalten und dachte mir, wenn ich in dem WHEN Codeblock für einen Pushbutton folgendes einbaue:

Code: Alles auswählen

WHEN {|| ltasten .AND. SetAppFocus() == oBrowse }
dann habe ich dafür Sorge getragen, dass der Pushbutton erst zu aktivieren ist, wenn besagter Browse auch den Fokus hat. Hm, der Button wird zwar genau so klickbar gemacht, wie es sein soll, aber mehr als anklicken geht nicht. Die Action wird nicht ausgeführt. Wenn nur lTasten drin steht, dann klappt alles.

Was bringe ich hier durcheinander?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: WHEN Klausel

Beitrag von Tom »

Das kann nicht gehen, weil der Button ja den Fokus hat - und nicht mehr das Browse. Die WHEN-Klausel wird (unter anderem) in dem Moment evaluiert, in dem Du den Button betätigen willst. Versuch's mal mit "DC_LastFocus()".
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: WHEN Klausel

Beitrag von Manfred »

Boh,

genau Du hast Recht. Ich Doof. Das mit dem Fokus usw. macht mich noch ganz krank........
Ich schrieb, ich hielt mich für clever.... :roll:

OK, jetzt aber noch eine Frage: Da ich mittels F-taste auch den Button ACtion Codeblock auslöse, kann ich jetzt nicht verstehen, warum der dann klappt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: WHEN Klausel

Beitrag von Manfred »

Bringt aber auf die Schnelle nicht die Lösung, die ich anstrebe. Egal, dann muß ich noch ein wenige experimentieren.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: WHEN Klausel

Beitrag von Tom »

Hallo, Manfred.

Die "Accelerator-Keys" funktionieren anders. Roger fängt im Handler die Tasten ab, das hat mit dem Fokus des Buttons nichts zu tun, und genaugenommen nicht einmal mit dem Button. Wenn Du eine Taste drückst (von F10 mal abgesehen), wechselt der Fokus nicht. Der Button bekommt den Fokus auch nicht. Das ist quasi überhaupt keine Funktionalität des Buttons!

Du willst, dass bestimmte Dinge nur möglich sind, wenn das Browse aktiv ist. Ich verstehe den Anwendungsbereich dafür zwar nicht ganz, aber egal. Es sollte sich über eine getoggelte Variable machen lassen, die gesetzt wird, wenn das Browse den Fokus bekommt (GOTFOCUS) und die wieder negiert wird, wenn BESTIMMTE andere Controls den Fokus bekommen, aber NICHT, wenn das Browse den Fokus verliert, denn das tut es immer, wenn ein anderes Control den Fokus kriegt.
Herzlich,
Tom
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: WHEN Klausel

Beitrag von Wolfgang Ciriack »

Da ich mittels F-taste auch den Button ACtion Codeblock auslöse, kann ich jetzt nicht verstehen, warum der dann klappt.
Weil da der Button nicht den Focus bekommt, sondern nur die Nachricht Activate ?
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: WHEN Klausel

Beitrag von Manfred »

@Tom,

ich regel das mit den F-Tasten über SetAppEvent(). Der Grund liegt darin, weil ich anhand der Cursorposition im Browse einen Satz wähle, der "bearbeitet" werden kann. Es kann auch passieren, dass das Browse leer ist und dann könnte evtl. Mist herauskommen.

@Wolfgang,

das habe ich eben noch nicht so ganz gefressen, was da wie und in welcher Reihenfolge passiert. Der Button ist halt freigegeben und kann angeklickt werden. Es passiert nur nichts. Die F-Taste löst den Action Event aber trotzdem aus.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: WHEN Klausel

Beitrag von Tom »

Mit der Funktionstaste wird der Button "ausgelöst" (genaugenommen wird nur sein Action-Codeblock ausgeführt), aber er bekommt den Fokus nicht. Der bleibt auf dem Browse, deshalb funktioniert das. Fokus und Ausführung eines Controls müssen nicht einhergehen. Wenn man mit PostAppEvent() ein Control aktiviert, bekommt es auch nicht notwendigerweise den Fokus. Das sind zwei Geschichten, die nicht immer etwas miteinander zu tun haben. Man kann ein Control auch etwas tun lassen, ohne dass es den Fokus hat. Schwer zu verstehen, ist aber so. :wink:
Herzlich,
Tom
Antworten