请教高手给一段大众化的主程序,行吗?

bocx9 2003-08-13 07:57:17
本程序就几个表单,准备再做一个菜单。
...全文
91 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
barty898 2003-08-24
  • 打赏
  • 举报
回复
太好了!
dfwxj 2003-08-22
  • 打赏
  • 举报
回复
当然出错,你不把源代码贴完整谁知道你在什么时候运行表单?

快点结贴吧~
mgan 2003-08-22
  • 打赏
  • 举报
回复
呵 自己参考一下
再找找看
——————————@_@————————
good good study
day day up
____________________^@^_________________

sunflower98 2003-08-21
  • 打赏
  • 举报
回复
可我的主文件中已加了READ EVENTS语句,并在EXE文件所在目录中加了VFP*.dll文件,运行时还是一闪,却看不见。在任务管理器中却有该进程。这是为什么?并在READ EVENTS前加了WAIT WINDOWS调试,也出现了等待的提示,没报错。(在系统环境下运行一切都是正常的)可之前的运行菜单却看不见。我的主程序一段是这样的:
set....
.......
do main.mpr
read events
......
set....
毛病在哪了?
dfwxj 2003-08-13
  • 打赏
  • 举报
回复
用clos all 就行了,顾名思义,关闭全部嘛~

数据环境在表单中最先打开,最后关闭
fj_jiangqi 2003-08-13
  • 打赏
  • 举报
回复
在表单中使用数据环境,可以设置成自动打开自动关闭。
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
SwordMan2001 2003-08-13
  • 打赏
  • 举报
回复
我想请教一下, 在退出系统时是否需要编程来关闭可能打开的表以及数据库,是不是用close all就可以了?
在哪些情况下表是自动关闭的?
fj_jiangqi 2003-08-13
  • 打赏
  • 举报
回复
public _sys_user,_sys_sq
=_set_exe()
=_sys_title()
=_init()
_sys_user=0
_sys_sq=0
*on error do _error with error(),message(),message(1),program(),lineno()
do form _screen name attendance_screen
do _star_menu.mpr
read events
_screen.MaxButton=.T.
_screen.WindowState=2
set sysmenu to default
attendance_screen.Release()
=_set_prg()
仅供参考
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
dfwxj 2003-08-13
  • 打赏
  • 举报
回复
如下是本人的银行汇票开票系统的主程序,一般流程为:环境设置->数据初始化->系统注册->运行主程序->环境清理->退出系统

*环境设置
SET talk off
Application.VISIBLE=.F. &&关闭VFP主窗口
SET cent on
SET date ansi
SET safe off
SET esca off
SET exac on
SET dele on
Clos all
*定义全局变量
passed=.f.
rgp=.f.
cre=.t.
Application.VISIBLE=.T.
*系统注册
DO form regsys
Application.VISIBLE=.F.
READ even
IF !passed
QUIT
ENDI
*检查数据备份文件夹
bakflag=.f.
ON erro bakflag=.t.
SET defa to bak
ON erro
IF bakflag
MD bak
ELSE
SET defa to ..
ENDI
*系统初始化
USE sysctrl in 0
SELE sysctrl
IF !file(bakpic)
REPL bakpic with '',enabbak with .f.
ENDI
muser=allt(sysctrl.dw)
REST from sinfo.sys addi
regcode=allt(regcode)
IF len(regcode)=0
FOR i=1 to 10
regcode=regcode+dtoz(int(rand(int(seco())*i)*63)+1)
ENDF
SAVE to sinfo.sys all like reg*
REPL macode with regcode
ENDI
IF regcode#sysctrl.macode
cre=.f.
ENDI
USE in sysctrl
USE skmx
INDE on fkdw tag fkdw
INDE on rq tag rq
REPL all pflag with .f.
REPL all pflag with .t. for rq>=date()
USE cfmx
INDE on skdw tag skdw
INDE on rq tag rq
REPL all pflag with .f.
REPL all pflag with .t. for rq>=date()
USE gysda
INDE on sksf tag sksf
USE wbpy
INDE on hz tag hz
USE
IF len(regcode)=10
rflag=.t.
FOR i=1 to 10
IF at(subs(regcode,i,1),'1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ[]{}<>()?/\!@#$%^&*+-=,.;:~')=0
rflag=.f.
EXIT
ENDI
ENDF
muser=gdw(muser)
IF rflag
IF len(muser)>0
mregc=''
FOR i=1 to 10
mregc=mregc+dtoz(bitxor(ztod(subs(regcode,i,1)),ztod(subs(muser,mod(ztod(subs(regcode,i,1))+i,len(muser)),1))))
ENDF
IF allt(mregc)==allt(regsn)
rgp=cre
ENDI
ELSE
rgp=.f.
ENDI
ENDI
ENDI
*运行主表单
DO form main
READ even
*环境清理及退出系统
USE sprint
ZAP
USE fprint
ZAP
Clos all
Clea all
IF file('skmx.cdx')
Dele file skmx.cdx
ENDI
IF file('cfmx.cdx')
Dele file cfmx.cdx
ENDI
IF file('gysda.cdx')
Dele file gysda.cdx
ENDI
IF file('wbpy.cdx')
Dele file wbpy.cdx
ENDI
Application.VISIBLE=.T.
QUIT


