我这段代码为什么不能 在listview report中
隔行换色??implementationuses DateUtils;{$R *.dfm}procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
if odd(item.Index) then
item.ListView.Canvas.Brush.Color:=$00FEF2DE
else
item.ListView.Canvas.Brush.Color:=clwindow;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from pjinfo order by pjbianhao');
open;
first;
end; while not ADOQuery1.Eof do
begin
with ListView1.Items.Add do
begin
Caption:=ADOQuery1.fieldbyname('pjbianhao').AsString;
SubItems.Add(ADOQuery1.fieldbyname('pjename').AsString);
SubItems.Add(ADOQuery1.fieldbyname('pjpinyin').AsString);
SubItems.Add(ADOQuery1.fieldbyname('pjchexing').AsString);
SubItems.Add(ADOQuery1.fieldbyname('pjjiage').AsString);
SubItems.Add(ADOQuery1.fieldbyname('pjmemo').AsString);
end;
ADOQuery1.Next;
end;
ADOQuery1.close;end;end.
隔行换色??implementationuses DateUtils;{$R *.dfm}procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
if odd(item.Index) then
item.ListView.Canvas.Brush.Color:=$00FEF2DE
else
item.ListView.Canvas.Brush.Color:=clwindow;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from pjinfo order by pjbianhao');
open;
first;
end; while not ADOQuery1.Eof do
begin
with ListView1.Items.Add do
begin
Caption:=ADOQuery1.fieldbyname('pjbianhao').AsString;
SubItems.Add(ADOQuery1.fieldbyname('pjename').AsString);
SubItems.Add(ADOQuery1.fieldbyname('pjpinyin').AsString);
SubItems.Add(ADOQuery1.fieldbyname('pjchexing').AsString);
SubItems.Add(ADOQuery1.fieldbyname('pjjiage').AsString);
SubItems.Add(ADOQuery1.fieldbyname('pjmemo').AsString);
end;
ADOQuery1.Next;
end;
ADOQuery1.close;end;end.
你到 这个ListView1CustomDrawItem 时间里就可以了的
调试列表中:OnListView1DrawItem不能为空!
再者是你的:if odd(item.Index) then 有问题!