AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VirtualStringTree, MultiSelect und RightClickSelect

VirtualStringTree, MultiSelect und RightClickSelect

Ein Thema von Codehunter · begonnen am 3. Jan 2017 · letzter Beitrag vom 11. Jan 2017
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
885 Beiträge
 
Delphi XE4 Professional
 
#1

VirtualStringTree, MultiSelect und RightClickSelect

  Alt 3. Jan 2017, 10:28
Hallo!

Hatte schon mal jemand beim VST folgendes Problem: Unter SelectionOptions toFullRowSelect, toRightClickSelect und toMultiSelect ausgewählt. Wenn man dann eine Menge x Knoten im Baum markiert und mit der rechten Maustaste klickt um ein Kontextmenü aufzurufen, dann "unselected" VST alle markierten Knoten bis auf den einen, auf dem der Mauszeiger beim Rechtsklick war. Allerdings passiert das nicht reproduzierbar nur alle paar Versuche mal, scheinbar nach dem Zufallsprinzip.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und manchmal Löcher in der Wand dahinter.
  Mit Zitat antworten Zitat
Aviator
Online

Registriert seit: 3. Jun 2010
876 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: VirtualStringTree, MultiSelect und RightClickSelect

  Alt 3. Jan 2017, 10:44
Habe jetzt leider kein Programm in dem diese Voraussetzungen erfüllt sind. Aber soweit ich mich erinnere hatte ich so etwas noch nicht. Wäre ja auch eigentlich nicht logisch bzw. ein ziemliches Fehlerverhalten des Trees.

Kann es sein das es nur passiert wenn du auf einen Bereich klickst der keiner Spalte mehr zugeordnet werden kann und der Wert der Spalte vielleicht COLUMN_INVALID (-2) bzw. COLUMN_NOCOLUMN (-1) ist? Also praktisch nur ganz rechts.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
885 Beiträge
 
Delphi XE4 Professional
 
#3

AW: VirtualStringTree, MultiSelect und RightClickSelect

  Alt 3. Jan 2017, 10:53
Kann es sein das es nur passiert wenn du auf einen Bereich klickst der keiner Spalte mehr zugeordnet werden kann und der Wert der Spalte vielleicht COLUMN_INVALID (-2) bzw. COLUMN_NOCOLUMN (-1) ist? Also praktisch nur ganz rechts.
Nein sowas einfaches ist es leider nicht. Ich hab da jetzt viel mit rumgespielt und dabei sehr genau gezielt. Mal auf dem Icon, mal auf dem Text, mal auf zusätzlichen Spalten. Es tritt überall auf, nur nicht regelmäßig.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und manchmal Löcher in der Wand dahinter.
  Mit Zitat antworten Zitat
Aviator
Online

Registriert seit: 3. Jun 2010
876 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: VirtualStringTree, MultiSelect und RightClickSelect

  Alt 3. Jan 2017, 10:57
Ist das Projekt größer oder handelt es sich hier um ein kleineres Projekt bei dem du den VST Teil mal hier hochladen bzw. posten könntest? Eventuell hast du ja mehrere Events abonniert die sich irgendwie in die Quere kommen.

Alternativ schau mal auf GitHub im Bugtracker. Vielleicht steht da ja schon etwas bekanntes drin.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
885 Beiträge
 
Delphi XE4 Professional
 
#5

AW: VirtualStringTree, MultiSelect und RightClickSelect

  Alt 3. Jan 2017, 12:36
Ich habe jetzt durch Zufall bemerkt, dass der beschriebene Fehler nicht auftritt, wenn man vor dem Rechtsklick die Shifttaste drückt und hält. Die wird aber von meinem Code an keiner Stelle speziell behandelt, so dass ich davon ausgehe, dass es sich um einen Fehler im VST selbst handelt. Ebensowenig tritt der Fehler auf, wenn man auf einen Textbereich klickt (egal in welcher Spalte), sondern nur wenn man in einen "leeren" Bereich eines Node klickt.

Die neueren VST-Versionen nützen mir leider nichts, da ich bei der letzten Lischke-Version bleiben muss.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und manchmal Löcher in der Wand dahinter.
  Mit Zitat antworten Zitat
Aviator
Online

Registriert seit: 3. Jun 2010
876 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: VirtualStringTree, MultiSelect und RightClickSelect

  Alt 3. Jan 2017, 13:32
Die neueren VST-Versionen nützen mir leider nichts, da ich bei der letzten Lischke-Version bleiben muss.
Wollte ich gerade vorschlagen. Warum kannst du denn die neue Version nicht verwenden?

Alternativ müsstest du mal im BugTracker auf GitHub suchen ob so ein Fehler schonmal behoben wurde und dann evtl. in der neuen Version diese Änderung suchen.

Oder du debuggst den OnClick Handler des Trees selbst mal durch und schaust dir an wo der Fehler auftritt. Könnte zwar etwas aufwendiger werden, aber wenn du zwingend eine Lösung dafür benötigst, dann bleibt dir fast nichts anderes übrig.

