AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree Eintrag suchen.

Ein Thema von Zodi · begonnen am 3. Aug 2020 · letzter Beitrag vom 4. Aug 2020
Antwort Antwort
Benutzerbild von Zodi
Zodi

Registriert seit: 19. Jul 2017
Ort: Berlin
47 Beiträge
 
Delphi XE7 Ultimate
 
#1

VirtualStringTree Eintrag suchen.

  Alt 3. Aug 2020, 21:59
Hi Delphianer

Ich habe ne VST und verwende ne Inputbox um Einträge in der VST zusuchen.
gelöst habe isch das so...
Delphi-Quellcode:
procedure TWindowManager.VSTKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  XNode: PVirtualNode;
  Data: PTreeData;
  SearchKey : String;
begin
  if (ssCtrl in Shift) and ((Key = Ord('F')) or (Key = Ord('f'))) then begin
     SearchKey := inputbox('Windowmanager Search','Search Caption','');
     XNode := VST.GetFirst;
     while XNode <> nil do begin
       Data := VST.GetNodeData(XNode);
       if lowercase(Data^.Column1) = lowercase(SearchKey) then begin
          VST.ClearSelection;
          VST.Selected[XNode] := True;
          VST.SetFocus;
          break;
       end else
          XNode := VST.GetNextSibling(XNode);
     end;
  end;
end;
nur findet und fokusiert er den Eintrag nur wenn er im Inputbox genau so geschrieben wird wie er auch im VST drinn steht.
wie kann ikch das machen das er den Eintrag auch findet wenn man z.b nur die ersten 3-4 Buchstaben eingibt.


Grüsse Zodi
Pascal
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: VirtualStringTree Eintrag suchen.

  Alt 3. Aug 2020, 22:24
Delphi-Referenz durchsuchenPos
Delphi-Referenz durchsuchenPoSex ähhh PosEx
Delphi-Referenz durchsuchenStartsStr
Delphi-Referenz durchsuchenStartsText
Delphi-Referenz durchsuchenContainsStr
Delphi-Referenz durchsuchenContainsText
string.StartsText (Delphi-Referenz durchsuchenTStringHelper)
string.StartsWith
string.IndexOf
Delphi-Referenz durchsuchenTMask.Matches
Delphi-Referenz durchsuchenTRegEx
...

Und willst du wirklich nur die Siblings durchsuchen?


Zitat:
Key = Ord('f')
Das wird niemals passieren.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Aug 2020 um 22:29 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: VirtualStringTree Eintrag suchen.

  Alt 3. Aug 2020, 22:48
Ich würde an der Stelle auch eher mit GetNext() arbeiten wenn du alle Nodes beachten willst. Es sei denn, du hast nur eine Ebene von Nodes oder willst gezielt nur eine Ebene durchsuchen.

Wenn du die Nodes eventuell sogar unsichtbar schalten willst, dann solltest du auch darauf achten, dass du die Parent Nodes visible lässt wenn eine ChildNode den gesuchten Text enthält. Und ebenfalls solltest du prüfen, ob eine Node nicht ggf. unsichtbar ist die den gesuchten Text beinhaltet. Dann müsstest du sie evtl. sichtbar schalten oder beim Setzen des Focus und Selected States ausklammern. Zum Prüfen für die Sichtbarkeit gibt es die Tree.IsVisible[Node] property.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#4

AW: VirtualStringTree Eintrag suchen.

  Alt 4. Aug 2020, 06:31
Moin...
Zitat:
Ich habe ne VST und verwende ne Inputbox um Einträge in der VST zusuchen.
[meine Meinung]
Man sucht nicht im visuellen Control, sondern in der Datenmenge die das visuelle Control befüllt. Bei einem Match kann man das visuelle Control auf diesen Eintrag setzen oder anders auswerten.
[\meine Meinung]
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: VirtualStringTree Eintrag suchen.

  Alt 4. Aug 2020, 11:06
[meine Meinung]
Man sucht nicht im visuellen Control, sondern in der Datenmenge die das visuelle Control befüllt. Bei einem Match kann man das visuelle Control auf diesen Eintrag setzen oder anders auswerten.
[\meine Meinung]
Das ist wohl richtig. Allerdings sieht es so aus, als ob der die Daten zur Node zugeordnet speichert. Dann müsste er auch das System erst einmal umstellen.

Dazu kommt, dass er sich eine Liste bauen müsste, die die gefilterten Ergebnisse beinhaltet. In diesem Fall ging es aber wohl eher darum, eine Node mit dem entsprechenden Text in einem Haufen anderer Nodes anzuzeigen und die Anzeige nicht auf diese eine (oder ggf. mehrere Nodes) zu beschränken. Zumindest lese ich das so aus seiner Frage heraus.

Und einen Selected Zustand über eine Liste zu erreichen wird wohl doch etwas schwieriger sein.
  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 12:25 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