匹配查找问题DROPDOWNPICTUREBOX

qwater 2003-07-13 10:15:27
1、如何在下拉图片列表框中实现增量匹配查找?比如输入1,光标定位在1XX,输入12,光标定位在12X。我使用的是PB6.5。
2、我发现下拉图片列表框没有类似KEY这样的事件,我现在是在窗口的KEY事件中判断当前焦点是否在下拉图片列表框上,可如果我这个界面有2个下拉图片列表框不就不能实现了吗?
3、我在判断出用户是在下拉图片列表框中按了字母或者数字键时,用ddplb_1.ShowList = TRUE可以自动打开下拉图片列表框,当选中某个以后,我想在selectionchanged事件里写ddplb_1.ShowList = FALSE,这句总是会引起PB的关闭,非法操作了。为什么?
4、我用于判断用户输入的键是否为字母或者数字的方法也很傻,如下:
IF (KeyDown(KeyTab!) OR KeyDown(KeyLeftArrow!) &
OR KeyDown(KeyDownArrow!) OR KeyDown(KeyUpArrow!) &
OR KeyDown(KeyPageDown!) OR KeyDown(KeyPageUp!)&
OR KeyDown(KeyRightArrow!) OR KeyDown(KeyBack!)&
OR KeyDown(KeyTab!) OR KeyDown(KeyBack!)&
OR KeyDown(KeyF1!) OR KeyDown(KeyF2!)&
OR KeyDown(KeyF3!) OR KeyDown(KeyF4!)&
OR KeyDown(KeyF5!) OR KeyDown(KeyF6!)&
OR KeyDown(KeyF7!) OR KeyDown(KeyF8!)&
OR KeyDown(KeyF9!) OR KeyDown(KeyF10!)&
OR KeyDown(KeyF11!) OR KeyDown(KeyF12!)&
OR KeyDown(KeyShift!) OR KeyDown(KeyControl!)&
OR KeyDown(KeyAlt!) OR KeyDown(KeyPause!)&
OR KeyDown(KeyCapsLock!) OR KeyDown(KeyEscape!)&
OR KeyDown(KeyPrintScreen!) OR KeyDown(KeyInsert!)&
OR KeyDown(KeyDelete!) OR KeyDown(KeyEnd!)&
OR KeyDown(KeyHome!) ) THEN return
有更好的方法吗?
非常感谢高手对我的问题给予答复。
...全文
66 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwater 2003-07-25
  • 打赏
  • 举报
回复
up
qwater 2003-07-22
  • 打赏
  • 举报
回复
up
qwater 2003-07-19
  • 打赏
  • 举报
回复
up
qwater 2003-07-18
  • 打赏
  • 举报
回复
up
2dian1G 2003-07-18
  • 打赏
  • 举报
回复
up
2dian1G 2003-07-17
  • 打赏
  • 举报
回复
upup
qwater 2003-07-16
  • 打赏
  • 举报
回复
up
qwater 2003-07-15
  • 打赏
  • 举报
回复
up
qwater 2003-07-14
  • 打赏
  • 举报
回复
keyflags 只有0、1、2、3,区别不出字母数字,1好象是CTRL,2好象是SHIFT
Thinkinger 2003-07-14
  • 打赏
  • 举报
回复
KEYCODE换成keyflags呢?
flyhot 2003-07-14
  • 打赏
  • 举报
回复
up
qwater 2003-07-14
  • 打赏
  • 举报
回复
up
Thinkinger 2003-07-13
  • 打赏
  • 举报
回复
问题比较多:
1:可以用selecttiem(index)来高亮选择项;

2:你可以在每个dropdownpicturelistbox控件自定义一个事件,事件对应的EVENT ID为pdm_keydown();

3:showlist有个注释,当你的allowauto设置为true时,showlist属性也必须设置为ture,你的设置是否跟这个注意事项冲突呢?

4:因为字母和数字的ASCII码是连续的整数,你可以利用这个特性写代码,比如a的ASC码是42(你自己去查一下),Z的AXC码是87,在上面定义的pdm_keydown对应的事件中有一个参数keycode就是此时的字符ASC码,可以写如下代码:
if keycode >= 42 and keycode <= 87 …… then
……
end if

2dian1G 2003-07-13
  • 打赏
  • 举报
回复

if keycode >= 42 and keycode <= 87 …… then
……
end if

不行,KEYCODE与LONG不匹配,试过了。
2dian1G 2003-07-13
  • 打赏
  • 举报
回复
如果不用2个单行编辑器是不是就没有办法直接实现增量查询了,我还知道可以用数据窗口代替,可更麻烦的是还得加图片,要不是因为要图片,我就用数据窗口代替下拉列表框了
2dian1G 2003-07-13
  • 打赏
  • 举报
回复
要求允许编辑这一点我是知道的,也是没有设置错误的
klbt 2003-07-13
  • 打赏
  • 举报
回复
问题一、二:
界面有2个下拉图片列表框,你可以建立两个单行编辑器sle_1,sle_2分别对应,在单行编辑器里输入数据进行增量匹配查找,自己定义sle_1,sle_2的用户事件,事件号pbm_enchange

问题四:
用Match函数很容易解决,如:

数字:Match(sle_1.Text, "[^0-9]")
大写字母:Match(sle_2.Text, "[A-Z]")

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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