在combobox所在的窗口的Formshow事件里调用即可

  1. procedure SetComboBoxListWidth( AComboBox: TComboBox );
  2. var
  3. i: Integer;
  4. nMaxLen, nMinWidth: integer;
  5. nFontWidth: Integer;
  6. nCboLeft: integer;
  7. ctlCustom: TControl;
  8. begin
  9. nCboLeft := AComboBox.Left;
  10. ctlCustom := AComboBox;
  11. with AComboBox do
  12. begin
  13. nFontWidth := Round( Abs(Font.Height / 2 ) );
  14. nMaxLen:= 0;
  15. for i:=0 to Items.Count-1 do
  16. begin
  17. if length(Items[i])* nFontWidth > nMaxLen then
  18. nMaxlen:= length(Items[i])* nFontWidth+5;
  19. end;
  20. if Items.Count > DropDownCount then
  21. nMaxLen := nMaxLen + 20;
  22. if nMaxLen > Width then
  23. begin
  24. if Items.Count>DropDownCount then
  25. begin
  26. SendMessage( Handle, CB_SETHORIZONTALEXTENT, nMaxLen+5, 0 );
  27. {解决分辨率小导致的ComboboxList的宽度超出屏幕}
  28. //while 部分是用来取出combobox控件相对与窗体的横坐标
  29. while not (ctlCustom.Parent is TForm) do
  30. begin
  31. nCboLeft := nCboLeft + ctlCustom.Parent.Left;
  32. ctlCustom := ctlCustom.Parent;
  33. end;
  34. nMinWidth := Min(400, nMaxLen);                      // 使用不大于nMaxLen的数做比较
  35. if (nCboLeft + nMinWidth) > Screen.Width-25 then     // 不超出屏幕,并保留窗口滚动条宽度,约25
  36. nMinWidth := Screen.Width-25-nCboLeft;
  37. nMinWidth := Max(nMinWidth, Width);                  // 不小于控件自身宽度
  38. PostMessage(Handle, CB_SETDROPPEDWIDTH, nMinWidth, 0);
  39. end
  40. else
  41. PostMessage(Handle, CB_SETDROPPEDWIDTH, nMaxLen , 0);
  42. ShowHint := True;
  43. end
  44. else
  45. begin
  46. SendMessage( Handle, CB_SETHORIZONTALEXTENT, 0, 0 );
  47. PostMessage(Handle, CB_SETDROPPEDWIDTH, Width , 0);
  48. end;
  49. end;
  50. end;

http://blog.csdn.net/youthon/article/details/8179348

delphi自动调整combobox下拉列表宽度(PostMessage CB_SETDROPPEDWIDTH)的更多相关文章

  1. Qt Quick 常用元素:ComboBox(下拉列表) 与 ProgressBar(进度条)

    一.ComboBox ComboBox,即下拉列表框,由一个列表框和一个标签控件(或编辑控件)组成.ComboBox 的下拉列表是使用 Menu 实现的,列表内的每个条目对应一个 Menultem. ...

  2. 发掘ListBox的潜力(一):自动调整横向滚动条宽度

    <自绘ListBox的两种效果>一文帖出之后,从反馈信息来看,大家对这种小技巧还是很认同.接下来我将继续围绕ListBox写一系列的文章,进一步发掘ListBox的潜力,其中包括:自动调整 ...

  3. ExtJS ComboBox 下拉列表详细用法

    ExtJS ComboBox 下拉列表详细用法 标签: combobox 2015-06-14 23:23 5171人阅读 评论(2) 收藏 举报  分类: ExtJS(32)    目录(?)[+] ...

  4. EasyUI combobox下拉列表实现搜索过滤(模糊匹配)

    项目中的某个下拉列表长达200多个项,这么巨大的数量一个一个找眼镜都得看花,于是就得整了个搜索功能.看网上别人帖子有只能前缀匹配的方案,但只能前缀匹配的话用起来也不是很方便.于是就记录一下模糊匹配的方 ...

  5. 如何设置 ComboBox 下拉列表的高度或间距

    ComboBox 的下拉列表部分总是很挤,看起不舒服,但是设置了 ItemHeight 没用,怎么办呢? 首先设置一个较大的 ItemHeight 值,比如 20: 然后设置 ComboBox 的 D ...

  6. delphi button 实现下拉列表

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  7. easyui combobox下拉列表的多选值

    html: <input id="cc" class="easyui-combobox" value="" data-options= ...

  8. 45. ExtJS ComboBox 下拉列表详细用法

    转自:https://blog.csdn.net/luckypeng/article/details/46496151 ComboBox 是ExtJS中经常用到的控件,今天我们来讲一下它的一些用法. ...

  9. DataGridView列的宽度、行的高度自动调整

    注意:DataGridView控件是从.NET Framework 2.0版本开始追加的. 介绍一下DataGridView列的宽度和行的高度,根据单元格或Header的内容(一般是内容全部被表示)自 ...

随机推荐

  1. 【Z10】引水入城

    [题目链接]:http://noi.qz5z.com/viewtask.asp?id=z10 [题解] 对于第一问:从最上面那m个格子开始进行广搜就可以了: 然后看一下最下面那一行有没有被全部覆盖; ...

  2. 无线物联网中CoAP协议的研究与实现【转】

    无线物联网中CoAP协议的研究与实现 时间:2013-04-09 来源:电子科技 作者:汤春明,张 荧,吴宇平 关键字:CoAP   无线   物联网   协议 摘要:由于物联网中的很多设备都是资源受 ...

  3. 【Windows Defender Antivirus Service 永久禁用 】

    cmd 管理员运行 执行 reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender” /v “DisableAn ...

  4. 【????】最短路(short)

    问题描述: 给出N个点,M条无向边的简单图,问所有点对之间的最短路. 数据输入: 第1行两个正整数N,M(N<=100,M<=5000) 下面M行,每行3个正整数x, y, w,为一条连接 ...

  5. 浏览器jsp、html之间的关系

    浏览器html.jsp之间的关系 1.HTML能直接通过浏览器打开,而JSP仅仅能公布到Tomcatserver才干打开. 2.HTML中不能嵌套Java代码,而JSP中能够嵌套Java代码: 3.H ...

  6. Python正則表達式

    Python正則表達式 正則表達式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本号起添加了re 模块,它提供 Perl 风格的正則表達式模式. r ...

  7. 检索08- SQL语句中的go与use用法

    GO 1. 作用:向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号.2. 语法:一批 Transact-SQL 语句 GO 如 Select 1 Select 2 ...

  8. hive 导出数据的几种方式

    1.使用insert导出 这种方式的优点在于既可以导出到hdfs上还可以导出到本地目录 下面以导出emp表中数据为例 insert overwrite local directory "/o ...

  9. iOS开发 - Swift - 自己写的一个九宫格解锁的Demo

    前段时间做项目,公司要用到一个九宫格的手势解锁的需求. 虽然在很多地方都可以找到写好的第三方源码, 但是我的性格是不喜欢Ctrl+V的,于是自己凭着理解敲了一个出来,功能很简单,只是单纯的返回结果.附 ...

  10. 关于babel和babel-polyfill

    使用babel-cli命令babel xx -d xx把一个js文件转成了ES5的,并在package.json里加了"babel-polyfill": "^6.23.0 ...