如何让下拉组合框 有水平滚动条?(50分)

  • 主题发起人 主题发起人 delhpi
  • 开始时间 开始时间
D

delhpi

Unregistered / Unconfirmed
GUEST, unregistred user!
我写的过程实现不了这个效果?<br>请教大家,应该如何写,放在组合框什么事件中?<br><br>procedure AddCmbHScroolBar(combo:TcomboBox);<br>var<br>i,maxwidth:integer;<br><br>begin<br>if combo.items.count=0 then exit;<br>maxwidth := 0;<br><br>for i:=0 to combo.items.count-1 do<br> &nbsp;if maxwidth &lt; combo.canvas.textwidth(combo.items.Strings) then<br> &nbsp; &nbsp;maxwidth := combo.Canvas.textwidth(combo.items.strings);<br><br> &nbsp; &nbsp;sendmessage(combo.handle,CB_SETHORIZONTALEXTENT, maxwidth+2,0);<br>end;
 
设置滚动条好像很难,不过可以增加宽度<br>combobox1.perform(CB_SETDROPPEDWIDTH,combobox1.width+200,0);
 
这个办法也不错,不过肯定可以实现的。MS ACCESS VBA中的组合框,在内容较宽时,自动会有水平滚动条。<br><br>我是根据 设置列表框的水平滚动条代码,修改成上面的代码的。但好像不行。<br>不过,CB_SETHORIZONTALEXTENT这个常量,确实是有的。<br>sendmessage(combo.handle,CB_SETHORIZONTALEXTENT, maxwidth+2,0);<br>这句话,编译时,也没有提示错误。
 
combo.canvas.textwidth(combo.items.Strings) <br><br>当combo.items包含数字+中文,这种混合型字符时,textwidth 好像计算不对,宽度嫌小。
 
这是一因为中文一般都是等宽字体,而英文在不同字体下,可能不等宽,你可以设置成宋体9号字,那就对了
 
宋体9号<br><br>只有这一种情况?其他字体,字号就不行了?
 
接受答案了.
 
后退
顶部