aardio中call函数的一种使用

问题描述

有三个按钮,分别对应了三种功能,用func1()、func2()和func2()表示。
在响应按钮时,要先运行前置函数pre(),再运行按钮对应的函数func(),最后运行后置函数suf()。如下所示:

mainForm.button1.oncommand = function(id,event){
	pre();
        func1();
	suf();
}

mainForm.button2.oncommand = function(id,event){
	pre();
        func2();
	suf();
}

mainForm.button3.oncommand = function(id,event){
	pre();
        func2();
	suf();
}

这样就会将pre()和suf()写三遍.

一种解决方法

新定义一个函数

function main(func){
	pre();
	call(func);
	suf();
}

按钮响应函数则为:

mainForm.button1.oncommand = function(id,event){
	main(func1);
}

mainForm.button2.oncommand = function(id,event){
	main(func2);
}

mainForm.button3.oncommand = function(id,event){
	main(func3);
}

试验和结果

为了试验方便,将所有函数都设定为对话框,代码如下:

import win.ui;
/*DSG{{*/
mainForm = win.form(text="窗口试验";right=447;bottom=447)
mainForm.add(
button1={cls="button";text="Button1";left=152;top=64;right=272;bottom=120;z=1};
button2={cls="button";text="Button2";left=152;top=160;right=272;bottom=216;z=2};
button3={cls="button";text="Button3";left=152;top=256;right=272;bottom=312;z=3}
)
/*}}*/

function main(func){
	pre();
	call(func);
	suf();
}

function pre(){
	mainForm.msgbox("前置函数")
}

function suf(){
	mainForm.msgbox("后置函数")
}

function func1(){
	mainForm.msgbox("按钮1")
}

function func2(){
	mainForm.msgbox("按钮2")
}

function func3(){
	mainForm.msgbox("按钮3")
}

mainForm.button1.oncommand = function(id,event){
	main(func1);
}

mainForm.button2.oncommand = function(id,event){
	main(func2);
}

mainForm.button3.oncommand = function(id,event){
	main(func3);
}

mainForm.show();
return win.loopMessage();

实际效果如图:

posted @ 2020-11-21 16:34  兮曰  阅读(388)  评论(0)    收藏  举报