注册表单regsys和主表单main为顶层表单,如果要加菜单,则在主表单的init事件中加入调用菜单代码:
do menufile.mpr with this,.t. &&menufile是你设计的菜单文件名
boomit 2003-08-13
  • 打赏
  • 举报
回复
主程序的方法。
MAIN.PRG 为主文件;MAIN.SCX设为顶层表单;
clea all
close all
set talk off
set century on
set date to japan
set sysmenu off
set delete on &&以上设置根据自己要求设置,没有死规定,而且可能你还补充
_screen.visible = .f.
public s_Systempath
s_Systempath = ''
s_SystemPath = Sys(2003)
Set Path To s_Systempath &&以上设置路径问题,也有很多方法,如果你用固定路径可以用set defa to
do menu.npx &&菜单程序
Do form main.scx &&主表单
Read event 这是必需加上的,启用事件处理。
最后在系统退出的程序中加入 clea event 停止事件处理
以上的也不是很全面,但是主要的意思都在。。
mgan 2003-08-13
  • 打赏
  • 举报
回复
SET TALK OFF
SET EXCLUSIVE ON
SET DELETED ON
CLOSE ALL
PUBLIC MAIN , AF1 , AF2 , AF3 , BACK_1 , PAGE_1 , PAGE_2 , BACK_1 , C_TEMP1 , ERR_TEMP,UserName, UserComp, Ver
Declare Integer RegOpenKeyEx IN Win32API Integer, String@, Integer, Integer, Integer@
Declare Integer RegQueryValueEx IN Win32API Integer, String, Integer, Integer@, String@, Integer@
Declare Integer RegCloseKey IN Win32API Integer nkey
UserName = ""
UserComp = ""
LNRESULT = 0
Buffer = SPACE(128)
BUFFERSIZE = LEN(BUFFER)
LNERROR = RegOpenKeyEx(-2147483646, "Software\microsoft\windows\currentversion", 0, 1, @LNRESULT)
If LNERROR = 0
LNTYPE = 0
Buffer = SPACE(128)
BUFFERSIZE = LEN(BUFFER)
LNERROR = RegQueryValueEx(LNRESULT, "RegisteredOwner", 0, @LNTYPE, @BUFFER, @BUFFERSIZE)
If LNERROR = 0 AND BUFFER <> CHR(0)
UserName = LEFT(BUFFER, BUFFERSIZE - 1)
Else
LNERROR = RegOpenKeyEx(-2147483646, "Software\microsoft\windows NT\currentversion", 0, 1, @LNRESULT)
If LNERROR = 0
LNTYPE = 0
Buffer = SPACE(128)
BUFFERSIZE = LEN(BUFFER)
LNERROR = RegQueryValueEx(LNRESULT, "RegisteredOwner", 0, @LNTYPE, @BUFFER, @BUFFERSIZE)
If LNERROR = 0 AND BUFFER <> CHR(0)
UserName = LEFT(BUFFER, BUFFERSIZE - 1)
Endif
LNTYPE = 0
Buffer = SPACE(128)
BUFFERSIZE = LEN(BUFFER)
LNERROR = RegQueryValueEx(LNRESULT, "registeredorganization", 0, @LNTYPE, @BUFFER, @BUFFERSIZE)
If LNERROR = 0 AND BUFFER <> CHR(0)
UserComp = LEFT(BUFFER, BUFFERSIZE - 1)
Endif
LNTYPE = 0
Buffer = SPACE(128)
BUFFERSIZE = LEN(BUFFER)
LNERROR = RegQueryValueEx(LNRESULT, "ProductName", 0, @LNTYPE, @BUFFER, @BUFFERSIZE)
If LNERROR = 0 AND BUFFER<>CHR(0)
Ver = LEFT(BUFFER, BUFFERSIZE - 1)
Endif
Endif
Endif
LNTYPE = 0
Buffer = SPACE(128)
BUFFERSIZE = LEN(BUFFER)
LNERROR = RegQueryValueEx(LNRESULT, "registeredorganization", 0, @LNTYPE, @BUFFER, @BUFFERSIZE)
If LNERROR = 0 AND BUFFER<>CHR(0)
UserComp = LEFT(BUFFER, BUFFERSIZE - 1)
Endif
LNTYPE = 0
Buffer = SPACE(128)
BUFFERSIZE = LEN(BUFFER)
LNERROR = RegQueryValueEx(LNRESULT, "ProductName", 0, @LNTYPE, @BUFFER, @BUFFERSIZE)
If LNERROR = 0 AND BUFFER<>CHR(0)
Ver = LEFT(BUFFER, BUFFERSIZE - 1)
Endif
Endif
RegCloseKey(LNRESULT)
Clea DLLS
MYPATH = LEFT(SYS(16),RAT('\',SYS(16)))
SET DEFAULT TO (MYPATH)
SET PATH TO mypath\ico;mypath\date
DO FORM logo
READ EVENTS
自己看着办 啊
bocx9 2003-08-13
  • 打赏
  • 举报
回复
do form ***.scx
read events

还用添加点什么?
dfwxj 2003-08-13
  • 打赏
  • 举报
回复
你有没有把我的两行“READ even”删除?还有,clea even要放在表单的unload事件中
bocx9 2003-08-13
  • 打赏
  • 举报
回复
to: dfwxj(清风)

为什么我用后,仍然是一闪而过

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