Форум: "Начинающим";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
Внизрисование в treeview Найти похожие ветки
← →
webpauk (2007-05-10 20:26) [0]Подскажите позволяет ли TtreeView отрисовывать TtreeNode разными цветами?
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
Rect: TRect;
fI, fPos: Integer;
begin
with TTreeView(Sender).Canvas do
begin
Brush.Color:=clWindow;
if (cdsSelected in State) then
begin
Brush.Color:=clHighlight;
Font.Color:=clHighlightText;
Rect:=Node.DisplayRect(True);
FillRect(Rect);
end;
Font.Color:=clBlack;
fPos:=0;
for fI := 1 to Length(Node.text) do
begin
Font.Color:=ColorArray[fI-1];
TextOut(Rect.Left+fPos, Rect.Top, Node.Text[fI]);
fPos:=fPos+TextWidth(Node.Text[fI]);
end;
end;
end;
раскрашивает только последним цветом, а надо чтобы все буквы отличались...
← →
Loginov Dmitry © (2007-05-10 22:54) [1]Без промежуточного буфера действительно чесь нихотит.
Вот такое, к примеру, работает:
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
var
Rect: TRect;
Bitmap: TBitmap;
begin
Rect := Node.DisplayRect(True);
Bitmap := TBitmap.Create;
try
Bitmap.Width := Rect.Right - Rect.Left;
Bitmap.Height := Rect.Bottom - Rect.Top;
with Bitmap.Canvas do
begin
DefaultDraw := False;
Font.Color := clGreen;
TextOut(0, 0, "111");
Font.Color := clRed;
TextOut(TextWidth("111"), 0, "222");
Sender.Canvas.Draw(Rect.Left, Rect.Top, Bitmap);
end;
finally
Bitmap.Free;
end;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.043 c