combobox 的 listbox 重绘的问题 (200分)

  • 主题发起人 主题发起人 yelloant
  • 开始时间 开始时间
Y

yelloant

Unregistered / Unconfirmed
GUEST, unregistred user!
1.combobox 的 listbox 的句柄怎样得到。请给详细代码,希望已通过测试
2.combobox 的 listbox 的scrollbar 怎样能实现 flat style
3.combobox de listbox 怎样能实现包括 scrollbar在内的重绘
 
你想要做什么?
 
没听太明白,不知道你是不是的这个东西

步骤:
1.将ComboBox的Sytle属性设为:csOwnerDrawVariable 或csOwnerDrawFixed
2.用几个隐形的Image保存你的图片
3.用ComboBox.Items的Add0bject方法加下文字和图片
4.在ComboBox的OnDrawItem事件画出来你想要的东西
5.Scrollbar会自动生成,但如何变flat我就不得而知了,那是控件自内部,
不过你可以找一个第三方控件XP风格的ComboBox,再如法炮制,就应该能搞定(我猜的)

下面有个例子是做色彩选择的ComboBox的,用D5做的,没想到D6自带此控件,ft!

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.style:=csOwnerDrawVariable;
ComboBox1.Items.Clear;
ComboBox1.items.AddObject('',image1.Picture.Bitmap);
ComboBox1.items.AddObject('',image2.Picture.Bitmap);
ComboBox1.items.AddObject('',image3.Picture.Bitmap);
ComboBox1.items.AddObject('',image4.Picture.Bitmap);
ComboBox1.items.AddObject('',image5.Picture.Bitmap);
ComboBox1.items.AddObject('',image6.Picture.Bitmap);
ComboBox1.items.AddObject('',image7.Picture.Bitmap);
ComboBox1.items.AddObject('',image8.Picture.Bitmap);
ComboBox1.items.AddObject('',image9.Picture.Bitmap);
end;
procedure TForm1.combobox1DrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
bmp:TBitmap;
begin
with combobox1.Canvas do
begin
FillRect(Rect);
bmp:=TBitmap(combobox1.Items.Objects[Index]); //显示图形
draw(Rect.left,Rect.top,bmp);
end;
end;
 
后退
顶部