aardio - 高级选项卡中一个窗口直接访问另外一个窗口的方法

主窗口

import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
mainForm = win.form(right=713;bottom=570;bgcolor=16777215;border="none")
mainForm.add(
custom={cls="custom";left=0;top=40;right=717;bottom=571;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;z=1};
navFirst={cls="plus";text="主页";left=242;top=2;right=336;bottom=37;align="left";color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome');padding={left=12;top=4}};iconText='\uF00A';notify=1;paddingLeft=1;paddingRight=1;paddingTop=3;textPadding={left=39;bottom=1};x=0.5;y=0.2;z=3};
navSetting={cls="plus";text="设置";left=368;top=2;right=462;bottom=37;align="left";color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome');padding={left=12;top=4}};iconText='\uF0AD';notify=1;paddingLeft=1;paddingRight=1;paddingTop=3;textPadding={left=39;bottom=1};x=0.5;y=0.2;z=4};
titleBar={cls="bkplus";left=-326;top=-1;right=716;bottom=40;bgcolor=6318930;dl=1;dr=1;dt=1;forecolor=16777215;linearGradient=180;z=2}
)
/*}}*/

import win.ui.simpleWindow;
win.ui.simpleWindow( mainForm );

import win.ui.tabs;
var tbs = win.ui.tabs( 
    mainForm.navFirst,
    mainForm.navSetting
);
    
tbs.loadForm(1,"\dlg\broadcast.aardio" );  
tbs.loadForm(2,"\dlg\setting.aardio" ); 
tbs.preloadForm(2,true);

mainForm.tbs = tbs;

tbs.selIndex = 1; 
mainForm.show();
return win.loopMessage();

一个子窗口(访问其他窗口)

import win.ui;
/*DSG{{*/
var winform = win.form(right=669;bottom=455;mode="popup")
winform.add(
button={cls="button";text="测试写设置窗口内容";left=241;top=194;right=374;bottom=252;z=1}
)
/*}}*/

winform.button.oncommand = function(id,event){
    if ::设置窗口_全局常量 ::设置窗口_全局常量.edit.print("::设置窗口_全局常量")
    if mainForm.tbs.forms[2] mainForm.tbs.forms[2].edit.print("mainForm.tbs.forms[2]")
    if ..设置窗口_全局变量 ..设置窗口_全局变量.edit.print("..设置窗口_全局变量")
    if mainForm.设置窗口 mainForm.设置窗口.edit.print("mainForm.设置窗口")
    if winform_全局 winform_全局.edit.print("winform_全局")
}

winform.show() 
win.loopMessage();

另一个子窗口(被访问窗口)

import win.ui;
/*DSG{{*/
winform_全局 = win.form(text="设置";right=801;bottom=376;bgcolor=16777215)
winform_全局.add(
edit={cls="edit";left=103;top=85;right=701;bottom=280;edge=1;multiline=1;z=1}
)
/*}}*/

winform_全局.show();
winform_全局.edit.print("以下方法可以访问其他窗口:")

::设置窗口_全局常量 = winform_全局;
..设置窗口_全局变量 = winform_全局;
mainForm.设置窗口 = winform_全局;
win.loopMessage();

<think>好的,我现在需要回答用户关于如何在aardio文件中调用另一个aardio文件的问题。首先,我应该回忆一下aardio的基本语法和模块化机制。根据之前接触的资料,aardio使用import语句来导入其他文件,类似于Python的模块系统。不过可能需要确认具体的语法细节。 用户提供的引用中有提到其他语言与aardio的相互调用,比如引用5中的julia调用示例,但用户的问题是关于aardio文件之间的调用,所以需要专注于aardio自身的模块系统。根据经验,很多编程语言使用import或者include来引入其他文件,aardio可能也是这样。 接下来,我需要检查示例是否正确。例如,假设有一个文件名为`module.aardio`,里面定义了一个函数,然后在另一个文件中通过`import module`来导入并使用该函数。此外,可能需要注意文件路径的问题,确保被调用的文件在正确的目录下,或者使用相对路径、绝对路径进行引用。 另外,引用3和引用4中提到aardio调用DLL以及系统API,这可能涉及更底层的操作,但用户的问题不涉及这些,所以可以暂时忽略。需要专注于文件间的模块导入。 然后,可能需要考虑命名空间的问题。在aardio中,导入模块后,是否可以直接访问其函数,或者是否需要通过模块名前缀。例如,如果模块导出的是一个表(table),那么可能需要使用`module.functionName()`的方式调用。 还需要确认aardio是否支持模块的导出机制,比如是否有特定的导出语句,或者是否默认导出整个模块的全局变量和函数。例如,在Lua中,模块通过return一个表来导出,而aardio可能有类似的方式。 假设在`module.aardio`中有如下代码: ```aardio // module.aardio namespace module { func = function() { console.log("Hello from module") } } ``` 然后在主文件中: ```aardio import module module.func() ``` 这样是否正确?或者是否需要使用不同的语法,比如`namespace`或其他关键字? 另外,引用5中的示例展示了如何调用Julia的函数,可能结构类似,但具体语法可能不同。比如在aardio中,导入模块后是否需要显式地调用函数,或者是否有自动执行的机制。 可能还需要考虑aardio的模块搜索路径,确保被调用的文件位于正确的路径下,或者使用相对路径导入。例如,如果两个文件在同一目录,直接import文件名即可;如果在子目录,可能需要使用路径符号,如`import dir.module`。 总结步骤: 1. 使用import语句导入目标aardio文件。 2. 确保被导入的文件结构正确,可能通过namespace或导出表来暴露函数。 3. 调用导入模块中的函数或变量时,使用模块名前缀。 4. 处理可能的路径问题,确保模块能被正确找到。 最后,需要验证这些步骤是否正确,可能需要参考官方文档或可靠资料,但根据现有的引用信息,特别是引用5中的示例,可以推断import语句是常用的方法。因此,给出一个示例代码,并说明注意事项,比如文件位置、命名空间等。</think>在 aardio 中调用另一个 aardio 文件的方法如下: ### 1. 使用 `import` 语句导入文件 直接在代码中使用 `import 文件名` 即可调用其他 aardio 文件(无需加后缀)。例如: ```aardio // 主文件 main.aardio import subModule //导入同一目录下的 subModule.aardio subModule.sayHello() ``` ### 2. 定义导出模块 被调用的文件需通过 `namespace` 定义命名空间或返回表结构: ```aardio // subModule.aardio namespace subModule { sayHello = function(){ console.log("你好,我是子模块") } } // 或返回表 return { sayHello = function(){ console.log("你好,我是子模块") } } ``` ### 3. 路径处理规则 - 同级目录直接写文件名 - 子目录使用 `路径.文件名`,例如 `import lib.utils` - 支持相对路径(如 `import ../parentDir/module`) ### 4. 模块数据隔离 导入的模块会创建独立的名字空间,可通过 `module.function()` 调用函数,避免全局变量污染[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢光庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值