procedure TForm1.rzbtbtn1Click(Sender: TObject);
var
_I,_MaxWidth :integer;
begin
cbb1.Items.Add('abcd');
cbb1.Items.Add('abcdefghijqlmxopqrst');
cbb1.Items.Add('https://blog.youkuaiyun.com/weixin_41660162/article/details/79828210');
cbb1.Items.Add('1213');
_MaxWidth := cbb1.Width;
for _I := 0 to cbb1.Items.Count - 1 do
begin
//设置控件下拉框的宽度自适应(根据像素比较)
Canvas.Font.Size := 14;//经试验字体设置为14,刚刚好完全显示,但是ComBobox的Font.size = 12
if _MaxWidth < Canvas.TextWidth(cbb1.Items.Strings[_I]) then
begin
_MaxWidth := Canvas.TextWidth(cbb1.Items.Strings[_I]);
//第一个参数是下拉框组件的句柄,第二个参数是要发送的消息,第三个参数是要设定的宽度,第四个参数未使用
SendMessage(cbb1.Handle, CB_SETDROPPEDWIDTH, _MaxWidth, 0);
end;
end;
ShowMessage('最长的项的像素:'+IntToStr(Canvas.TextWidth('https://blog.youkuaiyun.com/weixin_41660162/article/details/79828210')));
ShowMessage('改变后的ComBobox的最长:'+inttostr(_MaxWidth));
end;