LISTVIEW的系列问题,谁来告诉我?(100分)

  • 主题发起人 主题发起人 jame
  • 开始时间 开始时间
J

jame

Unregistered / Unconfirmed
GUEST, unregistred user!
1。怎么让某一行底色不同显示?
2。怎么让某一行文字加粗变色显示
3。怎么改变滑动块的大小?
 
1、2.试试下面的代码,在ListView的OnCustomDrawItem事件里——

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
R: TRect;
begin
with Sender.Canvas do begin
R := Item.DisplayRect(drBounds);
if Item.Index mod 2 = 1 then begin//对奇数行改变底色和字体
Brush.Color := clTeal;
Font.Color := clYellow;
Font.Style := Font.Style + [fsBold];
DefaultDraw := False;
end;
if cdsSelected in State then begin
Brush.Color := clHighLight;
Font.Color := clHighLightText;
end;
FillRect(R);
TextRect(R, R.Left + 2, R.Top, Item.Caption);
end;
DefaultDraw := False;
end;

3.我还没找到方法(SetScrollInfo好象不行);你要实现什么效果啊?
 
TO:dq谢谢你对以上问题的帮助,我的需要的效果是这样的,我有40000条左右纪录
需要写在一个listview里面,因此我想先写比如50条(显示出来)然后自己计算需要
将竖向滑动块缩小到什么位置,因此需要一个可以控制滑动块大小的方法。
 
可能还是要用到SetScrollInfo,但控制的时机和效果我不敢保证,一下代码供你参考——
var
SI: TScrollInfo;
begin
SI.cbSize := SizeOf(TScrollInfo);
SI.fMask := SIF_ALL;
GetScrollInfo(ListView1.Handle, SB_VERT, SI);
SI.nMax := 40000 * (ListView1.ClientHeight div ListView1.VisibleRowCount);
SetScrollInfo(ListView1.Handle, SB_VERT, SI, True);
end;
 
有相关的WIN调用嘛?:-)
非常感谢你的帮助也
 
接受答案了.
 
后退
顶部