在datawindow中怎样根据一个字段的值来动态更换另一个字段的dddw?

madking 2003-04-11 10:16:10
已经预设了一些style name,能否动态更改?
...全文
124 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsycat 2003-04-11
  • 打赏
  • 举报
回复
用GetChild()函数

string user_accounts,energy_type
integer rtncode

if dwo.name = 'parent_watch_code' then
user_accounts = dw_5.getitemstring(dw_5.getrow(),'parent_user_accounts')
energy_type = dw_5.getitemstring(dw_5.getrow(),'energy_type')
rtncode = dw_5.GetChild('parent_watch_code',state_child)
IF rtncode = -1 THEN MessageBox("错误", "传递参数错误!")

CONNECT USING SQLCA;

state_child.SetTransObject(SQLCA)
state_child.Retrieve(user_accounts,energy_type)
end if

madking 2003-04-11
  • 打赏
  • 举报
回复
怎样改变child呢?
shahand 2003-04-11
  • 打赏
  • 举报
回复
itemchange event:
if dwo.name = .....
..getchild()..
//modify
//or filter
madking 2003-04-11
  • 打赏
  • 举报
回复
弹出窗口用户操作太麻烦了,因为有好几个字段要更改。
dddw的可选项我们是统一维护的

//翻译的话,可以用联合报表(union)建立dddw

详细解释一下?
prain2003 2003-04-11
  • 打赏
  • 举报
回复
我用的是弹出窗口实现的,翻译的话,可以用联合报表(union)建立dddw
madking 2003-04-11
  • 打赏
  • 举报
回复
拿实际情况来说明吧
一个资产购置计划,资产包括电表、互感器等。
每条记录里有一个表类型字段,电表和互感器对应的表类型不同,用户可以选择该条记录是电表还是互感器,怎么改变表类型的可选项?
如果有好的实现方法,烦请说明,谢谢!
prain2003 2003-04-11
  • 打赏
  • 举报
回复
你想做什么,可以不用那么复杂的方法,也可以实现类似的功能
madking 2003-04-11
  • 打赏
  • 举报
回复
i see,结帖了。
andyzq 2003-04-11
  • 打赏
  • 举报
回复
你设置了style name,以下语句可以得到style name的名称,但是仍然需要指定displaycolumn
和datacolumn的值

string ls_dddw
ls_dddw = dw_1.describe("code.dddw.name")
messagebox('',ls_dddw)
madking 2003-04-11
  • 打赏
  • 举报
回复
呵呵,我试过了,这种方法可以。不过要求动态改变数据源的不同dddw的数据结构一致。
能不能直接改变style name属性呢?因为我们已经预设好了一些dddw。谢谢!

还有一个弊端,就是dddw的数据源一改变,所有行的dddw就都改变了。这也是没有办法的事,不知道对于这种问题有没有更好的处理方法。
andyzq 2003-04-11
  • 打赏
  • 举报
回复
更正:
在itemchanged事件中写

datawindowchild ldwc_1

if dwo.name = '那个字段' then
if data = '电表' then
dw_1.object.字段名.dddw.name = "dddw_电表"
dw_1.object.字段名.dddw.displaycolumn = "dddw中的显示字段名"
dw_1.object.字段名.dddw.datacolumn = "dddw中的数据字段名"
dw_1.object.字段名.dddw.AllowEdit = 'no'
dw_1.getchild('字段名', ldwc_1)
ldwc_1.settransobject(sqlca)
ldwc_1.retrieve()
end if
end if



if dwo.name = '那个字段' then
if data = '互感' then
dw_1.object.字段名.dddw.name = "dddw_互感"
dw_1.object.字段名.dddw.displaycolumn = "dddw中的显示字段名"
dw_1.object.字段名.dddw.datacolumn = "dddw中的数据字段名"
dw_1.object.字段名.dddw.AllowEdit = 'no'
dw_1.getchild('字段名', ldwc_1)
ldwc_1.settransobject(sqlca)
ldwc_1.retrieve()
end if
end if
andyzq 2003-04-11
  • 打赏
  • 举报
回复
在itemchanged事件中写

datawindowchild ldwc_1

if dwo.name = '电表' then
dw_1.object.字段名.dddw.name = "dddw_电表"
dw_1.object.字段名.dddw.displaycolumn = "dddw中的显示字段名"
dw_1.object.字段名.dddw.datacolumn = "dddw中的数据字段名"
dw_1.object.字段名.dddw.AllowEdit = 'no'
dw_1.getchild('字段名', ldwc_1)
ldwc_1.settransobject(sqlca)
ldwc_1.retrieve()
end if


if dwo.name = '互感' then
dw_1.object.字段名.dddw.name = "dddw_互感"
dw_1.object.字段名.dddw.displaycolumn = "dddw中的显示字段名"
dw_1.object.字段名.dddw.datacolumn = "dddw中的数据字段名"
dw_1.object.字段名.dddw.AllowEdit = 'no'
dw_1.getchild('字段名', ldwc_1)
ldwc_1.settransobject(sqlca)
ldwc_1.retrieve()
end if
madking 2003-04-11
  • 打赏
  • 举报
回复
老兄,我要改变的是datawindowchild的数据源啊!好像不能用dataobject吧?
lsycat 2003-04-11
  • 打赏
  • 举报
回复
dw_2.dataobject = 'd_jxf_dept_print_new2'
dw_2.SetTransObject(SQLCA)
madking 2003-04-11
  • 打赏
  • 举报
回复
我是要改变dddw的数据源,而不只是过滤一下。有办法吗?
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 在Qt框架,QSerialPort类被视为一个关键组件,用于执行与串行端口之间的通信任务,它具备多样化的功能,涵盖了串口的开启与关闭操作,以及波特率、数据位、停止位和奇偶校验等参数的设定,同时还包括数据的发送和接收功能。在标题和描述提及的“Qt5的QSerialPort类通过信号槽实现串口读写”,这代表了一种在Qt编程普遍采用的事件驱动策略,借助信号槽机制,能够便捷地管理串口数据的传输与接收。 1. **QSerialPort类的基础操作**: - 初始化阶段:必须构建一个QSerialPort实例,并为其指定串口名称,例如"/dev/ttyUSB0"。 - 参数配置:利用`setPortName()`、`setBaudRate()`、`setDataBits()`、`setParity()`、`setStopBits()`、`setFlowControl()`等方法,依据具体需求对串口参数进行配置。 - 串口开启/终止:借助`open()`方法启动串口,通过`close()`方法终止串口。务必验证`isOpen()`的返回状态,以确保操作的有效性。 2. **信号槽机制的应用**: - 信号的生成:QSerialPort类定义了若干信号,诸如`readyRead()`表明有数据可读,`error()`指示出现错误,`bytesWritten()`显示数据已传输等。当这些事件发生时,将触发相应的信号。 - 槽函数的关联:相应地,可以将这些信号与自定义的槽函数相连接,比如,当`readyRead()`信号被激活时,可以调用一个用于处理读取数据的函数。 3. **串口数据...

611

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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