Registriert seit: 19. Jul 2017
Ort: Berlin
47 Beiträge
Delphi XE7 Ultimate
|
VirtualStringTree Header Hintergrund
15. Aug 2024, 19:53
Hi Delphianer
Ich übe mich mit dem VirtualStringTree und habe versucht die Header Hintergrund Farfe zu ändern.
Dies habe ich geschafft aber nun sind leider die Seperatoren weg.
Was mache ich da falsch?
hier mal der Code
Delphi-Quellcode:
procedure TForm1.VSTHeaderDrawQueryElements(Sender: TVTHeader; var PaintInfo: THeaderPaintInfo; var Elements: THeaderPaintElements);
begin
Elements := [hpeBackground, hpeText];
end;
procedure TForm1.VSTHeaderDraw(Sender: TVTHeader; HeaderCanvas: TCanvas; Column: TVirtualTreeColumn; R: TRect; Hover, Pressed: Boolean; DropMark: TVTDropMarkMode);
begin
// Hintergrund des Headers setzen
HeaderCanvas.Brush.Color := clSkyBlue; // Hintergrundfarbe
HeaderCanvas.FillRect(R);
// Textfarbe und -eigenschaften einstellen
HeaderCanvas.Font.Color := clWhite; // Textfarbe
HeaderCanvas.Font.Name := 'Arial'; // Schriftart
HeaderCanvas.Font.Size := 10; // Schriftgröße
DrawText(HeaderCanvas.Handle, PChar(Column.Text), Length(Column.Text), R,
DT_CENTER or DT_VCENTER or DT_SINGLELINE);
// Separatoren zeichnen
HeaderCanvas.Pen.Color := clBlack; // Farbe der Separatoren
HeaderCanvas.Pen.Width := 1; // Breite der Separatorenlinie
// Separatoren an den Rändern der Spalten zeichnen
HeaderCanvas.MoveTo(R.Right - 1, R.Top);
HeaderCanvas.LineTo(R.Right - 1, R.Bottom);
// Optional: Separator am unteren Rand des Headers (falls benötigt)
HeaderCanvas.MoveTo(R.Left, R.Bottom - 1);
HeaderCanvas.LineTo(R.Right, R.Bottom - 1);
end;
procedure TForm1.VSTAdvancedHeaderDraw(Sender: TVTHeader; var PaintInfo: THeaderPaintInfo; const Elements: THeaderPaintElements);
begin
//
if hpeBackground in Elements then
begin
PaintInfo.TargetCanvas.Brush.Color := clSkyBlue; // Hintergrundfarbe
PaintInfo.TargetCanvas.FillRect(PaintInfo.PaintRectangle);
end;
if hpeText in Elements then
begin
PaintInfo.TargetCanvas.Font.Color := clBlack; // Textfarbe
DrawText(PaintInfo.TargetCanvas.Handle, PChar(PaintInfo.Column.Text), Length(PaintInfo.Column.Text), PaintInfo.PaintRectangle,
DT_CENTER or DT_VCENTER or DT_SINGLELINE);
end;
end;
Grüsse Zodi
Pascal
|
|
Zitat
|