急急急!!各位大虾,请问如何做出像IE地址栏中的Combobox一样在前面出小图标呢?(50分)

  • 主题发起人 主题发起人 Edgarlo
  • 开始时间 开始时间
应该在ownerdraw事件里把选的图标画上去吧
 
烦请各位举例说明详细,多谢!
 
各位我用以下方法实现时,为什么只能用style为csOwnerDrawFixed时出现图标,而且此时不能对内容进行编辑呢?
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with Combobox1.Canvas do
begin
FillRect(Rect);
Font.Name := ComboBox1.Items[Index];
Font.Size := 9;
Draw(Rect.Left+1, Rect.Top+1, Image1.Picture.Graphic);
TextOut(Rect.Left+Image1.ClientWidth+1, Rect.Top+1, ComboBox1.Items[Index]);
end;
end;
 
用C++Builder写的,不过我觉得有点笨
void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index,TRect &Rect, TOwnerDrawState State)
{
TComboBox * ComBox;
ComBox = (TComboBox *)Control;
ImageList1->Draw(ComBox->Canvas,Rect.Left ,Rect.Top ,Index,true);
ComBox->Canvas->TextOutA (Rect.Left+ImageList1->Width,Rect.Top,ComBox->Items->Strings[Index]);
}
 
ie的那个也是编辑的时候就没了,你处理一下onclick ,把它的style
改回原来的,就可以编辑了,完了以后再改一下。
 
多人接受答案了。
 
后退
顶部