首页 > 其他分享 >pb dw中checkbox控件在点选后马上取消勾选的方法

pb dw中checkbox控件在点选后马上取消勾选的方法

时间:2023-05-24 13:33:52浏览次数:40  
标签:点选 控件 checkbox itemchanged 勾选 事件 dw row

需求:pb dw中的checkbox列在点击选择时,判断之前某列的值,如不满足条件,则取消勾选。

使用过的方法及解释:

1、在itemchanged事件中写 dw.objext.cbx[row] = 0. 不能达到要求。虽然itemchanged事件中的data变成了0.但是dw行中的checkbox的勾选状态并未被取消。

2、在itemchanged事件中写dw.setitme(row, "cbx", 0)结果与上同。

3、在itemchanged事件中写dw.event itemchanged(row, dwo, '0')。结果同上。但该代码会使函数进入死循环。相当于itemchanged事件不停的迭代自身事件函数。checkbox上的勾让人不能去掉。

4、在某一个button下写 dw.objext.cbx[row] = 0或dw.setitme(row, "cbx", 0)。能达到要求。勾选被取消。

5、在itemchanged事件中写

dw_1.event losefocus( )
dw_1.setitem(row, "xz", 0)或dw.objext.cbx[row] = 0

无法达到要求。这么写的初衷是想通过losefocus()事件使dw失去焦点,而后再执行dw_1.setitem(row, "xz", 0)或dw.objext.cbx[row] = 0的操作,达到一种与在外部按钮中点击执行的时机相同的时机效果。但是不能达到预期目的。原因是执行losefocus()并不能达到使本次itemchanged事件函数执行完毕的效果。而在一次itemchanged()事件中不能修改勾选状态两次。原因是如果在itemchanged()事件中再去修改checkbox的状态就相当于再次触发了itemchanged()事件,这就相当于在itemchanged事件中写了dw.event itemchanged(row, dwo, '0'),会使程序陷入死循环,因此pb事件机制应该不允许通过在itemchanged()事件函数内通过dw_1.setitem(row, "xz", 0)或dw.objext.cbx[row] = 0修改状态值来再次触发并修改checkbox的勾选状态。

在itemchanged事件中使用各种代码不能达到要求,原因是:dw.event itemchanged(row, dwo, '0')这种方法虽然修改了data的值,但是在此事件本身的函数内data值的改变并不能反过来改变外部checkbox控件的勾选的的状态。虽然checkbox的勾选状态直接决定data值。

dw.objext.cbx[row] = 0和dw.setitme(row, "cbx", 0)这两种方法虽然能改变checkbox的勾选状态。但是在itemchanged事件内部使用却无效。原因同5。

解决方案:以上种种方法不能达到要求,究其原因是因为没有找到一个合适的时机。再次修改checkbox勾选状态的时机必须在itemchanged事件之中,而不能在itemchanged()之后的任何一个事件中。而在itemchanged事件中又不能通过用代码修改状态值的方法来改变勾选状态。那么就只剩下一个思路——终止itemchange()的执行。那么如何终止呢,事件执行成功与失败一般都会通过返回值的形式告诉编译器,执行成功和失败都会有不同的返回值,编译器也会根据事件函数的返回值来决定下一步的应该执行动作。因此想到从返回值下手。通过查看pb的帮助文档( help——contents——查询return关键字)发现itemchanged事件执行失败时返回值为2,因此在判断条件不满足时使itemchanged()事件的返回值为2。如图:

 

 

告诉编译器事件执行失败。则checkbox则不会勾选成功。

执行代码,成功达到要求。


原文链接:https://blog.csdn.net/wolfalcon/article/details/102534503

标签:点选,控件,checkbox,itemchanged,勾选,事件,dw,row
From: https://www.cnblogs.com/djd66/p/17428049.html

相关文章

  • layui渲染checkbox触发方法
    html:<span><inputtype="checkbox"id="checkAllBz"name="checkAllBz"value=""checkedlay-filter="filterName"lay-skin="primary">全选</span>js:layui.use(......
  • 如何给布局或者控件添加边框
    如何给布局或者控件添加边框我在学习和开发JavaFX程序时,对Pane会有一些疑问,比如:它们的大小是怎样的?它们的大小和父节点或者窗口的关系是怎样的?相同的问题在控件上也存在,比如一个Label到底占据了多大的空间(因为默认Label没有边框展示)?我想,如果可以给布局或者控件添加......
  • python+playwright 学习-62 日历控件操作
    前言遇到输入框是弹出日历控件,选一个日期的这种场景,可以直接在输入框输入内容。如果输入框是readonly的时候,可以用js改变输入框的属性日历控件如果输入框是日历控件先看能不能直接输入一个日期,如果能直接输入的情况,就不用点开了代码示例#上海悠悠wx:283340479#blog:ht......
  • 界面控件DevExtreme使用指南 - 如何自定义上下文菜单和工具栏
    DevExtreme FileManager(文件管理器)小部件现在支持自定义内置的工具栏和上下文菜单,用户可以使用标准和定义的命令项填充项目集合,并配置设置来更改其外观和操作。DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQu......
  • 控件包含代码块(即 <% ... %>),因此无法修改控件集合(用户自定义控件中)
    https://www.cnblogs.com/zlfucku/archive/2011/09/05/2167943.html原因:就是runat中不能有<%%>这样的东西,不然就会报这个错误解决办法: 这两行拖到body里就好了,不要放在有headrunat=server的代码块内,不然就报这个错。......
  • 盘点界面控件DevExpress WinForms的几大应用程序主题
    DevExpressWinForm控件包含了50+个自定义皮肤,其中涵盖了MicrosoftOffice和Windows11启发式的应用程序主题。PS:DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForm能完美构建流畅、美观且易于使用的应用程序,无论是Of......
  • delphi TcxGridPopupMenu控件学习笔记
    TcxGridPopupMenu控件用来给cxgrid设置右键菜单的.它长这样属性面板长这样: 默认的系统菜单长这样: 这菜单上面有好几个选项我不想要,怎么办?隐藏它呗!private{Privatedeclarations}procedureStdHeaderMenuPopup(Sender:TObject);//-----------------......
  • pod调度:节点选择与亲和
    0、简介k8s对于pod的调度有如下几种:按node名称、按标签、节点亲和、pod亲和1、使用nodeName指定节点场景:pod需要部署到指定节点。方案:[root@vmrootschedule-yamls]#catschedule-deloyment.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:scdl-dspec:selector:......
  • Flutter一天一控件之ListTile
    ListTile简介Flutter中的ListTile控件是一种常用的列表项控件,它可以用于显示列表中的每一个项,通常包含标题、副标题、图标等内容。ListTile控件的外观和行为类似于Android中的ListView中的列表项。一个简单的ListTile示例:ListTile(leading:Icon(Icons.person),//左侧图标......
  • 使UIScrollView的子控件在scrolling的过程中,子控件不滚动(固定在某个位置)
    使UIScrollView的子控件在scrolling的过程中,子控件不滚动(固定在某个位置)受本篇问答的启发http://stackoverflow.com/questions/11272847/make-uiview-in-uiscrollview-stick-to-the-top-when-scrolled-up修改代码如下注意:使UIScrollView的子控件self.letter在scrolling的过程中,子......