2015-10-06 11 views
10

Mam potrzebę wypełnienia (czarnym) małym białym kwadratem, który podkreśliłem na poniższym obrazku.Jak wypełnić obszar nad paskiem przewijania w TVirtualStringTree?

Próbowałem dodać dodatkowe kolumny. Próbowałem rozszerzyć PaintInfo.PaintRectangle. Próbowałem każdego ustawienia w kolumnie Kwota, o której mogę pomyśleć. Nie mam pomysłów.

Ktoś ma jakieś pomysły, jak to zrobić?

Oto kod, który wykonuje niestandardowy rysunek nagłówka. (Wybacz oświadczenie with, nie mój oryginalny kod ....)

procedure TWinPOSReceiptPluginForm.ReceiptDisplayTreeAdvancedHeaderDraw(Sender: TVTHeader; var PaintInfo: THeaderPaintInfo; 
    const Elements: THeaderPaintElements); 
var 
    TempText: string; 
begin 
    with PaintInfo do 
    begin 
     // First check the column member. If it is NoColumn then it's about the header background. 

     if (hpeBackground in Elements) and (Column <> nil) then begin 
      TempText := Column.Text; 
      TargetCanvas.Brush.Color := $444444; 
      TargetCanvas.FillRect(PaintRectangle); 
      TargetCanvas.Font.Color := clWhite; 
      TargetCanvas.Font.Style := []; 
      TargetCanvas.TextOut (PaintRectangle.Left + 3, PaintRectangle.Top + 3, TempText); 
      end; 
    end; 
end; 

enter image description here

+1

To nie wygląda jak zwykły waniliowy tematu –

+1

Jak zrobić nagłówek mieć inny kolor? Motywy VCL? Niestandardowa farba? Coś innego? –

+0

Dodano kod pokazujący sposób rysowania nagłówka niestandardowego. –

Odpowiedz

12

Wasza jeśli warunek jest źle. To nigdy nie będzie prawdą, gdy hpeBackground jest w elementach dla tego obszaru, ponieważ w tym przypadku kolumna jest zerowa.

Ponieważ kontrola zerowa Kolumna jest potrzebna tylko dla uzyskania Column.Text trzeba zmienić ten kod:

if hpeBackground in Elements then 
begin 
    if Column <> nil then 
    TempText := Column.Text; 
    TargetCanvas.Brush.Color := $444444; 
+0

Jesteś, jak zawsze, mężczyzną. Powinienem się przydać. Dziękuję bardzo. –

Powiązane problemy