Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#1

TTreeView nodes mit verschiedenen Icons

  Alt 13. Mai 2014, 08:44
Hallo,

ich möchte den einzelnen TreeNodes abhängig von dem TreeNode.data Object Icons zuweisen/ bzw. anzeigen lassen.

Dazu müsste doch das Ereignis: OnCustomDrawItems geeignet sein.

Delphi-Quellcode:
procedure TpwrManager.pmTreeCustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  decorateNode(Node, Node.Data);
end;
Dem TreeView ist eine ImageList zugeordnet.

Delphi-Quellcode:
procedure TPwrManager.decorateNode(node: TTreeNode; data: TObject);
var
  deviceType: TDeviceType;
begin
  if data is TDevice then
    begin
      deviceType := (data as TDevice).deviceType;
      if assigned(deviceType) then
       begin
         case deviceType.typeClass of
           a: begin
                node.ImageIndex := ord(tiClassA_unknown);
              end;
           b: begin
                node.ImageIndex := ord(tiClassB_unknown);
              end;
         end;

         case (data as TDevice).powerState of
           true: node.ImageIndex := node.ImageIndex -2;
           false: node.ImageIndex := node.ImageIndex -1;
         end;
       end

      node.ExpandedImageIndex := node.ImageIndex;
      node.SelectedIndex := node.ImageIndex;
    end;
end;
Der Tree wird gezeichnet wie geplant.

Nur wenn ich Elemente des Trees aufklappe oder den gesamten Tree Expandiere.
Dann läuft die CPU auf 100%.

Das Programm beschäftigt sich dann nur noch mit dem Neuzeichnen.

Habe ich da einen dicken Denkfehler oder etwas übersehen?

Oder ist das die falsche Herangehenweise und ich sollte
den Node gleich bei der Erstellung das richtige Bild zuweisen?

Aber wie mache es dann wenn sich der "Status" des Nodes (bzw. des Objects dahinter)
geändert hat und ich das durch ein anderes Bild visualisieren möchte?

Grüße
Klaus
Klaus

Geändert von Klaus01 (13. Mai 2014 um 09:42 Uhr)
  Mit Zitat antworten Zitat