![]() |
Delphi-Version: 10.3 Rio
TreeView / TreeNode filtern
Liste der Anhänge anzeigen (Anzahl: 2)
Hi zusammen
Wiedermal ist mein TOpenFileFrame mit im Spiel. Dessen Container besitzt eine Combobox, um Filter auszuwählen (BMP etc). Grundsätzlich wird dieser Filter schon berücksichtigt, wenn die Nodes in der Prozedur AddNewNode das erste mal erstellt werden. Hier das Codeschnipsel, das dies tun sollte: (nur, wenn Node.HasChilds False ist):
Delphi-Quellcode:
So siehts aus, nachdem ich den Parentnode das erste Mal geöffnet habe:
Node.Enabled := False; // Datefilter (Dateiendung) festgestellt. Wenn nein,
Lextension := ExtractFileExt(aRealName); if SameText(FFileType,Lextension) then Node.Enabled := True; if (FFileType = 'alle Dateien') then Node.Enabled := true; Anhang 52151 Eigentlich sollten die Datei-Nodes Enabled dargestellt werden - ich vermute hier einen Initialisierungsfehler. habe aber vorerst keine Idee, an was dies liegen könnte. Ein weiteres Problem zeigt sich bei MausDown: Anhang 52152 Hier habe ich über die FilterCombo einen neuen Filter gewählt und einen weiteren Node (das erste mal) geöffnet - hier sind die Datei-Nodes nun enabled dargestellt. Schliesse ich nun den Ordner 'Backgrnd' aus dem ersten Jpeg und öffne ihn wieder, wird der erste Dateinode korrekt Enabled (schwarz) dargestellt, alle andern sind weiterhin disabled. Der Code, der dies tut:
Delphi-Quellcode:
Ursprünglich hatte ich die ersten Zeilen der Schleife so, habe dies aber anhand
procedure TOpenFileFrame.TVFilesExplorerMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var AnItem, AnChild : TTreeNode; P: TPoint; I: integer; LRealName, Lextension : String; begin if Button =(mbLeft) then begin AnItem := TVFilesExplorer.GetNodeAt(X, Y); if AnItem.HasChildren then begin For I := 0 to AnItem.Count -1 do begin if i = 0 then AnChild := AnItem.getFirstChild else AnChild := AnItem.getNextSibling; LRealName := PNameRec(AnChild.Data)^.RealName; AnChild.Enabled := False; Lextension := ExtractFileExt(LRealName); if SameText(FFileType,Lextension) then AnChild.Enabled := True; if (FFileType = 'alle Dateien') then AnChild.Enabled := true; end; end; end; if Button =(mbRight) then begin ... ... end; end; ![]()
Delphi-Quellcode:
Was mache ich sonst noch falsch?
if i = 0 then
AnChild := AnItem.getFirstChild else AnChild := AnItem.GetNext; end; Gruss Delbor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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