我想要在Tcombobox里面实现以下功能:
比如我想在Tcombobox的items增加两
列,当你下拉的时候以这样的方式显示内容 员工号 姓名
0001 张三
但两者要有网格线隔开,就象Tstringgrid那样的显示
如果我从数据库取出数据的时候,能够动态响应的增加
网格. 高手我等你的到来!
比如我想在Tcombobox的items增加两
列,当你下拉的时候以这样的方式显示内容 员工号 姓名
0001 张三
但两者要有网格线隔开,就象Tstringgrid那样的显示
如果我从数据库取出数据的时候,能够动态响应的增加
网格. 高手我等你的到来!
combobox1.Items.add(Format('%-20s %20s',['0001','张三']))
combobox1.Items.add(Format('%-20s %-20s',['0001','张三']));
有一个WWCOMBOBOX就可以实现你的功能了..
不去用它。但一个人能够自己去实现自己想到的东西,那对自己也是一个认识
过程,使自己感到有一种成就感。这就是程序对我的一种魅力所在!
uses StrUtils;procedure TForm1.Button1Click(Sender: TObject);
var i_Loop:Integer;
begin
ComboBox1.Clear;
ComboBox1.Items.Add('员工号@姓名');
for i_Loop := 1 to 10 do
begin
combobox1.Items.Add(RightStr('00' + InttoStr(i_Loop),3) + '@' + '姓名' + InttoStr(i_Loop));
end;
end;procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var str:string;
i_Pos:Integer;
begin
Str:=ComboBox1.Items[Index];
i_Pos:=Pos('@',Str); Combobox1.Canvas.TextOut(Rect.Left,Rect.Top + 2,Copy(Str,1,i_Pos - 1));
Combobox1.Canvas.TextOut(Rect.Right div 2 + 2,Rect.Top + 2,Copy(Str,i_Pos + 1,Length(Str) - i_Pos)); ComboBox1.Canvas.MoveTo(Rect.Left,Rect.Top);
ComboBox1.Canvas.LineTo(Rect.Right,Rect.Top); ComboBox1.Canvas.MoveTo(Rect.Right div 2,Rect.Top);
ComboBox1.Canvas.LineTo(Rect.Right div 2,Rect.Bottom);
end;