×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

help:熟悉PALM 开发DX 进来看一下.

在我的项目里,使用到POPUP LIST.用户选择下拉的箭头,弹出LIST ,然后从LIST 选择某项内容,那么该内容就会显示在屏幕上,同时消失LIST .
正常的情况下.在LIST 出现的时候,只要点击一下LIST某一项,那么LIST 马上就会消失,同时把选择的内容显示在屏幕上. 现在我遇到了个问题是,当LIST 出现了,我要点两下,LIST 才会消失.

另外我的LIST 和 Popup trigger 是动态创建的,也就是如下的代码.
CtlNewControl ((void**)&frmP,StrAToI(Current_QUE_ID)*10+i,popupTriggerCtl,Answer_Value,5,y,150,FntLineHeight(),stdFont, 0, true);
LstNewList ((void**)&frmP,StrAToI(Current_QUE_ID)*10+5+i,5,y,150,80,stdFont,0,StrAToI(Current_QUE_ID)*10+i);

ListP=FrmGetObjectPtr(frmP,FrmGetObjectIndex(frmP,StrAToI(Current_QUE_ID)*10+5+i));

于是我就尝试着跟踪程序里的出现事件,结果发现第一下点击的时候,在APPEVENTLOOP 里捕获不到该事件,一直要再点击一下,才会出先PENDOWN EVENT ,接着是WINENTER , POPUPSELECT 等等一系列的事件.
Report

Replies, comments and Discussions:

  • 工作学习 / IT技术讨论 / help:熟悉PALM 开发DX 进来看一下.
    在我的项目里,使用到POPUP LIST.用户选择下拉的箭头,弹出LIST ,然后从LIST 选择某项内容,那么该内容就会显示在屏幕上,同时消失LIST .
    正常的情况下.在LIST 出现的时候,只要点击一下LIST某一项,那么LIST 马上就会消失,同时把选择的内容显示在屏幕上. 现在我遇到了个问题是,当LIST 出现了,我要点两下,LIST 才会消失.

    另外我的LIST 和 Popup trigger 是动态创建的,也就是如下的代码.
    CtlNewControl ((void**)&frmP,StrAToI(Current_QUE_ID)*10+i,popupTriggerCtl,Answer_Value,5,y,150,FntLineHeight(),stdFont, 0, true);
    LstNewList ((void**)&frmP,StrAToI(Current_QUE_ID)*10+5+i,5,y,150,80,stdFont,0,StrAToI(Current_QUE_ID)*10+i);

    ListP=FrmGetObjectPtr(frmP,FrmGetObjectIndex(frmP,StrAToI(Current_QUE_ID)*10+5+i));

    于是我就尝试着跟踪程序里的出现事件,结果发现第一下点击的时候,在APPEVENTLOOP 里捕获不到该事件,一直要再点击一下,才会出先PENDOWN EVENT ,接着是WINENTER , POPUPSELECT 等等一系列的事件.
    • 我的程序
      我的程序里,list 控件就处理一个事件,就是 popSelectEvent.
      我不知道怎么会要点两下,不过有几点是我以前弄list 和 popuptrigger 头比较的的事:

      1.Switch case 里break 放错了地方.
      大量的事件用swaitch,在家有几个list 的话,就等着晕吧:P

      2. popuptrigger 有一个ListID 属性.弄错了?

      最简单的code 是这样的:
      switch (event->eType) {
      case popSelectEvent:
      switch (event->data.popSelect.listID)
      {
      case YourListId1:
      Your Code;
      break;
      case YourListId2:
      Your Code;
      break;
      }
      break;
      case other event:
      ....
      break;
      }
      • 程序是非常的复杂,急死人了.
        现在发现,当第一次装载动态LIST的时候,点击一次即可,第二次装载的时候要点击两次,第三次装载要点击三次,以此类推.
        在程序里对于动态的LIST 控件所产生的事件,我没有写程序去处理,直接把事件交给系统去处理.
        在每次创建LIST 的控件的时候,先REMOVE窗体上的旧的LIST 动态控件.

        而且很奇怪的是,点击LIST 选项的时候 ,被点击的LIST 项是出现了HIGHLIGHT ,但就是没把这事件往系统送,也就是在事件的主循环AppEventLoop里捕获不到这个事件,要点击若赶次后,才可以.