窗体之间的变量访问和控件访问

By admin at 2018-01-23 • 1人收藏 • 1626人看过

窗体都是变量,如果需要全局访问,写成全局变量。如果子窗体本身是局部变量,要相互访问,这是程序设计的逻辑有问题。选项卡都能访问父窗体,而父窗体可以访问选项卡的子窗口。如果你是用 win.ui.tabs ,你可以写成 mainTabs = win.ui.tabs(....) ,这个做成全局变量,然后所有子窗口都可以调用 mainTabs.forms[索引] 访问任何一个子窗口。

4 个回复 | 最后更新于 2022-06-18
2018-01-23   #1

一个子窗口下面这样写subscribe("窗体聊天频道1",function(a,b,c,d){ } )另一个窗体就这样调用:publish("窗体聊天频道1","a","b","c","d")


不要总想一个窗体怎么去控制另一个窗体上的控件,老子说的小国寡民,老死不相往来,就可以用于编程,各个窗体最好是你不知道我,我不知道你,不要挤着脑壳非要让代码相互缠绕到一起。像 publish / subscribe 就根本不管对方窗体界面怎么改,程序代码都可以不变。


其实这两个函数我自己都用的很少,你没见到别人用也正常。对于大多数人,两个窗体之间只是变量的相互访问,不是个问题,而且用 thread.command 可以实现一样的功能,而且可以跨线程,大家用的可能更多。



2022-07-15   #2

。。。如果你是用 win.ui.tabs ,你可以写成 mainTabs = win.ui.tabs(....) ,这个做成全局变量,然后所有子窗口都可以调用 mainTabs.forms[索引] 访问任何一个子窗口。。。。


mainTabs.forms[x] = {[hwnd]=1233423},没有其他函数,有什么办法可以访问到窗体内部的函数?

2022-07-15   #3

回复#2 @奋斗人生 :

forms是窗体的引用的数组啊, 你直接用,假如里面有edit控件, 那么获取它的内容

tbs.forms[1].edit.text

如果你想要引用子窗口里面的自定义函数, 我劝你不要这么干, 如果一个程序里很多这样的写法, 会导致程序界面间相互耦合, 混乱如麻

但是如果你非要这么干, 那么可以这样, 加个winform头.

winform.func1 = function(...){
	//  your code ...
}

后面就可以引用

tbs.forms[1].func1(...)


2022-07-16   #4

谢谢,用此方法已经搞定。之前打印tbs.forms[1]只得到hwnd ,被误导了:

console.print(table.string(tbs.forms[1]) ----> {'hwnd'=xxxx}


用楼主的方法搞定。tbs.forms[1].func1(....)

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...