Einzelnen Beitrag anzeigen

Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#10

Re: VST mit Objekten, Alle Nodes einer Spalte Durchlaufen

  Alt 29. Mär 2006, 00:12
Danke für die antwort.

Wie kann ich den jetzt z.B. herausfinden ob auf das "plus"(Expandier) Symbol geklickt wurde,
weil ich erst dan die neue struktur erzeugen möchte.

hmmm, irgendwie krieg ich dass jetzt immer noch nicht ganz gebacken.
Also mein Ereignis sieht jetzt so aus:

Delphi-Quellcode:
procedure TForm1.VSTClick(Sender: TObject);
var
  TreeObject : TTreeDataClass;
  node,Childnode : PVirtualNode;
  Data : PTreeData;
  ME : TModuleEntry32;
  hME : THandle;
begin

           Vst.NodeDataSize:=SizeOf(TTreeData);
           Vst.BeginUpdate;

            try
              hME := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, (GetProcID('Explorer.exe')));
              ME.dwSize := sizeof(TModuleEntry32);
              Module32First(hMe, ME);
            repeat
              TreeObject := TTreeDataClass.Create;
              with TreeObject do
                begin
                  Modulename:= ME.szModule;
                  ModulePath:= ME.szExePath;
                  ProcUseCount:= ME.ProccntUsage;
                  ModuleIconindex:= GetIconIndex(ME.szExePath, SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_OPENICON);

                  //Aus dem Modulenamen nur den typ beibehalten
                  ms:= ME.szModule;
                  ts:= Copy(ms,Pos('.',ms)+1,length(ms));

                  ModuleFileTyp:= ts;
              end;
              Childnode:= FindPLANNodeByGroupID(Vst,0); //Mit 0 mein ich ja das ich den ersten child node des rootnodes will
              AddVSTStructure(VST,Childnode:= ,TreeObject);
            until (not Module32Next(hMe, ME));
            CloseHandle(hME);
            Vst.EndUpdate;
         except
           TreeObject.free; //Object der Module
         end;

end;

////////// und in diesem ereignis möchte ich halt die einzelnen childnodes unterscheiden können, um den Text darstellen zu ///////// können

procedure TForm1.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
var
  Data: PTreeData;
begin
  Data := Sender.GetNodeData(Node);
      case Column of
        0: begin
             if (Sender.GetNodeLevel(Node) = 0) Then
               CellText := TTreeDataClass(Data.FObject).ProcName
             else if (Sender.GetNodeLevel(Node) = 1) Then
               CellText := TTreeDataClass(Data.FObject).FLevelHeader
             else if (Sender.GetNodeLevel(Node) = 2) and (Vst.ChildCount[Node] = 0) Then //Das funktioniert halt nicht
               CellText := TTreeDataClass(Data.FObject).Modulename
             else if (Sender.GetNodeLevel(Node) = 2) and (Vst.ChildCount[Node] = 1) Then
               CellText := TTreeDataClass(Data.FObject).FunktionsName
             else if (Sender.GetNodeLevel(Node) = 2) and (Vst.ChildCount[Node] = 2) Then
               CellText := TTreeDataClass(Data.FObject).Exportdll;
           end;
       end;
end;
Im Screenshot kann mans villeicht besser erkennen.
Die jeweiligen Childnodes die man sieht müßen noch geüllt werden. Sie sollen einzeln gefüllt werden wenn man auf das expandier symbol klickt, auf dem screen sieht man schon die colapsed situation jedoch sind die childnodes noch nicht geüllt.

kann man das machen?
Miniaturansicht angehängter Grafiken
screen_171.gif  
  Mit Zitat antworten Zitat