Delphi的ComBobox控件下拉内容显示不全的解决方法

procedure TForm1.rzbtbtn1Click(Sender: TObject);
var
    _I,_MaxWidth :integer;
begin
    cbb1.Items.Add('abcd');
    cbb1.Items.Add('abcdefghijqlmxopqrst');
    cbb1.Items.Add('https://blog.csdn.net/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.csdn.net/weixin_41660162/article/details/79828210')));
    ShowMessage('改变后的ComBobox的最长:'+inttostr(_MaxWidth));
end;


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值