![]() |
VirtualStringTree: Einzelne Zelle einfärben
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:
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.
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;
Delphi-Quellcode:
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.
// 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; Vielen Dank im voraus. Gruß, Sven |
Re: VirtualStringTree: Einzelne Zelle einfärben
Dann nimm doch OnBeforePaint. Wenn du eine Möglichkeit hast, genau diese Zelle zu identifizieren, sollte das gehen.
Nach dem Löschen, muss er ja eh neu gezeichnet werden. Zur Not erzwingst du es halt (Update). |
Re: VirtualStringTree: Einzelne Zelle einfärben
Hallo Sven,
OnBeforeCellPaint klingt gut, oder? Gruß Hawkeye |
Re: VirtualStringTree: Einzelne Zelle einfärben
Ich habe es jetzt auch selbst herausgefunden. Nur habe ich AfterCellPaint genommen.
Delphi-Quellcode:
Was ist denn besser AfterCellPaint oder OnBeforeCellPaint?
procedure Tfrm_main.vst_network_subnetdetailsAfterCellPaint(
Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; CellRect: TRect); var SubnetDetailsData : TOSubnetDetailsData; begin // Spalte 0 einfärben, wenn es sich um ein Exclude handelt SubnetDetailsData := TOSubnetDetailsData(vst_network_subnetdetails.GetNodeData(Node)^); if vst_network_subnetdetails.Header.Columns[Column].Text = '' then begin if SubnetDetailsData.dhcp_exclude = 0 then begin TargetCanvas.Brush.Color := clBlack; TargetCanvas.FillRect(CellRect); end; end; end; |
Re: VirtualStringTree: Einzelne Zelle einfärben
Für ein besseres Verständnis solltest du dir die
![]() Gruß Hawkeye |
Re: VirtualStringTree: Einzelne Zelle einfärben
Danke. Das sind ja 801 Seiten. Bei Gelegenheit lesse ich es mir durch.
Benutze das OnBeforeCellPaint Event. Schönen Tag euch und nochmal vielen Dank. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 Uhr. |
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