Ich versuche mal in einer neueren Version so einen Tree nachzubauen um den Fehler nachvollziehen zu können. Hast du denn mittlerweile herausgefunden wann es immer passiert?

Welche VST Version ist das die du verwendest? Ist das die 5.3.0 oder wie die hieß?
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
885 Beiträge
 
Delphi XE4 Professional
 
#7

AW: VirtualStringTree, MultiSelect und RightClickSelect

  Alt 9. Jan 2017, 12:46
Das Problem sind einige alte Projekte die noch für/mit D7 gemacht werden. Weil damals jemand so schlau war und Drittanbieter-Kompos ohne Source gekauft hat, kann ich diese Projekte nicht auf D10 migrieren. Und die JAM-Versionen vom VST laufen nun mal nicht mehr mit D7.

Ich konnte das Problem inzwischen soweit eingrenzen, dass es etwas mit FullRowSelect zu tun haben muss. Scheinbar ignoriert VST intern bei Clicks mit gedrückten Ctrl-, Shift- und/oder Alt-Tasten die Option toFullRowSelect und tut so als müsste man gezielt auf das TextRect klicken (dann funktionierts normal, insofern muss ich meine frühere Aussage korrigieren).
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und manchmal Löcher in der Wand dahinter.
  Mit Zitat antworten Zitat
nahpets

Registriert seit: 11. Okt 2006
2.353 Beiträge
 
Delphi 7 Professional
 
#8

AW: VirtualStringTree, MultiSelect und RightClickSelect

  Alt 9. Jan 2017, 13:07
Eigentlich ist das eher ein windowstypische Verhalten.

Mit einem einfachen Klick wählst Du einen Eintrag aus.

Mit Shift+Klick wählst Du alle Einträge aus, die sich zwischen dem bereitsmarkierten und dem gerade angeklickten Eintrag befinden.

Mit Strg+Klick kannst Du nacheinander mehrere Einträge markieren, die Markierung der bereits markierten Einträge bleibt erhalten.

Mit 'nem nun folgenden rechten Mausklick kann dann ein Kontextmenü aufgerufen werden, das für alle markierten Einträge gilt.

Problem dabei: Windows scheint ab und an schonmal der Meinung zu sein, dass der Rechtsklick zuerst ein einzelner Klick ist, der den aktuellen Eintrag markieren soll (und damit alle anderen Markierungen aufhebt) und anschließend das Kontextmenü aufruft.

Da ich den VST bisher noch nicht (wissentlich) genutzt habe, dass Verhalten aber schon seit Jahren kenne, gehe ich mal davon aus, dass das kein expliziter Fehler im VST ist.

Der Fehler scheint dann häufiger aufzutreten, wenn eine Maus (bzw. deren Tasten) nicht ganz prellfrei arbeitet. Dadurch kann das Ereignis des Klicks für Windows wie zwei Ereignisse aussehen und zu dem geschilderten Problem führen.
Stephan
Weil die Lichtgeschwindigkeit höher als die Schallgeschwindigkeit ist, hält man viele Leute für helle Köpfe, bis man sie reden hört.
  Mit Zitat antworten Zitat
Aviator
Online

Registriert seit: 3. Jun 2010
876 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: VirtualStringTree, MultiSelect und RightClickSelect

  Alt 9. Jan 2017, 13:39
Bin leider noch nicht dazu gekommen ein Beispiel mit einer neueren VST Version zu erstellen, habe es aber noch im Hinterkopf.

Aber den Punkt den nahpets nennt hatte ich bisher noch nicht. Windows hat bei mir bisher was den Rechtsklick auf markierte Elemente angeht immer korrekt gearbeitet.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
885 Beiträge
 
Delphi XE4 Professional
 
#10

AW: VirtualStringTree, MultiSelect und RightClickSelect

  Alt 11. Jan 2017, 16:24
Ich denke nahpets Erklärung kann man in dem Fall ausschließen, da sich das Verhalten inzwischen reproduzierbar zeigt, wenn man weiß wo und wie man klicken muss um es zu provozieren. Das mechanische Prellen von Maustasten ist denke ich schon lange kein Thema mehr, das lässt sich ja mit einer simplen RS-Schaltung verhindern. Das müssten dann schon absolute Billigst-Mäuse sein die das nicht haben.

Ich vermute, dass es irgendwo innerhalb des VST eine fehlerhafte Abfrage gibt, wenn toFullRowSelect gesetzt ist und rechts geklickt wird. Es gibt ja die THitPositions in VirtualTrees.pas. Wenn toFullRowSelect gesetzt ist dürfte/müsste THitPositions.hiOnItemLabel beim Rechtsklick ignoriert werden.

Wenn das Ding doch nicht so verdammt groß wäre... :-/
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und manchmal Löcher in der Wand dahinter.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf