专业的编程技术博客社区

网站首页 > 博客文章 正文

combobox的下拉框内容长度超过本身长度无法完全显示

baijin 2024-10-24 08:50:25 博客文章 11 ℃ 0 评论

最近在写一个小工具的时候遇到Delphi的Combobox控件中的内容长度超过了自己的长度,导致后面的内容显示不完全。查找资料后发现可以根据显示内容和Combobox的像素比较取最大值来解决这个问题。于是写了个过程 解决了这个问题。代码如下:

procedure FullyDisplay(aCbb: TComboBox);

var

i, vMaxWidth: Integer;

begin

vMaxWidth := aCbb.Width;

for i := 0 to aCbb.Items.Count - 1 do

begin

if vMaxWidth < aCbb.Canvas.TextWidth(aCbb.Items.Strings[i]) then

begin

vMaxWidth := aCbb.Canvas.TextWidth(aCbb.Items.Strings[i])+8;//经过测试显示字符的像素值加8之后才能完全显示出来。

SendMessage(aCbb.Handle, CB_SETDROPPEDWIDTH, vMaxWidth, 0);

end;

end;

end;

调用方法如下:

procedure TForm1.btn1Click(Sender: TObject);

begin

FullyDisplay(cbb1);

end;

效果图如下:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表