Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi TreeView_Expand - komplett Tree expandieren ? (https://www.delphipraxis.net/141101-treeview_expand-komplett-tree-expandieren.html)

turboPASCAL 2. Okt 2009 14:37


TreeView_Expand - komplett Tree expandieren ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

wie kann man denn den TreeView komplett expandieren ?
So klappt es nicht:

Delphi-Quellcode:
rocedure TWndList.FillTreeView(hwnd: HWND);
var
  hTreeView: dword;
  hRoot: HTREEITEM;
  i: integer;
begin
  hTreeView := GetDlgItem(hwnd, IDC_TREE1);

  TreeView_DeleteAllItems(hTreeView);

  tvis.hParent := TVI_ROOT;
  tvis.hInsertAfter := TVI_LAST;
  tvis.item.mask := TVIF_TEXT {or TVIF_IMAGE};
  tvis.item.pszText := 'First';

  hRoot := TreeView_InsertItem(hTreeView, tvis);
  tvis.hParent := hRoot;

  for i := 0 to 4 do
  begin
    tvis.item.pszText := PCHAR(format('Item %d', [i + 1]));
    tvis.hParent := TreeView_InsertItem(hTreeView, tvis);
  end;

  TreeView_Expand(hTreeView, hRoot, TVE_EXPAND);
end;

mschaefer 2. Okt 2009 14:40

Re: TreeView_Expand - komplett Tree expandieren ?
 
Hat der TreeView nicht Properties CollapseAll/ExpandAll ? Da war doch was .. // Martin

turboPASCAL 2. Okt 2009 14:45

Re: TreeView_Expand - komplett Tree expandieren ?
 
Äh, nich bei der nonVCL - Version.

:duck:

mschaefer 2. Okt 2009 14:51

Re: TreeView_Expand - komplett Tree expandieren ?
 
Oh - Ok. Also dann für Kandidaten vor dem Sofa nochmal in kleiner Sofakissengröße:

Du willst alle Nodes durchiterieren und dabei öffnen? Ich frage deshalb, da auch
die Nodes / Items die Property 'Expand' haben. Funktioniert die bei NonVCL ?

Dann könnte ich nach iterationsroutinen in der Kiste unter dem Sofa suchen . . .

// Martin

Mithrandir 2. Okt 2009 14:56

Re: TreeView_Expand - komplett Tree expandieren ?
 
Eigentlich sollte es aber funktionieren. Hast du es mal direkt mit SendMessage probiert? Sind die Handle gültig?

mschaefer 2. Okt 2009 15:03

Re: TreeView_Expand - komplett Tree expandieren ?
 
Delphi-Quellcode:

procedure TreeviewFullyExpand(tv: TTreeview);
var
  Node : TTreeNode;
  IsExp : boolean;
begin
  Assert(Assigned(tv));
  if tv.Items.Count > 0 then
  begin
    Node  := tv.Items[0];
    while Assigned(Node) do
    begin
      IsExp := Node.Expanded or not Node.HasChildren;
      if IsExp = false then Node.Expanded = true;
      Node  := Node.GetNext;
    end; {While}
  end {If}
end;
Das ist jetzt natürlich mit der VCL-Version.
Vielleicht kann man dies Übertragen..

// Martin

turboPASCAL 2. Okt 2009 15:07

Re: TreeView_Expand - komplett Tree expandieren ?
 
Zitat:

Du willst alle Nodes durchiterieren und dabei öffnen?
Ich hoffte darauf das durchiterieren (schickes Wort) durch eine einzelne Message,
also TVE_EXPAND umgehen zu können.
Leider expandiert es nur den ersten Knoten.

Zitat:

Eigentlich sollte es aber funktionieren. Hast du es mal direkt mit SendMessage probiert? Sind die Handle gültig?
Jo.
Ja.
Ja.

@Martin,

Möglich, aber nicht für mich als Anfänger.

mschaefer 2. Okt 2009 15:14

Re: TreeView_Expand - komplett Tree expandieren ?
 
Um das Sofa schleich: Wenn Du mal ein Miniprojekt hast nur mit dem Treeview versuche ich es mal einzubauen ... // Martin

turboPASCAL 2. Okt 2009 15:33

Re: TreeView_Expand - komplett Tree expandieren ?
 
Damit du nicht einen Graben um das Sofa läufst, hab ich im ersten Post ein Miniproj. angehangen.

Aber es kann doch einfach nicht angehen das man alle Childs einzeln aufklappen muss. :gruebel:

Lannes 2. Okt 2009 16:35

Re: TreeView_Expand - komplett Tree expandieren ?
 
Hallo,

macht Delphi auch wenn FullExpand aufgerufen wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 Uhr.
Seite 1 von 2  1 2      

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