| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2422 人关注过本帖
标题:在表单中,如何调用FUNCTION……ENDFUNC语句?
只看楼主 加入收藏
cluna2013
Rank: 1
等 级:新手上路
帖 子:234
专家分:0
注 册:2013-3-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
在表单中,如何调用FUNCTION……ENDFUNC语句?
FUNCTION……ENDFUNC在.prg中使用很好,但是不被表单接受。使用表单自定义不行,调用.prg程序出现循环……总之,本人屡试失败。
哪位高手曾经在表单中使用过FUNCTION……ENDFUNC成功的案例,希望分享!
搜索更多相关主题的帖子: FUNCTION 语句 调用 prg 表单 
2020-06-23 17:23
瓜瓜1990
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:18
帖 子:125
专家分:699
注 册:2020-2-25
收藏
得分:20 
把FUNCTION……ENDFUNC之间的内容复制到表单过程,比如表单新建的过程名是mypro,在表单其他事件方法里输入thisform.mypro([参数...])就可以调用了。
如果是多个表单公用的过程,可以建立过程文件,用set procedure to +文件名  指定过程文件会好些,不用每个表单都建立过程


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


piu~piu~
2020-06-23 17:43
cluna2013
Rank: 1
等 级:新手上路
帖 子:234
专家分:0
注 册:2013-3-2
收藏
得分:0 
回复 2楼 瓜瓜1990
我选择了【表单→新建方法程序→添加了一个名称→存盘】,然后在【属性】中打开这个文件,输入有FUNCTION的代码,结果存不了盘。
图片附件: 游客没有浏览图片的权限,请 登录注册

我更熟悉使用程序,很晚才开始使用表单。希望您能提供在表单中调用带有FUNCTION的代码的例子,那样我就可以找到问题所在。谢谢!
2020-06-23 18:06
瓜瓜1990
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:18
帖 子:125
专家分:699
注 册:2020-2-25
收藏
得分:0 
function...endfunc是定义新函数,不能出现在表单的方法里。
只能把function...endfunc之间的内容复制到表单方法里,这样就能保存了


piu~piu~
2020-06-23 18:18
cluna2013
Rank: 1
等 级:新手上路
帖 子:234
专家分:0
注 册:2013-3-2
收藏
得分:0 
回复 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 结构的结束。
2020-06-23 18:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
也可以将函数定义在一个PRG文件里
用 SET PROCEDURE TO 载入后调用
2020-06-23 20:02
瓜瓜1990
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:18
帖 子:125
专家分:699
注 册:2020-2-25
收藏
得分:0 
演示.rar (2.37 KB)
要这样啊

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


piu~piu~
2020-06-23 20:08
cluna2013
Rank: 1
等 级:新手上路
帖 子:234
专家分:0
注 册:2013-3-2
收藏
得分:0 
回复 7楼 瓜瓜1990
到底还是避开使用FUNCTION,成功了!谢谢!
2020-06-23 21:43
快速回复:在表单中,如何调用FUNCTION……ENDFUNC语句?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014404 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved