Seite 1 von 1

Treeview auslösen

Verfasst: Do, 01. Jan 2009 23:32
von Jan
Ich habe eine Verständnisfrage. Lt. Onlinehilfe kann ich einen Eintrag im Treeview sowohl durch einen Doppelklick als auch durch Enter Selektieren. Bei mir klappt das aber nur mit Doppelklick, bei einem Enter passiert garnichts. Verstehe ich die Doku falsch, oder mache ich da irgendetwas falsch?

Ich fange verschiedene Tastaureingaben in der Eventschleife ab. Mir kam also der Gedanke, daß ich da ein wenig zu viel mache, und habe extra dafür eine Abfrage eingebaut. im Debugger sehe ich auch, daß der da richtig reinspringt. Aber auch da bewirkt ein Auslösen von Enter oder Return garnichts. Es gibt auch nur diese eine Eventschleife für diesen Treeview, da kann es also auch keine Konflikte geben.

Jan

Re: Treeview auslösen

Verfasst: Fr, 02. Jan 2009 1:25
von AUGE_OHR
Jan hat geschrieben:Ich habe eine Verständnisfrage. Lt. Onlinehilfe kann ich einen Eintrag im Treeview sowohl durch einen Doppelklick als auch durch Enter Selektieren. Bei mir klappt das aber nur mit Doppelklick, bei einem Enter passiert garnichts.
bei mir auch nicht
Jan hat geschrieben: Verstehe ich die Doku falsch, oder mache ich da irgendetwas falsch?
Ich fange verschiedene Tastaureingaben in der Eventschleife ab. Mir kam also der Gedanke, daß ich da ein wenig zu viel mache, und habe extra dafür eine Abfrage eingebaut. im Debugger sehe ich auch, daß der da richtig reinspringt. Aber auch da bewirkt ein Auslösen von Enter oder Return garnichts. Es gibt auch nur diese eine Eventschleife für diesen Treeview, da kann es also auch keine Konflikte geben.
versuche mal

Code: Alles auswählen

oDlg:oTree:itemSelected := {| oItem, aRect, oSelf | oDlg:SetTV(oItem) }
oDlg:oTree:rootItem:expand( .T. )
oDlg:oTree:show()

// bei mir heisst die Methode SetTV()
// oItem = :getdata()
//
          CASE nEvent == xbeP_Keyboard .AND. mp1 = xbeK_ENTER
                  oDlg:SetTV( oDlg:oTree:getdata() )

Re: Treeview auslösen

Verfasst: Mo, 12. Jan 2009 10:17
von stevie
also ich benutze dafür immer:
::oTree:keyboard:= {|nKey, x, obj| IIf( nKey == xbeK_RETURN,;
PostAppEvent (xbeTV_ItemSelected, ::oTree:getData(), x, obj), NIL)}

Re: Treeview auslösen

Verfasst: Mo, 12. Jan 2009 20:34
von Jan
Stevie,

jawoll, das funktioniert. Danke für den Hinweis.

Steht aber noch im Raum, was dann das hier in der Doku heißen soll:
Alaska Onlinedoku hat geschrieben:Das Ereignis xbeTV_ItemSelected wird erzeugt, wenn ein Eintrag im XbpTreeView-Objekt ausgewählt wurde. Das kann durch einen linken Doppelklick oder durch Drücken der Return-Taste erfolgen.
Jan

Re: Treeview auslösen

Verfasst: Di, 25. Okt 2022 11:27
von Udo
Hallo,
der Weg über

Code: Alles auswählen

oTree:keyboard   :={|nKey, x, obj| IIf( nKey == xbeK_RETURN,;
                             PostAppEvent (xbeTV_ItemSelected, ::oTree:getData(), x, obj), NIL)} 
führte bei mir nicht zum Erfolg (2022), aber

Code: Alles auswählen

oTree:keyboard   :={|nKey, x, obj| IIf( nKey == xbeK_RETURN,;
                          obj:getdata():expand( .NOT. obj:getdata():isExpanded() ), NIL)}  
