XbpComboBox Bedienung

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

XbpComboBox Bedienung

Beitrag von georg »

Hallo,


mir geht es diesmal um die Bedienung einer XbpComboBox, nicht um die Konfiguration o.ä.

Unterstellen wir, die XbpComboBox hat die Einträge

- drei
- eins
- zwei

(streng alphabetisch). Wenn ich nun im SLE-Teil "zw" eintippe, wird in der Listbox auf den dritten Eintrag positioniert. Wenn ich den auswählen will, muss ich die Maus verwenden - per Tastatur geht es nicht. Wenn ich z.B. Cursor-unten drücke, wechselt der Focus in der Listbox auf den ersten Eintrag.

Kennt einer von Euch einen Weg, mittels Tastatur in die Listbox zu wechseln, um dort den entsprechenden Eintrag auszuwählen?

Es geht hier um die Erfassung vieler Daten, und jedesmal die Hand von der Tastatur zu nehmen, um mit der Maus zu klicken (oder den Suchbegriff komplett einzutippen) kostet zu viel Zeit, darum suche ich nach einer reinen Tastaturlösung.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpComboBox Bedienung

Beitrag von AUGE_OHR »

hi Georg,

wenn die ComboBox "Focus" hat : F4
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpComboBox Bedienung

Beitrag von georg »

Hallo, Jimmy -


es geht mir darum, dass das XbpSLE-Element den Fokus hat. Wenn das der Fall ist, löscht F4 das Eingabefeld.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: XbpComboBox Bedienung

Beitrag von Jan »

Hallo Georg,

wenn ich das richtig in Erinnerung habe kannst Du nach Eingabe des (Anfangs des) Suchbgriffes im SLE-Bereich der ComboBox mit den Cursor-Tasten in dem Listbox-Bereich der Combobox wandern. Und dann auch mit Enter auswählen. Als ob die Pfeiltaste automatisch den Fokus darauf legt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpComboBox Bedienung

Beitrag von georg »

Hallo, Jan -


da ich mit einer abgeleiteten Klasse arbeite, kann sich da ja was verstecken. Also habe ich mal den Code aus der Dokumentation kopiert und eine XBPCOMBOBOX_SIMPLE draus gemacht: oben ein SLE, unten eine ListBox.

Wenn in im SLE etwas eingebe, und dann Cursor-unten drücke, geht der Focus auf die ListBox, aber es wird das erste Element der Liste angesprungen, und meine Eingabe ist weg, sie wird mit dem Wert des ersten Eintrags in der Liste überschrieben.

Ich habe in der Zwischenzeit auch mit dem :keyboard-Callback experimentiert, aber wenn das Event kommt, ist der Focus bereits auf dem ListBox-Teil, und das erste Element in der Liste ausgewählt.

(Gleiches Verhalten wie bei meiner Klasse.)
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: XbpComboBox Bedienung

Beitrag von HaPe »

Ich weiß jetzt nicht wie bei Xbase++ die ComboBox technisch realisiert ist.
Aber in vielen Windows-Programmen öffnet in einer ComboBox die F4-Taste die Liste.
Zb. in Word, Excel, NotePad++ und auch in der Xbase++-WB.
Und überall ist es so, dass bei einer Vorauswahl im SLE-Control/TextBox nach dem Betätigen von F4 auf die Vorauswahl fokussiert wird.
Ich frage mich deshalb, warum bei dir F4 den Inhalt löscht und nicht die Liste der ComboBox öffnet :shock:
--
Hans-Peter
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpComboBox Bedienung

Beitrag von georg »

Hallo, Hans-Peter -


ich verwende die XbpComboBox so, dass die Liste bereits geöffnet ist. Das könnte der Grund sein, warum F4 nicht den gewünschten Effekt hat.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: XbpComboBox Bedienung

Beitrag von HaPe »

Guten Morgen Georg !
ich verwende die XbpComboBox so, dass die Liste bereits geöffnet ist. Das könnte der Grund sein, warum F4 nicht den gewünschten Effekt hat.
Bei allen Beispielen bzw. Tests, wird beim erneuten Betätigen von F4 die Liste der ComboBox wieder geschlossen.
Das heißt, mit F4 auf und mit dem nächsten F4 wieder zu.

Ich kann mir nicht vorstellen, dass Alaska das Verhalten anders als alle Anderen umsetzt.
--
Hans-Peter
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpComboBox Bedienung

Beitrag von georg »

Hallo, Hans-Peter -


also, ich denke, dass Alaska die XbpComboBox so darstellt, wie es unter Windows geht.

Allerdings gibt es da die Instanzvariable :type, die über das Aussehen entscheidet. Aus technischen Gründen habe ich die XBPCOMBOBOX_SIMPLE Variante gewählt, bei der die XbpComboBox ausgeklappt angezeigt wird und auch nicht eingeklappt werden kann.

Auf diese Variante beziehe ich mich, und dafür suche ich (falls es existiert) eine Lösung zur Tastaturbedienung. Und zwar, um zu dem korrespondierenden Eintrag in der Listbox zu springen.

Ich hänge gleich mal das Beispiel aus der Dokumentation an, dann kannst Du das ja mal überprüfen. Wobei, wie schon geschrieben, ich es so angepasst habe, dass eine SIMPLE Combobox verwendet wird.
Dateianhänge
Test.zip
(958 Bytes) 133-mal heruntergeladen
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpComboBox Bedienung

Beitrag von georg »

Guten Abend,


also ich habe jetzt eine programmtechnische Lösung gefunden, wenn sie aus meiner Sicht auch nicht so elegant ist, wie ich mir das wünsche:

Code: Alles auswählen

// Definition der XbpComboBox:
   oXbp:keyboard := {|nKey, uNIL, self| CheckKeyEntry(nKey, self)}


STATIC FUNCTION CheckKeyEntry(nKey, oList)
   Local cToken
   Local nLen, nI

   Static cOldValue

   IF nKey <> xbeK_DOWN
      cOldValue := Trim(oList:XbpSLE:editBuffer())
      RETU(oList)
   ENDIF

   oList:XbpSLE:setData(cOldValue)

   nLen := oList:numItems()
   FOR nI := 1 TO nLen
      cToken := oList:getItem(nI)
      IF cToken = cOldValue    // auch ein Teiltreffer trifft
         oList:setData(nI)
         RETU(oList)
      ENDIF
   NEXT
RETURN (oList)
Da beim Drücken von Cursor-runter der :editbuffer() geleert wird, speichere ich bei jedem Durchlauf den aktuellen Inhalt, um darauf zurück zu greifen, wenn die entsprechende Taste erkannt wird.

Theoretisch könnte ich die Items der XbpComboBox auch etwas optimierter durchsuchen (sie sind alphabetisch sortiert), aber das geht von der Geschwindigkeit aktuell.

Ärgerlich ist halt eben, dass das Eingabefeld Daten enthält, leer ist, und dann wieder die gleichen Daten enthält, aber es erfüllt seinen Zweck.

Trotzdem frage ich mich, ob es dafür nicht doch eine Tastenkombination gibt?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Antworten