Seite 1 von 1

In welchem SLE Eingabefeld ich mich befinde

Verfasst: So, 09. Dez 2018 17:04
von saul
Hallo,
ich habe 5 SLE Eingabefelder. Ich kann mit der Tab Taste von Feld zu Feld springen. Kann ich im Eventloop ermitteln in welchem Feld man sich aktuell befindet?

Code: Alles auswählen

// Event loop = Programmsteuerung 
      nEvent := 0 
      DO WHILE nEvent <> xbeP_Close 
         nEvent := AppEvent( @mp1, @mp2, @oXbp ) 
         oXbp:handleEvent( nEvent, mp1, mp2 ) 
      ENDDO 
mfg
Wolfgang

Re: In welchem SLE Eingabefeld ich mich befinde

Verfasst: So, 09. Dez 2018 18:23
von Tom
Hallo, Wolfgang.

Durch einen simplen Vergleich. Wenn alle SLEs z.B. in einem Array stehen, das dem Eventhandler bekannt ist, musst Du nur jedes Element mit oXbp vergleichen. Der Treffer ist es dann. Die SLEs können strukturell sogar gleich sein, der Vergleich feuert trotzdem beim richtigen.

Re: In welchem SLE Eingabefeld ich mich befinde

Verfasst: So, 09. Dez 2018 23:48
von Werner_Bayern
die Frage ist, was will er erreichen? Evtl. kann er das mit entsprechenden Methoden / Callbacks des SLEs eleganter lösen.

Re: In welchem SLE Eingabefeld ich mich befinde

Verfasst: Mo, 10. Dez 2018 7:08
von mini990
oSLe:Hasinputfocus()

auf diese Art ermittle ich das "aktuelle" Sle

Gruß Stefan

Re: In welchem SLE Eingabefeld ich mich befinde

Verfasst: Mo, 10. Dez 2018 8:01
von Tom
Es kommt darauf an, was er genau will.

Wenn Wolfgang, wie er schreibt, im Eventhandler wissen will, welches SLE den Fokus hat, dann wäre es tatsächlich am einfachsten, zu prüfen, ob überhaupt ein SLE den Fokus hat (also oXbp von XbpSLE abgeleitet wurde) und welches (Vergleich). Man kann natürlich auch - eleganter - die Dialogklasse um eine entsprechende Instanz ergänzen und bei SetInputFocus() und KillInputFocus() entsprechende iVars besetzen. Es gibt viele Wege. Aber der simpelste besteht eben darin, einfach zu vergleichen.

Re: In welchem SLE Eingabefeld ich mich befinde

Verfasst: Di, 11. Dez 2018 6:16
von saul
Hi,
stimmt manchmal kann das Leben erschreckend einfach sein. Funktioniert, danke

Wolfgang