xbptreeview und itemfrompos
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
xbptreeview und itemfrompos
Mir scheint, dass itemfromPos nur die Zeilen nach Items absucht und den Bereich nicht auf das sichtbare Item reduziert.
Ich klicke bestimmt 10 Leerzeichen vom Text entfernt in den Tree und trotzdem gibt itemfrompos das Item zurück.
Kann das jemand bestätigen?
Gibts ne andere Möglichkeit?
Konkret möchte ich über oTree:rbdown ein Menü aufrufen, wo aber, falls man dabei genau auf den Text eines Items geklickt hat, vorher per setdata die Markierung darauf gesetzt wird.
Aktuell kommt halt die Markierung auch, wenn man neben den Text geklickt hat.
Hat jemand eine Idee?
Ich klicke bestimmt 10 Leerzeichen vom Text entfernt in den Tree und trotzdem gibt itemfrompos das Item zurück.
Kann das jemand bestätigen?
Gibts ne andere Möglichkeit?
Konkret möchte ich über oTree:rbdown ein Menü aufrufen, wo aber, falls man dabei genau auf den Text eines Items geklickt hat, vorher per setdata die Markierung darauf gesetzt wird.
Aktuell kommt halt die Markierung auch, wenn man neben den Text geklickt hat.
Hat jemand eine Idee?
Viele Grüße
Stevie
Stevie
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 07. Aug 2006 10:18
- Wohnort: Leipzig
- Danksagung erhalten: 11 Mal
Re: xbptreeview und itemfrompos
Hallo Stevie,
mit dieser TreeView-Klasse kannst Du ein Tree-Item auch mittels der rechten Maus-Taste markieren (siehe Member "RBMark" bzw. Methode "rbDown"):
mit dieser TreeView-Klasse kannst Du ein Tree-Item auch mittels der rechten Maus-Taste markieren (siehe Member "RBMark" bzw. Methode "rbDown"):
Code: Alles auswählen
CLASS MyTreeView FROM XbpTreeView
EXPORTED:
VAR RBMark
METHOD Init, Create
METHOD rbDown
ENDCLASS
METHOD MyTreeView:Init( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
::XbpTreeView:Init( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
::RBMark := .T.
RETURN Self
METHOD MyTreeView:Create( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
::XbpTreeView:Create( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
RETURN Self
METHOD MyTreeView:rbDown( aPos )
LOCAL oItem
if ::RBMark
::XbpTreeView:lbDown( aPos )
oItem := ::editBuffer()
if ValType( oItem ) == "O"
::XbpTreeView:setData( oItem )
endif
endif
RETURN self
Beste Grüße,
Sören
Sören
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: xbptreeview und itemfrompos
Hmm... also editbuffer() scheint nicht immer das richtige zu bringen.
::oTree beinhaltet den originalen xbptreeview, die Methode wird aufgerufen bei ::oTree:rbdown bevor das Menü aufgerufen wird.
Am Anfang steht der Editrahmen und die Markierung.
Es scheint, dass Editbuffer() nur das Element mit dem Editrahmen und nicht der Markierung zurückgibt, bzw. lbdown nicht den Editrahmen aber die Markierung setzt? Lieg ich da richtig oder muss ich das unbedingt ableiten?
Code: Alles auswählen
Method Aktpl:rightclick(aRect) // bei Rechtsklick auf TreeviewItem Markierung draufsetzen
local oItem
::oTree:lbdown(aRect)
oItem:=::oTree:editbuffer()
//oItem:=::oTree:itemFromPos( aRect )
if valtype(oItem)=="O"
::oTree:SetData(oItem)
endif
return
Am Anfang steht der Editrahmen und die Markierung.
Es scheint, dass Editbuffer() nur das Element mit dem Editrahmen und nicht der Markierung zurückgibt, bzw. lbdown nicht den Editrahmen aber die Markierung setzt? Lieg ich da richtig oder muss ich das unbedingt ableiten?
Viele Grüße
Stevie
Stevie
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 07. Aug 2006 10:18
- Wohnort: Leipzig
- Danksagung erhalten: 11 Mal
Re: xbptreeview und itemfrompos
Hallo Stevie,
Ich kann Deine Probleme leider nicht ganz nachvollziehen...
ich verwende die oben gepostete Klasse seit vielen Jahren in meinem Dokumentenverzeichnis, um mit Rechtsklick ein TreeItem zu markieren und gleichzeitig ein Menu für dieses Item anzeigen zu lassen (also das, was auch Du willst) - und habe keinerlei Probleme damit.
Welche Xbase-Version verwendest Du (Patches/SL)? Ich verwende z.Z. Xbase++ 1.90.331 (bis Patch 6, dann war meine Subscription abgelaufen).
Was meinst Du eigentlich mit Editrahmen (zusätzlich zur Markierung des TreeItems)? Verwendest Du ThirdParty-Klassen (z.B. XClass++)? Wenn dem so ist, kann die Funktionalität sehr verschieden von der ursprünglichen Xbase-Funktionalität sein, somit könnten Deine Probleme bei der Nutzung meines Beispiels daher rühren.
Ich kann Deine Probleme leider nicht ganz nachvollziehen...
ich verwende die oben gepostete Klasse seit vielen Jahren in meinem Dokumentenverzeichnis, um mit Rechtsklick ein TreeItem zu markieren und gleichzeitig ein Menu für dieses Item anzeigen zu lassen (also das, was auch Du willst) - und habe keinerlei Probleme damit.
Welche Xbase-Version verwendest Du (Patches/SL)? Ich verwende z.Z. Xbase++ 1.90.331 (bis Patch 6, dann war meine Subscription abgelaufen).
Was meinst Du eigentlich mit Editrahmen (zusätzlich zur Markierung des TreeItems)? Verwendest Du ThirdParty-Klassen (z.B. XClass++)? Wenn dem so ist, kann die Funktionalität sehr verschieden von der ursprünglichen Xbase-Funktionalität sein, somit könnten Deine Probleme bei der Nutzung meines Beispiels daher rühren.
Beste Grüße,
Sören
Sören
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: xbptreeview und itemfrompos
Hallo Sören,
Stevie hat das Problem, dass er den Rechtsklick nur zulassen will, wenn der Text genau getroffen wird!
Das wird sich aber so ohne weiteres nicht ändern lassen - das Verhalten ist nämlich SWB und auch sehr leicht im Explorer nachzuvollziehen.
Vielleicht könnte man was in Zusammenhang mit OwnerDraw machen - aber warum soll das Verhalten anders sein, als man es unter Windows gewohnt ist, Stevie? Ist vielleicht nicht so sinnvoll und würde den Anwender eher irritieren, denke ich mal.
Viele Grüße,
Martin
Stevie hat das Problem, dass er den Rechtsklick nur zulassen will, wenn der Text genau getroffen wird!
Das wird sich aber so ohne weiteres nicht ändern lassen - das Verhalten ist nämlich SWB und auch sehr leicht im Explorer nachzuvollziehen.
Vielleicht könnte man was in Zusammenhang mit OwnerDraw machen - aber warum soll das Verhalten anders sein, als man es unter Windows gewohnt ist, Stevie? Ist vielleicht nicht so sinnvoll und würde den Anwender eher irritieren, denke ich mal.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 07. Aug 2006 10:18
- Wohnort: Leipzig
- Danksagung erhalten: 11 Mal
Re: xbptreeview und itemfrompos
Hallo!
Ist das denn wirklich ein Problem, dass das Menü auch dann angezeigt wird, wenn man nicht direkt auf das Item klickt? Man sieht doch, welches Item markiert ist (vorausgesetzt man hat ::alwaysShowSelection := .T. gesetzt)!
Bleibt für mich dennoch die Frage nach dem Unterschied zw. "Markierung" und "Editrahmen" im Zusammenhang mit einem TreeViewItem.
Aha... Das hatte ich so nicht mitbekommen!Martin hat geschrieben: Stevie hat das Problem, dass er den Rechtsklick nur zulassen will, wenn der Text genau getroffen wird!
Ist das denn wirklich ein Problem, dass das Menü auch dann angezeigt wird, wenn man nicht direkt auf das Item klickt? Man sieht doch, welches Item markiert ist (vorausgesetzt man hat ::alwaysShowSelection := .T. gesetzt)!
Bleibt für mich dennoch die Frage nach dem Unterschied zw. "Markierung" und "Editrahmen" im Zusammenhang mit einem TreeViewItem.
Beste Grüße,
Sören
Sören
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: xbptreeview und itemfrompos
speziell das item gibt ein anderes Kontextmenü als der Baum, halt genauso wie im Explorer.Sören hat geschrieben:Hallo!
richtigMartin hat geschrieben: Stevie hat das Problem, dass er den Rechtsklick nur zulassen will, wenn der Text genau getroffen wird!
Aha... Das hatte ich so nicht mitbekommen!
Ist das denn wirklich ein Problem, dass das Menü auch dann angezeigt wird, wenn man nicht direkt auf das Item klickt? Man sieht doch, welches Item markiert ist (vorausgesetzt man hat ::alwaysShowSelection := .T. gesetzt)!
Naja im Xclass bringt getdata() halt immer nur das Objekt (über editbuffer()) welches den Editrahmen besitzt, nicht aber das was mit lbdown markiert wurde und der Editrahmen scheint bei lbdown nicht umgesetzt zu werden.Bleibt für mich dennoch die Frage nach dem Unterschied zw. "Markierung" und "Editrahmen" im Zusammenhang mit einem TreeViewItem.
Viele Grüße
Stevie
Stevie
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: xbptreeview und itemfrompos
Hab das ganze mal in einem alten Xbaseprogramm versucht.Ist das denn wirklich ein Problem, dass das Menü auch dann angezeigt wird, wenn man nicht direkt auf das Item klickt? Man sieht doch, welches Item markiert ist (vorausgesetzt man hat ::alwaysShowSelection := .T. gesetzt)!
Bleibt für mich dennoch die Frage nach dem Unterschied zw. "Markierung" und "Editrahmen" im Zusammenhang mit einem TreeViewItem.
Habe deine Klasse vollständig implementiert und ein kleines Menü eingerichtet, was per msgbox die Caption von getdata() ausgibt.
gleicher Effekt:
editbuffer() bringt wirklich nur das Element was vorher markiert war und den Eingabefokus hat, der bei lbdown nicht verändert wird.
Muss ich mich mich wohl damit abfinden, dass nur die ganze Zeile funktioniert (eben über itemfrompos).
Viele Grüße
Stevie
Stevie