funxt.

Glück Auf!
Udo

Re: Treeview auslösen

Verfasst: Di, 25. Okt 2022 15:01
von Marcus Herz
The event xbeTV_ItemExpanded is created after the sub-items of an XbpTreeViewItem object became visible in the display. This is achieved by clicking the Plus sign with the left mouse button, or when the Plus key or right arrow key is pressed.
Das sind die Windows Default Tasten, nur zur Info. Ich versuch ENTER wirklich nur zur Bestätigung (einer Eingabe) zu verwenden.
Und ein Windows Explorer verhält sich auch so.

Re: Treeview auslösen

Verfasst: Mi, 26. Okt 2022 8:17
von AUGE_OHR
hi,

Windows kennt die ENTER "Taste" (!) nicht [-X

auch ein Button muss man durch einen "click" oder SPACE Taste (wenn Focus) auslösen.

Re: Treeview auslösen

Verfasst: Mi, 26. Okt 2022 12:12
von Jan
Jimmy,

Du muß hier nicht mit dem mahnenden oder besserwisserischen Finger wedeln. Das ist uns allen ja klar.

Aber erstens steht in der Alaska Doku das genau so drin. Siehe mein Zitat gleich zu Beginn.

Und zweitens geht es doch hier in der Diskussion aktuell darum, ob man das nun mit PostAppevent oder mit :expand auslöst. Bei mir klappt nach dem Hinweis von Stevie von vor fast 4 Jahren PostappEvent, bei Udo aktuell dagegen nicht. Und darum geht es hier.

Und nur mal so, hat mit Deiner hier vollkommen nicht dazugehörenden Anmerkung zu tun. Am Anfang schrieb ich das ich manche Tastatureingaben in der Eventschleife abfange. Und da mache ich das z. B. so das bei einem Enter auf einem Pushbutton die Leertaste ausgeführt wird. Weil der normale User durchaus der Meinung ist, das Windows ein Enter auf Buttons kennt. Und mir vorwerfen wird das ich einen Programmierfehler gemacht habe, wenn der Button bei Enter nicht asugelöst wird.

Jan

Re: Treeview auslösen

Verfasst: Mi, 26. Okt 2022 13:13
von Marcus Herz

Code: Alles auswählen

oTree:keyboard   :={|nKey, x, obj| IIf( nKey == xbeK_RETURN,;
                             PostAppEvent (xbeTV_ItemSelected, ::oTree:getData(), x, obj), NIL)} 
Das müsste gehen, wenn man in der der Methode/Callback :itemselected dann das Expand ausführt. Es gibt ja keinen Default Callback Slot für xbeTV_ItemSelected.

Re: Treeview auslösen

Verfasst: Fr, 28. Okt 2022 11:45
von AUGE_OHR
hi,
Jan hat geschrieben: Mi, 26. Okt 2022 12:12 Du muß hier nicht mit dem mahnenden oder besserwisserischen Finger wedeln. Das ist uns allen ja klar.
dir anscheint nicht ...

---

wenn man den o:Keyboard Slot nicht nutzt wird ein Control nicht auf das Keyboard reagieren
das ist Aufgabe des Programmierer

wenn ein Kunde "wünscht" das er seine App per Keyboard steuern kann ist es Aufgabe des Programmierer es umzusetzen

---

wenn man in der AppEvent() Schleife

Code: Alles auswählen

   CASE nEvent == xbeP_Keyboard .AND. mp1 == xbeK_*
abfragte und eine Function / Procedure / Method startet werden weitere Events "blockiert" :!:

man sollte "nur" Events in der Schleife verwenden

Code: Alles auswählen

   PostAppEvent(xbeP_*, mp1 , mp2, oXbp)

Re: Treeview auslösen

Verfasst: Fr, 28. Okt 2022 14:35
von Jan
AUGE_OHR hat geschrieben: Fr, 28. Okt 2022 11:45 dir anscheint nicht ...
Jimmy,

wo genau ist mir das nicht klar?

Jan