2015-10-06 25 views
10

Aşağıdaki resimde vurguladığım küçük beyaz kareyi (siyahla) doldurmaya ihtiyacım var.Bir TVirtualStringTree öğesindeki kaydırma çubuğunun üstündeki alanı nasıl doldurabilirim?

Ek sütun eklemeyi denedim. PaintInfo.PaintRectangle'ı genişletmeyi denedim. Düşünebildiğim Tutar sütununda her ayarı denedim. Fikirlerim tükendi.

Bunun nasıl yapılacağı konusunda herhangi bir fikri olan var mı?

Özel başlık çizimini yapan kod İşte. koşul yanlış

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

Bu sade vanilya tema –

+1

gibi görünmüyor: Sütun nil çek sadece Column.Text almak için gerekli olduğundan

o kodunu değiştirmek gerekir farklı renk? VCL temaları? Özel boya? Başka bir şey? –

+0

Özel başlıkların nasıl çizildiğini gösteren kod eklendi. –

cevap

12

Sizin if (.... değil benim orijinal kod, with deyimi Affet). HpeBackground, o alan için Elemanlarda olduğunda asla doğru olmaz, çünkü bu durumda Sütun sıfırdır. Nasıl başlık bir var yaptın

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

Her zaman olduğu gibi, sen de erkeksin. Benim için olmalıydı. Çok teşekkürler. –