AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [VST] Einträge mit beliebiger Taste markieren
Thema durchsuchen
Ansicht
Themen-Optionen

[VST] Einträge mit beliebiger Taste markieren

Ein Thema von TUX_der_Pinguin · begonnen am 23. Feb 2010 · letzter Beitrag vom 23. Feb 2010
Antwort Antwort
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

[VST] Einträge mit beliebiger Taste markieren

  Alt 23. Feb 2010, 08:14
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:
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;
Es geht also darum beliebige Einträge mit der Leertaste zu markieren bzw. die
Markierung wieder aufzuheben wenn man erneut die Leertaste betätigt.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#2

Re: [VST] Einträge mit beliebiger Taste markieren

  Alt 23. Feb 2010, 09:02
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:
VirtualStringTree1.Selected[node]:=true;
VirtualStringTree1.Selected[node]:=false;
Du wirst das Verhalten vom VST grundlegend ändern müssen.
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.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort


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:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz