listbox中item颜色改变 (100分)

  • 主题发起人 云飘飘
  • 开始时间

云飘飘

Unregistered / Unconfirmed
GUEST, unregistred user!
listbox中可否将选中的item改用不同颜色显示,并在以后保持此颜色,直到再次改变?
需要更改颜色的item可能不止一项
 
自绘一下,增加一个列,用于保存对应的颜色
 
怎么自绘呀?
item没有相应的color属性, 颜色必须另外保存,是吗?
 
我也不会,用个笨办法不知可不可以,加上一个Edit控件,设置一些属性后
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
....
edit1.Top:=listbox1.ItemRect(listbox1.ItemIndex).Top;
edit1.Left:=listbox1.ItemRect(listbox1.ItemIndex).Left;
edit1.Text:=listbox1.Items[listbox1.ItemIndex];
....
 
根据我的实践,我发现没有办法达到这个目的,
只能改变整个listbox的颜色和字体
 
首先设置:listbox1.stype:=lbOwnerDrawFixed;
然后在listbox1的事件DrawItem如下:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with ListBox1.Canvas do
begin
if index mod 2 = 1 then
begin
Font.Color:=clred;
Brush.Color:=clBlue;
end else
begin
Font.Color:=clBlue;
Brush.Color:=clred;
end;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, listbox1.Items[index]);
end;
end;

关于保存的问题我想你可以根据Index,用数组等保存都很容易的.
 
Thank you very much!
成了
 
顶部