Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   nonVCL Treeview rekursiv durchgehen (https://www.delphipraxis.net/95243-nonvcl-treeview-rekursiv-durchgehen.html)

ibp 4. Jul 2007 19:43

Re: nonVCL Treeview rekursiv durchgehen
 
Zitat:

Zitat von negaH
Korrekt. Ich habs nur nochmal präzisiert weil ibp die Schleife die durch alle Childs druchgeht wieder entfernt hatte.

das war, weil ich angenommen habe, dass getnextitem alle items durchgeht entsprechend getnext(vcl). war mein fehler :wink:

bitsetter 5. Jul 2007 09:29

Re: nonVCL Treeview rekursiv durchgehen
 
Hi,
Delphi-Quellcode:
procedure DoClear(Tree: THandle; Item: HTREEITEM; Code: Integer);
var
  tvi: TTVItem;
  ItemText: String[255];
begin
  while Assigned(Item) do
  begin
    ZeroMemory(@tvi, sizeof(TTVItemW));
    tvi.hItem := Item;
    tvi.mask := TVIF_PARAM or TVIF_TEXT or TVIF_CHILDREN;
    tvi.pszText := @ItemText[1];
    tvi.cchTextMax := sizeof(ItemText);
    CommCtrl.TreeView_GetItem(Tree, tvi);
    Form1.ListBox1.Items.Add(tvi.pszText);
    //if Assigned(TObject(tvi.lParam)) then
      //TObject(tvi.lParam).Free;
     
   // if tvi.cChildren > 0 then
      DoClear(Tree, Treeview_GetNextItem(Tree, Item, TVGN_CHILD), 0);

    Item := TreeView_GetNextItem(Tree, Item, TVGN_NEXT);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 hTVItem: HTREEITEM;
begin
  hTVItem := TreeView_GetRoot(Tv.Handle);
  DoClear(Tv.Handle, hTVItem , 0);
end;
Um zu sehen, ob die Funktion alle Items ausliest, habe ich den Text der Items in einer TListbox angezeigt.
Der Code sollte auch für non VCL gehen, das Problem ist nur, dass ich TTreeview genommen habe und dieser es nicht so gut findet wenn man da
Delphi-Quellcode:
TObject(tvi.lParam).Free;
ausführt. Da der TTreeview tvi.lParam anscheinend benötigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 Uhr.
Seite 2 von 2     12   

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