aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 13156|回复: 6

【combobox控件】实现拼音首字母动态检索汉字/数字/英文

[复制链接]

10

主题

66

回帖

654

积分

三级会员

积分
654
发表于 2014-4-23 16:09:18 | 显示全部楼层 |阅读模式
本帖最后由 alajia 于 2014-4-23 16:29 编辑

用老大改进的combobox控件,实现拼音首字母动态检索汉字/数字/英文。

  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form(text="自动更新下拉列表";right=420;bottom=200)
  4. winform.add(
  5. combobox={cls="combobox";text="combobox";left=107;top=77;right=315;bottom=101;edge=1;items={};mode="dropdown";z=1}
  6. )
  7. /*}}*/

  8. var tab_items = {["测试一"]="";["测试2"]="";["测试3"]="";["其他"]="";["new"]="";["百度"]="";["谷歌Google"]="";};

  9. import string.conv.pinyin;

  10. HZtoPY = function(items){
  11.         for(k,v in items){
  12.                 var pinyin = string.conv.pinyin(k);
  13.                 var py = "";
  14.                 for m in string.gmatch( pinyin,"\s(.{1})") {
  15.                      if(string.match(m,"\w")){
  16.                              py += m;  
  17.                      }                   
  18.                 }
  19.                 py = pinyin[[1]] + py;
  20.                 tab_items[k] = py;         
  21.         }       
  22. }

  23. HZtoPY(tab_items);

  24. winform.combobox.oncommand = function(id,event){
  25.     if(event == 0x5/*_CBN_EDITCHANGE*/) {  
  26.             var items_arrar = {};
  27.                 var s = winform.combobox.text;
  28.                 for(k,v in tab_items){
  29.                         if(string.match(v,s)){
  30.                                 table.push(items_arrar,k);
  31.                         }
  32.                 }
  33.         winform.combobox.items = items_arrar //更新下拉列表
  34.         winform.combobox.showDropDown(true);
  35.     }     
  36. }

  37. winform.combobox.wndproc = function(hwnd,message,wParam,lParam){
  38.         if(wParam == 0xD/*_VK_RETURN*/){
  39.                 var tmp = winform.combobox.text;
  40.                 if(!tab_items[tmp]){
  41.                         win.msgbox("无效选项!","aardio");
  42.                         winform.combobox.setFocus();
  43.                 }
  44.     }
  45.         if(wParam == 0x1B/*_VK_ESC*/){
  46.                 winform.combobox.text = "";
  47.                 winform.combobox.setFocus();
  48.     }   
  49. }

  50. winform.combobox.setFocus();

  51. winform.show()
  52. win.loopMessage();
复制代码

效果.png

16

主题

118

回帖

914

积分

三级会员

积分
914
发表于 2014-4-23 19:48:19 | 显示全部楼层
不错,谢谢分享

2

主题

15

回帖

307

积分

二级会员

积分
307
发表于 2014-4-23 20:47:03 | 显示全部楼层
谢谢分享,学习了,string.conv.pinyin这个函数好方便

6

主题

12

回帖

199

积分

一级会员

积分
199
发表于 2014-4-24 00:06:31 | 显示全部楼层
WOW , 最近想做个录入客人去那间商店消费的小软件 , 这个首字母动态检索很方便输入商家名称

0

主题

54

回帖

362

积分

二级会员

积分
362
QQ
发表于 2014-4-30 07:59:13 来自手机 | 显示全部楼层
..

0

主题

3

回帖

97

积分

一级会员

积分
97
发表于 2014-7-6 13:20:12 | 显示全部楼层
用到了,谢谢分享~

0

主题

2

回帖

33

积分

新手入门

积分
33
发表于 2014-9-22 00:29:40 | 显示全部楼层
谢谢,也用上了
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-5-19 15:49 , Processed in 0.062512 second(s), 26 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表