![]() |
VST und der ungewollte Selektionsrahmen...
Hallo Forum,
Ich arbeite gerade mit dem VirtualStringTree, dabei ist mit folgender Bug(?) aufgefallen, wenn ich im OnEdited-Ereigenis des Views eine Messagebox anzeigen lasse, so zeichnet der VST nach dem wegklicken der Box einen Selektionsrahmen, wie kann ich das verhindern, bzw. umgehen? :? Hier die Unit zum reproduzieren:
Delphi-Quellcode:
hoffe auf schnelle Hilfe
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Virtualtrees; type TmyData = class public var Value: String; end; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } myVST: TVirtualStringTree; procedure myVSTGettext(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); procedure myVSTNewText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; NewText: WideString); procedure myVSTEdited(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex); public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var tmp: TmyData; begin myVST := TVirtualStringTree.Create(Self); myVST.Parent := Self; myVST.Width := Self.ClientWidth; myVST.Height := Self.ClientHeight; myVST.OnGetText := myVSTGettext; myVST.OnNewText := myVSTNewText; myVST.OnEdited := myVSTEdited; myVST.TreeOptions.MiscOptions := myVST.TreeOptions.MiscOptions+ [toEditable]; myVST.TreeOptions.SelectionOptions := myVST.TreeOptions.SelectionOptions + [toMultiSelect]; myVST.NodeDataSize := SizeOf(TmyData); tmp := TmyData.Create; tmp.Value := 'test'; myVST.AddChild(nil, tmp); myVST.Anchors := [akLeft,akTop,akRight,akBottom]; end; procedure TForm1.myVSTEdited(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex); begin ShowMessage('test'); end; procedure TForm1.myVSTGettext(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); begin Celltext := TmyData(Sender.GetNodeData(Node)^).Value end; procedure TForm1.myVSTNewText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; NewText: WideString); begin TmyData(Sender.GetNodeData(Node)^).Value := NewText; end; end. phreax :thumb: |
Re: VST und der ungewollte Selektionsrahmen...
Zitat:
|
Re: VST und der ungewollte Selektionsrahmen...
Liste der Anhänge anzeigen (Anzahl: 1)
Nein ich meine den Rahmen mit dem man mehrere Konten selektieren kann, Bild siehe Anhang....
|
Re: VST und der ungewollte Selektionsrahmen...
da kommt wohl ein mouseup ereignis nicht an.
|
Re: VST und der ungewollte Selektionsrahmen...
Und was kann man dagegen tun? ein
Delphi-Quellcode:
bringt leider auch keine Abhilfe....
procedure TForm1.myVSTEdited(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex); begin ShowMessage('test'); myVST.Perform(WM_LBUTTONUP, 0, 0); end; |
Re: VST und der ungewollte Selektionsrahmen...
Zitat:
@phreax: Ist das denn der gesamte Code, oder steckt da vielleicht noch mehr hinter... Hier habe ich diese Probleme definitiv nicht. |
Re: VST und der ungewollte Selektionsrahmen...
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist natürlich nicht der gesamte Code, aber ich habe das ganze so weit reduziert, um den Fehler sauber einzugrenzen und der Fehler tritt bei mir bereits in diesem kleinen Demoprojekt auf.
Im Anhang mal das ganze Demoprojekt mit Echse, diese einfach mal ausführen, da tritt der Fehler bestimmt auf... schon mal Danke für alle Antworten bisher :) Grüße phreax |
Re: VST und der ungewollte Selektionsrahmen...
OK, bei der von Dir compilierten Version tritt der Fehler tatsächlich auf. Wenn ich jedoch Deinen Source (nur die Unit1 in ein neu erstelltes Projekt kopiert) selbst kompiliere, dann tritt der Fehler nicht auf. Vielleicht liegt es ja an einer der Projektdateien :gruebel:.
|
Re: VST und der ungewollte Selektionsrahmen...
Liste der Anhänge anzeigen (Anzahl: 1)
Ebenfalls: Die bei dir kompilierte Datei Project1.exe zeigt den beschriebenen Effekt, die bei mir kompilierte Datei (siehe Anhang) nicht. Ich habe dein Archiv ausgepackt und und das Projekt kompiliert. - Borland Delphi für Microsoft Windows Version 10.0.2288.42451 Update 2 ("TurboDelphi") und VirtualStringTree-Version 4.5.2
|
Re: VST und der ungewollte Selektionsrahmen...
Hab gerade nochmal den VirtualtTreeView neu installiert, und einfach meine Unit hier aus dem Thread in ein neues Projekt gepackt, und ausprobiert, immer noch der gleiche Fehler :(
Compiliert mit: Borland® "Turbo" Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2 VST-Version ist: 4.5.2 @Panthreax bei der von Dir angehängten Echse tritt der Fehler bei mir AUCH auf... Ausgeführt auf WinXP Home Sp2 Build 2600 Wiso tritt den dieser Bug nur bei mir auf??.... :drunken: |
Re: VST und der ungewollte Selektionsrahmen...
Ich habe eben noch einmal beide Dateien ausgeführt und bei beiden den Text per einfachem Mausklick auf den Eintrag in 'Hallo' geändert:
* deine Exe-Datei zeigt den Effekt * meine Exe-Datei zeigt den Effekt nicht Ausgeführt auf Windows Vista Home Premium. Verruckt... |
Re: VST und der ungewollte Selektionsrahmen...
Sehr komisch... klickst Du auch immer zum abbrechen des Editierens irgendwo in den VST, dort beginnt dann auch der Rahmen?
Gruß phreax |
Re: VST und der ungewollte Selektionsrahmen...
Liste der Anhänge anzeigen (Anzahl: 1)
Schau dir mal das kleine Video im Anhang an. Dann weißt du genau, was ich gemacht habe. Und ja, wenn ich abbreche, dann startet der Rahmen an der Stelle, wo ich zum Abbrechen geklickt habe. Im Video sieht man, was passiert, wenn ich nicht abbreche (ich bestätige mit Enter). der Rahmen beginnt dann immer relativ weit rechts in der ersten Pixelreihe vom VST.
|
Re: VST und der ungewollte Selektionsrahmen...
Liste der Anhänge anzeigen (Anzahl: 2)
Mir ist gerade aufgefallen, dass es sich bei der im Demoprojekt enthaltenen Echse um eine andere Version handelt, wo ich es provoziert hatte, dass immer ein Rahmen erscheint....
Im Anhang die korrekte Version, der Bug tritt NUR auf, wenn nach dem ändern des Wertes in den View geklickt wird (siehe Screenshot).... Probiert das doch bitte mal aus BTW: @Panthrax Danke für die viele Mühe mit dem Video :thumb: EDIT: nochmals eine genaue Beschreibung zum Auslösen des Fehlers: 1) Programm öffnen, dann den Node anklicken 2) F2 drücken, das editieren beginnt 3) Wie auf dem Bild gezeigt, abseits des Nodes auf den VST klicken... Gruß phreax |
Re: VST und der ungewollte Selektionsrahmen...
Ja, bei der VST-Bug.exe erscheint der Rahmen nur, wenn das Editieren des Knoten-Eintrags mit einem Klick auf den VST beendet wird. Dabei spielt es keine Rolle, ob die Knotenbeschriftung geändert wurde oder nicht.
Trotzdem seltsam. Denn wie oben schon gesagt, ich kann dein Projekt kompilieren, ohne Nebeneffekt im Programm. Die Videosoftware habe ich dafür extra herausgekramt. Ein Video sagt hier doch auch mehr als taudsend Worte. :zwinker: |
Re: VST und der ungewollte Selektionsrahmen...
Zitat:
Das würde ja heißen, dass der Bug zum einen Systemabhängig und zum anderen Delphi- oder VST-Versionsabhängig ist... ich werde verrrückt :drunken: |
Re: VST und der ungewollte Selektionsrahmen...
Im Video kannst du ja sehen, dass die bei mir kompilierte Datei nicht den Rahmen als Nebeneffekt hat. Mit anderen Worten:
* Nein, ich kann keine Exe erstellen, die den Nebeneffekt hat. * Ja, ich habe denselben Nebeneffekt beim Ausführen der von dir gelieferten Exe-Dateien. Das gilt für Vista Home Premium. Und, Achtung, jetzt kommt's...: * Ja, ich habe denselben Nebeneffekt beim Ausführen der von dir gelieferten Exe-Dateien. * Ja, ich habe denselben Nebeneffekt beim Ausführen der von mir kompilierten Exe-Dateien. Und das gilt für XP Professional. Probier' es doch auch einmal auf einem anderen Rechner mit einem anderen Betriebssystem, wenn du das kannst. Der Betriebssystemtyp hat also Einfluss auf den Nebeneffekt. Dass wir mit der gleichen Delphiversion arbeiten haben wir ja schon festgestellt. |
Re: VST und der ungewollte Selektionsrahmen...
Oke Danke für die vielen Tests, das wird ja richtig haarig...
Uuund wenn jetzt noch jemand nen Workaround (an einen Fix wage ich mal garnicht zu denken ;) ) hat, dann gebe ich eine Runde in der DP-Bar aus :lol: Sonst, muss das unter die "Known and non fixable bugs" ins ReadMe.txt schreiben, und das fänd ich schade :wall: Grüße phreax |
Re: VST und der ungewollte Selektionsrahmen...
Zitat:
|
Re: VST und der ungewollte Selektionsrahmen...
ich sage das nicht gerne, aber bei mir tritt der fehler auch nicht auf.
|
Re: VST und der ungewollte Selektionsrahmen...
So ein Mist, was kommt denn als Fehlerquelle in betracht, mal vom Betriebssystem abgesehen?
Ich hab den VST gerade heute nochmal neu aufgespielt... Daran kann es eigentlich nicht liegen... Und ich bin nicht sonderlich scharf darauf mein Turbodelphi neu aufzusetzen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz