AGB  ·  Datenschutz  ·  Impressum  







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

VirtualStringTree - FullExpand Problem

Ein Thema von UMOL · begonnen am 26. Jan 2009 · letzter Beitrag vom 27. Jan 2009
 
UMOL

Registriert seit: 17. Jan 2009
10 Beiträge
 
Delphi 2007 Professional
 
#1

VirtualStringTree - FullExpand Problem

  Alt 26. Jan 2009, 21:29
Hallo zusammen

Folgendes Szenario:
In meinem Programm wird ein VirtualStringTree aus einer MemIniFile aufgebaut. Aus verschiedenen Gründen muß der VirtualStringTree auf FullExpand gesetzt werden; gleichzeitig aber die Möglichkeit bieten, beim Aufruf von ToggleNode ein Node zusammen oder auseinander zu falten. Mein Code sieht so aus (Content ist eine MemIniFile):


Delphi-Quellcode:
procedure TForm1.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  s: String;
  SL: TStringList;
begin
  SL := TStringList.Create;
  case Column of
    0:
      begin
          if VirtualStringTree1.GetNodeLevel(Node) = 0 then
          begin
            Content.ReadSections(SL);
            s := SL[Node.Index];
            CellText := s;
            Content.ReadSection(s, SL);
            if VirtualStringTree1.ChildCount[Node] <> Cardinal(SL.Count) then
              VirtualStringTree1.ChildCount[Node] := SL.Count;
          end
          else
          begin
            Content.ReadSections(SL);
            Content.ReadSection(SL[Node.Parent.Index], SL);
            CellText := SL[Node.Index];
          end;
        end;
    1:
      if VirtualStringTree1.GetNodeLevel(Node) = 0 then
        CellText := ''
      else
      begin
        Content.ReadSections(SL);
        s := SL[Node.Parent.Index];
        Content.ReadSection(s, SL);
        CellText := Content.ReadString(s, SL[Node.Index], 'n/a')
      end;
  end;
  SL.Free;
  {We cannot use VirtualStringTree1.FullExpand(nil) to expand all nodes as it
  causes the main menu bar to stop responding.}

  if Node^.Parent = Sender.RootNode then
    VirtualStringTree1.Expanded[Node] := True;
end;


procedure TForm1.VirtualStringTree1InitNode(Sender: TBaseVirtualTree;
  ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
begin
  if (VirtualStringTree1.GetNodeLevel(Node) = 0) then
    VirtualStringTree1.CheckType[Node] := ctButton;
end;


procedure TForm1.VirtualStringTree1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  HIF: THitInfo;
  Node: PVirtualNode;
begin
  if ssLeft in Shift then
  begin
    VirtualStringTree1.GetHitTestInfoAt(X,Y,true,HIF);
    if hiOnItemCheckbox in HIF.HitPositions then
    begin
      Node := VirtualStringTree1.GetNodeAt(X,Y);
      VirtualStringTree1.ToggleNode(Node);
    end;
  end;
end;

Klappt soweit auch alles wie geplant - alle Nodes sind expandiert und der Button links von der Node Caption wird angezeigt. Mein Problem ist nur, daß ein Click auf den Button nicht ToggleNode(Node) aufruft. Ich weiß, daß ich nur die letzten beiden Zeilen aus OnGetText löschen muß, damit der Button reagiert, aber dann stehe ich vor dem Dilemma, daß die Nodes nicht mehr expandiert sind. Ich habe versucht, die beiden Zeilen im OnInitNode und diviersen anderen Events unterzubringen, aber leider ohne Erfolg. Entweder sind alle Nodes zusammengefaltet, oder aber der Button reagiert nicht. Weiß jemand, was ich hier falsch mache? Ich hab jetzt schon drei Tage nach einer Lösung gesucht und dabei meine letzten Haare eingebüßt...

Danke im voraus
Gruß
Uwe
  Mit Zitat antworten Zitat
 


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 16:19 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