<?xml version="1.0" encoding="utf-8"?>
<vg version="723" range="0,0,1024,768" scrollbars="0" papervisible="false">
<sheet name="sheet1" visible="false">
<text name="text1" origin="146,74" bounds="8,32,1320,404" autosize="true" border="0" fontname="宋体" fontsize="12" textalign="1" lineinterval="4" text="只有页面才可以自定义函数，在集成开发环境下，在页面空白处单击鼠标左键后，表示对当前页面进行操作。

函数、参数的名字可以包含汉字，也可以包含&quot;A-Z&quot;或&quot;a-z&quot;或&quot;0-9&quot;或&quot;_&quot;或&quot;#&quot;，首字母不能是数字，最大长度为32。这里，参数也可以不填。对话盒里面最多只能输入5个参数，但是实际上可以支持更多个参数，只不过必须直接编辑修改源文件了。

参数的类型不需要定义，取决于调用者传来的值的类型，如下面的函数：

Private function Display( s )
ShowMessage( s )
End function

调用这个函数的正确方法是：Display( “Hello” )，因为ShowMessage函数的参数要求必须是字符串，因此，如果参数s不是字符串，程序就会报错。

函数的返回值不定，取决于是否使用Return语句，和怎样使用，如下面的函数：

Private function GetString()
Return &quot;Hello&quot; 
End Function

那么当调用h = GetString()时，得到的h就是字符串。

如果没有Return语句，那么，函数就没有返回值。

函数类型分为三类：私有函数、公有函数、引出函数。"/>
<text name="text2" origin="10,18" bounds="8,8,77,24" autosize="true" border="0" fontname="宋体" fontsize="12" fontstyle="1" textalign="1" text="添加新函数"/>
<text name="text3" origin="424,682" bounds="8,416,90,432" autosize="true" border="0" fontname="宋体" fontsize="12" fontstyle="1" textalign="1" text="一、私有函数"/>
<text name="text4" origin="424,694" bounds="8,440,732,588" autosize="true" border="0" fontname="宋体" fontsize="12" textalign="1" text="私有函数只能被该页面内的程序访问，而不能被其他任何程序访问。

例如下面一段私有函数，它只能在当前页面内被其他函数访问：

private function SetStatus(n)
u=Circle1.Left 
x=Width/2
y=Parent.Name
……
end function

在这段程序中，Circle1表示页面上的圆形，当该页面被当作元件插入其他页面时，Width、Parent分别指的是元件的宽度和所在的页面。"/>
<text name="text5" origin="424,768" bounds="8,592,90,608" autosize="true" border="0" fontname="宋体" fontsize="12" fontstyle="1" textalign="1" text="二、公有函数"/>
<text name="text6" origin="424,780" bounds="8,616,612,728" autosize="true" border="0" fontname="宋体" fontsize="12" textalign="1" text="公有函数能被任何程序访问，只要该页面本身能被其他程序访问即可。

例如，在页面上有一个元件A，A有一个公有函数SetState，而在页面的OnClick事件中写：

private function OnClick(Sender)
A.SetState(0)
end function

在运行时，单击页面，调用元件A的公有函数SetState。如果SetState是元件A的私有函数，则这样的调用将失败。"/>
<text name="text7" origin="424,840" bounds="8,736,90,752" autosize="true" border="0" fontname="宋体" fontsize="12" fontstyle="1" textalign="1" text="三、引出函数"/>
<text name="text8" origin="424,852" bounds="8,760,840,932" autosize="true" border="0" fontname="宋体" fontsize="12" textalign="1" text="引出函数通常指事件处理程序，例如所有图形单元都有的OnClick、OnDblClick、OnEnter、OnExit事件等就是引出函数，但只有页面才可以自定义引出函数。

引出函数能被任何程序访问，只要该页面本身能被其他程序访问即可，和公有函数不同，引出函数的作用域是当该页面作为元件使用时，所在的页面。

例如，在页面S上有一个文字单元Text1，还有一个元件A，元件A有下面一段引出函数：

published function OnClick(Sender)
x=Text1.Width/2
……
end function

在这段程序中，Text1指的是元件A所在的页面S中名为Text1的那个文字单元，而不是元件中的名为Text1的单元。

在上面这个引出函数里，不能访问元件A的全局变量和私有函数，却能访问页面S的全局变量和私有函数。"/>
</sheet>
</vg>
