仮想文字列ツリーの特定の行のテキストの色を変更したいと考えています。出来ますか?
6263 次
3 に答える
11
OnBeforeCellPaint イベントを使用します。
procedure TForm1.VirtualStringTree1BeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect);
begin
if Node.Index mod 2 = 0 then
begin
TargetCanvas.Brush.Color := clFuchsia;
TargetCanvas.FillRect(CellRect);
end;
end;
これにより、1 行おきに背景が変更されます (行が同じレベルにある場合)。
于 2010-07-23T02:24:46.430 に答える
7
特定の行のテキストの色を制御するには、OnPaintText イベントを使用して、TargetCanvas.Font.Color を設定します。
procedure TForm.TreePaintText(Sender: TBaseVirtualTree; const TargetCanvas:
TCanvas; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType);
var
YourRecord: PYourRecord;
begin
YourRecord := Sender.GetNodeData(Node);
// an example for checking the content of a specific record field
if YourRecord.Text = 'SampleText' then
TargetCanvas.Font.Color := clRed;
end;
このメソッドは、TreeView 内のすべてのセルに対して呼び出されることに注意してください。Node ポインターは、行の各セルで同じです。したがって、複数の列があり、特定の列の内容に従って行全体の色を設定したい場合は、コード例のように指定された Node を使用できます。
于 2012-07-11T10:18:06.670 に答える