uj5u.com熱心網友回復:
1, 用THeadControl替換columnheader,OnDrawSection事件里面可以畫你想要的顏色,形狀。2,ListView設定HeaderDefaultDrawing := False,在OnDrawHeader事件里面畫。
2個方法都要自己完全畫完頭部,單單設定顏色是不行的
uj5u.com熱心網友回復:
有代碼嗎?
uj5u.com熱心網友回復:
HeaderDefaultDrawing這個屬性沒有OnDrawHeader這個事件也沒有
我用的delphi7
uj5u.com熱心網友回復:
procedure TForm1.RzListView1DrawHeader(Sender: TObject; Canvas: TCanvas;
Index: Integer; Rect: TRect);
var
bmp : TBitmap;
Str: string;
ARect: TRect;
begin
bmp := TBitmap.Create;
try
bmp.SetSize(1, Rect.Bottom - Rect.Top);
bmp.Canvas.Brush.Color := clBlue;
bmp.Canvas.FillRect(bmp.Canvas.ClipRect);
ARect := Rect;
if Index = RzListView1.Columns.Count - 1 then
begin
ARect.Right := ARect.Right
end;
Canvas.StretchDraw(ARect, bmp);
Canvas.Pen.Color := $00838383;
Canvas.MoveTo(ARect.Right - 1, ARect.Top + 1);
Canvas.LineTo(ARect.Right - 1, ARect.Bottom - 1);
if Index = 0 then
begin
Canvas.Pen.Color := $FF6E6E6E;
Canvas.MoveTo(ARect.Left , ARect.Top + 1);
Canvas.LineTo(ARect.Left , ARect.Bottom - 1);
end;
Str := RzListView1.Columns[Index].Caption;
ADrawText(Canvas, Str, ARect);
finally
bmp.Free;
end;
end;
可以在bmp里面裝圖片,效果會比較好,THeadControl也是差不多的寫法
uj5u.com熱心網友回復:
你用的是raize里的,delphi自帶的listview不可以嗎?
uj5u.com熱心網友回復:
忘了,我用的是TRzListView,你可以用THeadControl來替換就行了uj5u.com熱心網友回復:
THeadControl如何和listview關聯起來呢?uj5u.com熱心網友回復:
你的raize是哪個版本,我的沒有DrawHeader事件
uj5u.com熱心網友回復:
好像不能關聯,要通過里面的事件來更改TlistView的大小,比如OnSectionResize,OnSectionTrack等.如果沒有特殊要求,推薦用TRzListView來做,比較方便uj5u.com熱心網友回復:
5.2,OnDrawHeader,應該都有吧uj5u.com熱心網友回復:
bmp.SetSize(1, Rect.Bottom - Rect.Top); bmp無此方法ADrawText(Canvas, Str, ARect);這個方法是你自己寫的?
你delphi是哪個版本?
uj5u.com熱心網友回復:
procedure TForm1.ADrawText(Canvas: TCanvas; AText: string; ARect: TRect);
var
H, W, X, Y: Integer;
begin
Canvas.Brush.Style := bsClear;
H := Canvas.TextHeight('a');
w := Canvas.TextWidth(AText);
X := ARect.Left + (ARect.Right - ARect.Left - W) div 2;
Y := ARect.Top + (ARect.Bottom - ARect.top - H) div 2;
if X < ARect.Left then X := ARect.Left;
Canvas.TextOut(x, y, AText);
end;
可以用Bmp.weidth, bmp.height設定其大小,我用的是2007
uj5u.com熱心網友回復:
1 獲取listview的句柄 ListView_GetHeader();2 用自己的視窗程序替換默認的視窗程序 setwindowlong
3 在視窗程序的里處理WM_PAINT訊息。參考樓上
可以參考rz的listview怎么處理的
uj5u.com熱心網友回復:
太高深了,不會
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114613.html
標籤:VCL組件開發及應用
上一篇:delphi Tchart
