Einzelnen Beitrag anzeigen

Benutzerbild von Zodi
Zodi

Registriert seit: 18. Jul 2017
Ort: Berlin
47 Beiträge
 
Delphi XE7 Ultimate
 
#1

VirtualStringTree Header Hintergrund

  Alt 15. Aug 2024, 18: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
  Mit Zitat antworten Zitat