Treeview auslösen

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

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

Treeview auslösen

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12781
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 17 Mal
Danksagung erhalten: 25 Mal

Re: Treeview auslösen

Beitrag 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() )
gruss by OHR
Jimmy
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Treeview auslösen

Beitrag 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)}
Viele Grüße
Stevie
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14435
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 19 Mal
Danksagung erhalten: 59 Mal
Kontaktdaten:

Re: Treeview auslösen

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Udo
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 44
Registriert: Do, 18. Okt 2007 15:37

Re: Treeview auslösen

Beitrag 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
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 680
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 30 Mal
Danksagung erhalten: 135 Mal
Kontaktdaten:

Re: Treeview auslösen

Beitrag 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.
Gruß Marcus

Es gibt keine Grenzen, aber du kannst welche ziehen.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12781
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 17 Mal
Danksagung erhalten: 25 Mal

Re: Treeview auslösen

Beitrag 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.
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14435
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 19 Mal
Danksagung erhalten: 59 Mal
Kontaktdaten:

Re: Treeview auslösen

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 680
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 30 Mal
Danksagung erhalten: 135 Mal
Kontaktdaten:

Re: Treeview auslösen

Beitrag 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.
Gruß Marcus

Es gibt keine Grenzen, aber du kannst welche ziehen.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12781
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 17 Mal
Danksagung erhalten: 25 Mal

Re: Treeview auslösen

Beitrag 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)
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14435
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 19 Mal
Danksagung erhalten: 59 Mal
Kontaktdaten:

Re: Treeview auslösen

Beitrag von Jan »

AUGE_OHR hat geschrieben: Fr, 28. Okt 2022 11:45 dir anscheint nicht ...
Jimmy,

wo genau ist mir das nicht klar?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten