求助,关于delphi TCombobox控件下拉框的问题。

qq_35967445 2017-11-23 09:25:53
我想问下,我用TCombobox创建了个Combobox1控件,设置属性为输入字符自动查找StringList里匹配的信息(StringList里的信息是我事先弄好的),然后下拉框显示出来,但是当StringList里没有和我字符匹配的信息时,下拉框也会出来,虽然只出来一条,而且是空的下拉框,但是如何能去掉这个下拉框,当没有匹配信息时,不显示下拉框呢。
还个问题,在win7当Combobox1下拉框的信息变化后,他的下拉框大小还是原先的,这样会空出一大块空白,如何让下拉框的边框的大小自适应显示信息所占空间的大小呢?
...全文
1141 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35967445 2017-11-30
  • 打赏
  • 举报
回复
解决了一个问题,本来分了分,然后无满意结帖,好像分的分分不出去,第一次发帖,不太会用,没收到分只能抱歉了。
qq_35967445 2017-11-28
  • 打赏
  • 举报
回复
引用 17 楼 lyhoo163 的回复:
你所说的问题,都是Combobox的Items中字符串的数量,所决定。 1、Items为空时,它就显示一个空行; 2、当录入的字符串,就是Items一行(字符串)时,它就是一个全选; 3、你的代码中,每录入字符时,就要搜索匹配的Items。这可以在Onchange事件中匹配。
好吧,那就是没办法做成像delphi自带的open文件框那样的效果了...
比特灵 2017-11-28
  • 打赏
  • 举报
回复
学习了
lyhoo163 2017-11-28
  • 打赏
  • 举报
回复
你所说的问题,都是Combobox的Items中字符串的数量,所决定。 1、Items为空时,它就显示一个空行; 2、当录入的字符串,就是Items一行(字符串)时,它就是一个全选; 3、你的代码中,每录入字符时,就要搜索匹配的Items。这可以在Onchange事件中匹配。
qq_35967445 2017-11-27
  • 打赏
  • 举报
回复
一开始是图一,一切正常,接着输着输着就变成图二了,下拉框经常失效。(而且会经常输入一个字符就自动全选) 然后是图三,没小箭头按钮。 我希望效果可以是图四和图五那样的。
qq_35967445 2017-11-27
  • 打赏
  • 举报
回复
lyhoo163 2017-11-26
  • 打赏
  • 举报
回复
截个图说明一下!
qq_35967445 2017-11-26
  • 打赏
  • 举报
回复
就没有和delphi->File菜单->Open那个目录框的文件名那的下拉框一样的效果的吗
qq_35967445 2017-11-26
  • 打赏
  • 举报
回复
引用 11 楼 yisuylm 的回复:
[quote=引用 9 楼 qq_35967445 的回复:] [quote=引用 4 楼 lyhoo163 的回复:] 1、Combobox 默认,没有匹配字段,即Items为空时,可以下拉条为一个空框,表示无匹配的字符。 2、解决此问题,可能通过设置Combobox的style属性来解决,打开下拉条和关闭下拉条。 3、代码:;在Onchange事件中,加入代码即可:

  if ComboBox.Items.Count>0
    then ComBoBox13.style:=csDropDown
    else ComBoBox13.style:=csSimple;
4、效果截图:
这方法我本来也想到了,但有些问题啊。 1.切换完Style后,编辑框会变为全选,无法追加内容继续查询,会变成清空内容然后显示输入的字符。 2.切换时,下拉框向下的小箭头一会出现一会隐藏,不是很好,还影响效率。 3.反应迟钝,比如我有数据ssss,首先输入s,下拉框会出现ssss,但当我输入s1,然后退格清空s1,在输入s,那么下拉框没有任何反应,要再输入一次s才能有反应。 另一位仁兄对我第二问的回答完美解决了,感谢,感谢。[/quote] 我的开发环境就那个现在不能用,我记得这样就可以了,设置完style后,加一句 ComboBox1.SelStart:=maxint; [/quote] 试了不行啊,我开头有用clear 情况列表,不知道是不是这个影响了。
日月路明 2017-11-26
  • 打赏
  • 举报
回复
引用 9 楼 qq_35967445 的回复:
[quote=引用 4 楼 lyhoo163 的回复:] 1、Combobox 默认,没有匹配字段,即Items为空时,可以下拉条为一个空框,表示无匹配的字符。 2、解决此问题,可能通过设置Combobox的style属性来解决,打开下拉条和关闭下拉条。 3、代码:;在Onchange事件中,加入代码即可:

  if ComboBox.Items.Count>0
    then ComBoBox13.style:=csDropDown
    else ComBoBox13.style:=csSimple;
4、效果截图:
这方法我本来也想到了,但有些问题啊。 1.切换完Style后,编辑框会变为全选,无法追加内容继续查询,会变成清空内容然后显示输入的字符。 2.切换时,下拉框向下的小箭头一会出现一会隐藏,不是很好,还影响效率。 3.反应迟钝,比如我有数据ssss,首先输入s,下拉框会出现ssss,但当我输入s1,然后退格清空s1,在输入s,那么下拉框没有任何反应,要再输入一次s才能有反应。 另一位仁兄对我第二问的回答完美解决了,感谢,感谢。[/quote] 我的开发环境就那个现在不能用,我记得这样就可以了,设置完style后,加一句 ComboBox1.SelStart:=maxint;
qq_35967445 2017-11-25
  • 打赏
  • 举报
回复
补充下,我想要delphi->File菜单->Open那个目录框的文件名那的下拉框那种效果。
qq_35967445 2017-11-25
  • 打赏
  • 举报
回复
引用 4 楼 lyhoo163 的回复:
1、Combobox 默认,没有匹配字段,即Items为空时,可以下拉条为一个空框,表示无匹配的字符。 2、解决此问题,可能通过设置Combobox的style属性来解决,打开下拉条和关闭下拉条。 3、代码:;在Onchange事件中,加入代码即可:

  if ComboBox.Items.Count>0
    then ComBoBox13.style:=csDropDown
    else ComBoBox13.style:=csSimple;
4、效果截图:
这方法我本来也想到了,但有些问题啊。 1.切换完Style后,编辑框会变为全选,无法追加内容继续查询,会变成清空内容然后显示输入的字符。 2.切换时,下拉框向下的小箭头一会出现一会隐藏,不是很好,还影响效率。 3.反应迟钝,比如我有数据ssss,首先输入s,下拉框会出现ssss,但当我输入s1,然后退格清空s1,在输入s,那么下拉框没有任何反应,要再输入一次s才能有反应。 另一位仁兄对我第二问的回答完美解决了,感谢,感谢。
lyhoo163 2017-11-24
  • 打赏
  • 举报
回复
要汉字与拼音对应的列表,再Onchange事件中算法。
秋天之落叶 2017-11-24
  • 打赏
  • 举报
回复
引用 4 楼 lyhoo163 的回复:
1、Combobox 默认,没有匹配字段,即Items为空时,可以下拉条为一个空框,表示无匹配的字符。 2、解决此问题,可能通过设置Combobox的style属性来解决,打开下拉条和关闭下拉条。 3、代码:;在Onchange事件中,加入代码即可:

  if ComboBox.Items.Count>0
    then ComBoBox13.style:=csDropDown
    else ComBoBox13.style:=csSimple;
4、效果截图:
借贴追问一下,录入拼音字母匹配汉字名称,你是把汉字对应拼音全部列出查询,还是有其它算法?
lyhoo163 2017-11-24
  • 打赏
  • 举报
回复
1、Combobox 默认,没有匹配字段,即Items为空时,可以下拉条为一个空框,表示无匹配的字符。
2、解决此问题,可能通过设置Combobox的style属性来解决,打开下拉条和关闭下拉条。
3、代码:;在Onchange事件中,加入代码即可:

if ComboBox.Items.Count>0
then ComBoBox13.style:=csDropDown
else ComBoBox13.style:=csSimple;

4、效果截图:

日月路明 2017-11-24
  • 打赏
  • 举报
回复
引用 4 楼 lyhoo163 的回复:
1、Combobox 默认,没有匹配字段,即Items为空时,可以下拉条为一个空框,表示无匹配的字符。 2、解决此问题,可能通过设置Combobox的style属性来解决,打开下拉条和关闭下拉条。 3、代码:;在Onchange事件中,加入代码即可:

  if ComboBox.Items.Count>0
    then ComBoBox13.style:=csDropDown
    else ComBoBox13.style:=csSimple;
4、效果截图:
秋天之落叶 2017-11-24
  • 打赏
  • 举报
回复
引用 6 楼 lyhoo163 的回复:
要汉字与拼音对应的列表,再Onchange事件中算法。
哦,多谢指教
秋天之落叶 2017-11-23
  • 打赏
  • 举报
回复
你说的第二个问题,ComboBox1.DropDownCount:=n;可以控制下拉框显示的行数,ComboBox1.Items.Count计算下拉框行数,其他的自己写一下就行。
秋天之落叶 2017-11-23
  • 打赏
  • 举报
回复
没看懂你的意思,按我理解的意思是,没有匹配字段的时候下拉框也会打开下拉条,且是个空框? 没看到代码,当查询结果为null时,你可以暂时设置ComboBox1.Enabled:=False;可以吗?查询前设置为true。
qq_35967445 2017-11-23
  • 打赏
  • 举报
回复
没人会吗...

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