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

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

窗体都是变量,如果需要全局访问,写成全局变量。如果子窗体本身是局部变量,要相互访问,这是程序设计的逻辑有问题。选项卡都能访问父窗体,而父窗体可以访问选项卡的子窗口。如果你是用 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 可以实现一样的功能,而且可以跨线程,大家用的可能更多。



28 天前   #2

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


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

28 天前   #3

回复#2 @奋斗人生 :

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

tbs.forms[1].edit.text

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

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

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

后面就可以引用

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


27 天前   #4

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

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


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

登录后方可回帖

登 录
信息栏
公告:
个人博客
专注分享
可在分享中适当提问
谢绝纯提问
否则不再提醒一律
删帖
谢谢合作!



本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
Loading...