![]() |
[VST] Einträge mit beliebiger Taste markieren
Hallo DPler/innen,
ich möchte in einem VirtualStringTree (VST) die Einträge durch drücken der Leertaste markieren, wie z.B. in einigen Dateibrowsern (Total Commander). Jedoch klappt das ganze irgendwie noch nicht so ganz. Das Problem ist wenn ich einem Eintrag versuche den Status "markiert" zugeben ist dieser ja bereits markiert, ich stehe ja auf dem Eintrag und somit ist dieser ja bereits in gewisser weise markiert. Das VST ist im Report Modus. Mein erster Versuch sieht wie folgt aus nur bringt das Leider nichts und habe bisher auch keine Idee das umzusetzten.
Delphi-Quellcode:
Es geht also darum beliebige Einträge mit der Leertaste zu markieren bzw. die
procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var Node : PVirtualNode; begin if Key = VK_SPACE then begin Node := vstScroller.FocusedNode; if Assigned(Node) then begin if not (vsSelected in Node.States) then Node.States := Node.States + [vsSelected] else Node.States := Node.States - [vsSelected]; end;{if} end;{if} end; Markierung wieder aufzuheben wenn man erneut die Leertaste betätigt. |
Re: [VST] Einträge mit beliebiger Taste markieren
Du solltest nicht auf die internen Strukturen direkt zugreifen.
Das kann Fehler verursachen! Also auf Node.* zugreifen = schlecht! Nutze lieber die VST Methode dafür.
Delphi-Quellcode:
Du wirst das Verhalten vom VST grundlegend ändern müssen.
VirtualStringTree1.Selected[node]:=true;
VirtualStringTree1.Selected[node]:=false; Wenn du die Cursor Tasten bewegst, dann wird die aktuelle Selektion gelöscht. Windowsstandard bei Listen. Also musst du die "STRG"-Taste gedrückt halten, damit der VST sich so verhält wie du es wünscht. Nur die Taste in den VST schicken ist nicht optimal. Also eigene VST Klasse erstellen (vererbt von VST) und den Status intern setzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 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 by Thomas Breitkreuz