Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
Delphi 12 Athens
|
Re: Treeview CustumDrawItem
10. Okt 2007, 21:00
Ich poste mal das Beispiel aus der Delphi 7 Hilfe:
Zitat:
Das folgende Beispiel zeigt, wie die Ereignisbehandlungsroutine OnCustomDrawItem Einträge und Linien des Baumdiagramms zeichnet, nachdem die Ereignisbehandlungsroutine OnCustomDraw den Hintergrund ausgefüllt hat.
Delphi-Quellcode:
procedure TCustomDrawForm.TVCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
NodeRect: TRect;
begin
with TV.Canvas do
begin
// Wenn DefaultDraw True ist, können die Schrifteigenschaften des Knotens
// geändert werden. Bei DefaultDraw = True zeichnet Windows die
// Schaltflächen und ignoriert unsere Schrifthintergrundfarben.
// Stattdessen wird die Eigenschaft Color von TreeView verwendet.
if cdsSelected in State then
begin
Font.Assign(SelectedFontDialog.Font);
Brush.Color := SelBkgColorDialog.Color;
end;
DefaultDraw := FDefaultDrawItem;
// Bei DefaultDraw = False müssen Sie alle Einträge selbst zeichen,
// einschließlich Schaltflächen, Linien, Grafiken und Text.
if not DefaultDraw then
begin
// Auswahlrechteck zeichnen
if cdsSelected in State then
begin
NodeRect := Node.DisplayRect(True);
FillRect(NodeRect);
end;
NodeRect := Node.DisplayRect(False);
if None1.Checked then
// Kein Bitmap, daher in der Hintergrundfarbe zeichnen
begin
Brush.Color := BkgColorDialog.Color;
Brush.Style := FBrushStyle;
FillRect(NodeRect)
end
else
// Nicht über das Hintergrund-Bitmap zeichnen
Brush.Style := bsClear;
NodeRect.Left := NodeRect.Left + (Node.Level * TV.Indent);
// NodeRect.Left entspricht jetzt dem linken Teil der erweiterten Schaltfläche
DrawButton(NodeRect, Node);
NodeRect.Left := NodeRect.Left + TV.Indent + FButtonSize;
// NodeRect.Left ist jetzt der linke Teil der Grafik
DrawImage(NodeRect, Node.ImageIndex);
NodeRect.Left := NodeRect.Left + ImageList.Width;
// Nun kann der Text endlich ausgegeben werden
TextOut(NodeRect.Left, NodeRect.Top, Node.Text);
end;
end;
end;
Man beachte das Node.DisplayRect
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|