Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

VirtualStringTree: Einzelne Zelle einfärben

  Alt 27. Nov 2009, 10:28
Moin zusammen,

wie färbe ich eine bestimme Zeiles eines VST ein, wenn ein bestimmter Wert des jeweiligen Datensetzes existiert?

Mein bisheriger Code färbt im Wechsel die Zeilen.
Delphi-Quellcode:
procedure Tfrm_main.vst_network_subnetdetailsAfterItemErase(
  Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode;
  ItemRect: TRect);
var
 SubnetDetailsData : TOSubnetDetailsData;
begin
 if Sender.Selected[Node] then
   Exit;

 if Odd(Node.Index) then
   TargetCanvas.Brush.Color := $F8F8F8
 else
   TargetCanvas.Brush.Color := clWhite;

 TargetCanvas.FillRect(ItemRect);
end;
Wenn ich jetzt folgendes hinzufüge, färbt er leder die ganze Zeile ein. Ich möchte aber nur die Zelle in der 1.Spalte färben.
Delphi-Quellcode:
// Spalte 0 einfärben, wenn es sich um ein Exclude handelt
 SubnetDetailsData := TOSubnetDetailsData(vst_network_subnetdetails.GetNodeData(Node)^);
 if SubnetDetailsData.dhcp_exclude = 0 then
 begin
   TargetCanvas.Brush.Color := clNavy;
   TargetCanvas.FillRect(ItemRect);
 end;
Wie müsste ich meinen Code anpassen, damit das klappt oder muss ich ein anderes Ereignis nehmen? Leider gibt es im AfterItemErase Event keinen Bezug auf die Spalte.

Vielen Dank im voraus. Gruß, Sven
  Mit Zitat antworten Zitat