注册 登录
编程论坛 VFP论坛

在表单中,如何调用FUNCTION……ENDFUNC语句?

cluna2013 发布于 2020-06-23 17:23, 2671 次点击
FUNCTION……ENDFUNC在.prg中使用很好,但是不被表单接受。使用表单自定义不行,调用.prg程序出现循环……总之,本人屡试失败。
哪位高手曾经在表单中使用过FUNCTION……ENDFUNC成功的案例,希望分享!
7 回复
#2
瓜瓜19902020-06-23 17:43
把FUNCTION……ENDFUNC之间的内容复制到表单过程,比如表单新建的过程名是mypro,在表单其他事件方法里输入thisform.mypro([参数...])就可以调用了。
如果是多个表单公用的过程,可以建立过程文件,用set procedure to +文件名  指定过程文件会好些,不用每个表单都建立过程


[此贴子已经被作者于2020-6-23 18:02编辑过]

#3
cluna20132020-06-23 18:06
回复 2楼 瓜瓜1990
我选择了【表单→新建方法程序→添加了一个名称→存盘】,然后在【属性】中打开这个文件,输入有FUNCTION的代码,结果存不了盘。
只有本站会员才能查看附件,请 登录

我更熟悉使用程序,很晚才开始使用表单。希望您能提供在表单中调用带有FUNCTION的代码的例子,那样我就可以找到问题所在。谢谢!
#4
瓜瓜19902020-06-23 18:18
function...endfunc是定义新函数,不能出现在表单的方法里。
只能把function...endfunc之间的内容复制到表单方法里,这样就能保存了

#5
cluna20132020-06-23 18:46
回复 4楼 瓜瓜1990
如果停止使用FUNCTION listfiles(tcFolder)代码,我不知道后面的listfiles(tcFolder)怎么处理?下面是源代码:

listfiles=GETDIR([])
CREATE TABLE files0 (文件名 C(100), 文件大小 N(13), 修改日期 T, 类型 C(3), 路径 C(80))    && 创建表
listfiles([&listfiles])                        && 建立listfiles函数
BROWSE
*FUNCTION listfiles(tcFolder)                && 自定义路径函数
    LOCAL ARRAY laFiles[1]                    && 创建的数组laFiles,[1]表示一组。
    LOCAL lcFileName, ii
    m.tcFolder = ADDBS(m.tcFolder)            && 向路径表达式添加一个反斜杠。
    IF ADIR(m.laFiles, m.tcFolder + '*.*', 'AHRSD', 1) < 3        && 若是文件长度小于3个字节,则不计算。
        RETURN .F.
    ENDIF
    ASORT(m.laFiles, 3, -1, 1)                && 按第3列排序数组,最后一位数大于0为降序排序。
    FOR m.ii = 1 TO ALEN(m.laFiles, 1)        && 返回数组中元素、行或列的数目。
        m.lcFileName = m.laFiles[m.ii, 1]
        DO CASE
            CASE '.' == m.lcFileName Or '..' == m.lcFileName
            CASE AT('D', m.laFiles[m.ii, 5]) > 0                && 在一个字符表达式中查找另一个字符表达式出现的位置。
               listfiles(m.tcFolder + m.lcFileName)
            OTHERWISE
                lafilesdt1=DTOC(m.lafiles[m.ii, 3])
                lafilesdt2=m.lafiles[m.ii, 4]
                m.lafiles[m.ii, 3]=CTOT([&lafilesdt1 &lafilesdt2])
                INSERT INTO files0 VALUES (m.lafiles[m.ii, 1], m.lafiles[m.ii, 2], m.lafiles[m.ii, 3], JUSTEXT(m.lafiles[m.ii, 1]), m.tcFolder)    && 将数据录入到表中。
        ENDCASE
    ENDFOR
*ENDFUNC                && 标识 FUNCTION 结构的结束。
#6
吹水佬2020-06-23 20:02
也可以将函数定义在一个PRG文件里
用 SET PROCEDURE TO 载入后调用
#7
瓜瓜19902020-06-23 20:08
只有本站会员才能查看附件,请 登录
要这样啊

[此贴子已经被作者于2020-6-23 20:25编辑过]

#8
cluna20132020-06-23 21:43
回复 7楼 瓜瓜1990
到底还是避开使用FUNCTION,成功了!谢谢!
1