
第7章统主程序.ppt
33页上一次课讲到主界面类型、创建主菜单、工具栏、主表单、状态栏和主程序请同学们回顾这样两个问题:1.主界面的类型有哪些?2.创建菜单的步骤有哪些?在VFP中,主界面一般有菜单式、表单式以及表单与菜单式规划与设计菜单;创建菜单和子菜单;为菜单指定任务;生成菜单程序,测试运行菜单上一次课主要学习的内容脐邦轰吹髓益祁邑毫粱鸥池熄沫米搪洗金凝座时陷矩鸡逝正夜尘糖北庚瞳第7章统主程序第7章统主程序 本章主要介绍主程序的功能、类型、环境设置、事件处理及防止程序多次启动的方法第第7 7章章. .系统主程序系统主程序蚕致芒彻旧饶律共问锚射醚矗旦猪厢拎邱甥禽贿缮射液娥黎能吕笆菏隐荚第7章统主程序第7章统主程序 主程序,是指用户在启动应用程序系统时所执行的一个程序文件 主程序可以是表单、菜单或命令程序,通常使用命令程序作为主程序7.17.1主程序主程序腐迷凡斗括砾剔腑翼淄改千悍飞殴穿焙巢啡雪旱稠妊刨竞秦淬棚魄机版坍第7章统主程序第7章统主程序主程序的功能主程序的功能:设置程序运行环境;定义全局变量或常量;调用其他程序如登录表单;开始事件处理7.1.17.1.1功能功能挚运皮稚遵埂魂伶素澈擞捉凸辱刁逞镍壹醛本集却乱烹钟骨噬律截探啦华第7章统主程序第7章统主程序主程序类型主程序类型: 程序文件(.prg)、表单、菜单,一般使用.prg程序作为项目的主程序。
7.1.27.1.2类型类型绣寐辕第畦忠蚤掖田腺舌穴律眨垮袁倚挎辈翌垒姻鸣闹拖亲酷庐忧酉釜诡第7章统主程序第7章统主程序 VFP项目管理器中第1个建立的程序文件(.prg)、表单或菜单被自动设置为主程序可以通过右击主程序文件名,在出现的菜单中选择“设置为主程序”重设主程序 主程序文件名加粗显示7.1.37.1.3设置主程序设置主程序杨嗜揩兑贮服轩纫漳霍道捅狈臆幻冉坤草花汾鸡热梦靳忻祁欣恃诚慨河官第7章统主程序第7章统主程序程序运行环境类别程序运行环境类别: 程序运行环境包括数据环境、显示环境和操作环境 程序运行环境由一系列Set命令设置7.27.2运行环境设置运行环境设置爵情欲桂丰屁途嗽增养想猫居脐衰娟瑶操诱拆村涩呜祥酗沽探姓啃览捞动第7章统主程序第7章统主程序指定比较不同长度两个字符串时,Visual FoxPro 使用的规则ON 指定相等的表达式必须是每个字符都相匹配比较时,忽略表达式结尾的空格比较两个表达式时,在较短的一个的右边加上空格,以使它与较长表达式的长度相匹配 OFF (默认值)指定必须是右端表达式结尾前的每个字符都相匹配,才是相等的表达式7.2.17.2.1设置数据环境设置数据环境1. SET EXACT ON | OFF疥哄酣事妖效睹奸烷竹小惨废概靛赁莆淆涧逆夫腻面溃篙擒慕娇体盆夜斧第7章统主程序第7章统主程序 SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITALIAN | JAPAN | TAIWAN | USA | MDY | DMY | YMD| SHORT | LONGITALIAN | JAPAN | TAIWAN | USA | MDY | DMY | YMD| SHORT | LONG指定日期表达式和日期时间表达式的显示格式。
AMERICAN mm/dd/yy ANSI yy.mm.dd MDY mm/dd/yy DMY dd/mm/yy YMD yy/mm/dd SHORTSHORT 日期的短格式由 Windows 中“控制面板”的“短日期样式”决定在“控制面板”中打开“区域设置”,再选择“日期”选项卡) LONGLONG 日期的长格式由 Windows 中“控制面板”的“长日期样式”决定在“控制面板”中打开“区域设置”,再选择“日期”选项卡)注意,当 SET DATE 设置为 LONG时, {^1601-01-01} 之前的转化为字符串的日期返回为空日期2.SET DATE 2.SET DATE 漂冕凭拎旱戍睦笔潮沸奠逗低嘿喷吟逝读逛卖扶净善心拴殊炽卒状弄憋敌第7章统主程序第7章统主程序SET CENTURY ON | OFF | TO [nCentury [ROLLOVER nYear]]确定 Microsoft Visual FoxPro 是否显示日期表达式当前世纪部分并确定 Visual FoxPro 只有两位年份值的日期的解释方式ONON 指定在包含 10 个字符(包括日期分隔符)的日期格式中,用四位数字表示年。
为与 2000 年兼容,建议您通常将 SET CENTURY 设置为 ON OFF OFF (默认值)指定在包括8个字符的日期格式中,用两位数字表示年在进行日期计算时假定它表示的是20世纪 TO nCentury:TO nCentury:是 1 到 99 的数值,指定当前的世纪当一个日期值有两个表示年的数字时,nCentury 确定了该年的世纪ROLLOVER 值确定了该年是否在nCentury 世纪,还是在 nCentury 之后的世纪 ROLLOVER nYear ROLLOVER nYear :是 0 到 99 的数值,指定年数,大于等于该年数的年份被认为是当前世纪,小于该年数的年份被认为是下个世纪3.SET CENTURY 3.SET CENTURY 剧猾夺纺图嫉馏社属允潮漾狼剑仿崖悟阵淬浮蛹株黎将请怜浙辣岳惕桨访第7章统主程序第7章统主程序SET CURRENCY TO [cCurrencySymbol] 或者 SET CURRENCY LEFT | RIGHT定义货币符号,并且指定货币符号在数值、货币、浮点数和双精度数表达式中的显示位置SET CURRENCY 在当前数据工作期有效。
cCurrencySymbol 指定作为货币符号的字符串,最长可以是 9 个字符使用不带 cCurrencySymbol 的 SET CURRENCY TO 命令可以将货币符号重置为默认的美元符($) 也可以用 Alt+nnn 来指定一个货币符号如果你安装了 Windows 字体, 指定欧洲货币符号 (?) 用 Alt+0128也可以在“选项”对话框中的区域选项卡中设置默认货币符号 LEFT (默认值)将货币符号放在货币值的左边 RIGHT 将货币符号放在货币值的右边4.4.SET CURRENCY满抡骤声缩烹抚妻扯僚葬力羚祖八叔迟剿艰额断陇盾诛夕诗天妈钠创像斩第7章统主程序第7章统主程序显示或移去图形状态栏参数参数ON (默认) 显示图形状态栏 OFF 移去图形状态栏5.SET STATUS BAR ON | OFF5.SET STATUS BAR ON | OFF轨速酮究槽谷钙禹檄柞显凹抵挣甥奔品厦彰瘁塘鲍皮努慕凛隐玲星卤端霜第7章统主程序第7章统主程序SET TALK ON | OFF | NOWINDOWSET TALK ON | OFF | NOWINDOW 决定 Visual FoxPro 是否显示命令结果。
ON:ON:(默认值)允许把对话结果发送到 Visual FoxPro 主窗口、系统信息窗口、图形状态栏、或用户自定义窗口中如果 SET TALK 设置为 OFF 后再改为 ON,那么对话结果将传送到发出 SET TALK OFF 命令之前的输出位置 OFF:OFF:阻止对话结果传送到 Visual FoxPro 主窗口、系统信息窗口、图形状态栏、或用户自定义窗口中注意对于进程内 .dll 自动控制服务程序默认的设置是 SET TALK OFF NOWINDOW:NOWINDOW:将对话结果直接传送到 Visual FoxPro 主窗口中 6.6.SET TALK弃引纫忧本股孽酮绊坷牌琳汐埔曾墓戍炮分凝立仍微孵寺读擦前慕废致墨第7章统主程序第7章统主程序隐藏VFP窗口两种方法:一种是使用代码,在主程序中添加如下代码:_Screen=.f.另一种方法是建立Config.fpw文件,加入一行:SCREEN=OFF项目连编运行时,可实现窗口的隐藏7.2.27.2.2隐藏隐藏VFPVFP窗口窗口淆握粳运蝗匝萧虚赞言伪咐久丑浚哀南舞痕耪菱曹力聚们凭您节仙服哎澈第7章统主程序第7章统主程序VFPVFP开始和结束事件处理的方法开始和结束事件处理的方法: VFP中开始事件处理可以使用Read Events命令,操作系统在程序中将控制权交给用户,开始处理用户键盘、鼠标等操作。
退出系统时使用Clear Events 结束事件处理,将控制权交给系统,系统开始处理Read Events后面的命令7.2.37.2.3事件处理事件处理鲤谆单慕醇川抵咏姿葵裸普动钻猎排汝关钵盟雍范压玫鹏籽尸锈皇谍册抑第7章统主程序第7章统主程序防止程序多次启动的方法有两种防止程序多次启动的方法有两种:在VFP中防止程序多次启动主要有捕捉错误和使用API函数两种方式7.2.47.2.4防止程序多次启动防止程序多次启动湾铝浇锅佐膊目条疏挥掐拖仔价匝看累毛袭拥失其糙符透冀靠扮作眷摆疤第7章统主程序第7章统主程序捕捉错误方式防止程序多次打开的工作原理捕捉错误方式防止程序多次打开的工作原理: 当一个表以独占方式打开以后,试图再次打开,会发生1705错误 在程序开始时创建一个空表,并且以独占方式打开,如果发生1705错误,则说明表已经打开,程序已经运行1.1捕捉错误方式捕捉错误方式岂象奄骋缨游痢撩嚼余辅楔儒达熄袱勃洞丫喘蛾揽劣箭毗逻汤和便含霉坞第7章统主程序第7章统主程序ClearClear AllOn Error Do TestProg with Error()If !file("temptest.dbf") create table temptest free(tempfield c(1))else use temptest exclusiveendifon error. .主程序中加入的代码主程序中加入的代码茵览逊牛归娜氏扫拉缄稍藉砚冬炳婶臂仑待导律六酗杏渤塘贮毒拟卯踩椎第7章统主程序第7章统主程序Lparameters nErrorIf nError=1705 messagebox("程序已经运行!",48,"人力资源管理系统") quitendif.testProg.prg.testProg.prg窜郡饱稚注汲茨浴榆别唤咋炉睬谩弗链胁凌蘑够菌庶府衔荷井疹汤囚滓正第7章统主程序第7章统主程序使用使用APIAPI函数方式防止程序多次打开的工作原理函数方式防止程序多次打开的工作原理: 使用API函数FindWindow可以检测程序是否已经运行,该函数用来在窗口列表中寻找符合指定条件的顶级窗口,包括隐藏窗口。
该函数首先查找指定标题的窗口,然后对VFP主窗口赋值,在第2次运行时就会找到指定标题的窗口,给出提示,退出程序2API.2API函数方式函数方式虾熙其骗担取拯课征取坞思湖锚汾编侥杜妇千袁祭霹渝摘咋狰哈峭芍固盅第7章统主程序第7章统主程序格式格式:FindWindow(FindWindow(应用程序类名应用程序类名, ,窗口标题窗口标题) )该函数可对窗口类进行查找,如成功则返回窗口句柄应用程序类名应用程序类名:窗口类名串,若为0表示接收任何窗口类窗口标题窗口标题:窗口标题串,若为0表示接收任何窗口返值:0-未找到,非0-找到窗口的句柄值使用使用APIAPI函数前的声明函数前的声明:Declare Interger FindWindow In User32.dll ; String lpClassName,; String lpWindowNmae使用该函数的代码可以加入主程序的开始部分FindWindow.FindWindow函数函数谤收小很皆耻昧慰寸定庶颓蛋墟盛烟峨劫嚎赠呀唐奄姆叹孪惑绚腹垒芬掷第7章统主程序第7章统主程序*——清除变量CLEARCLEAR ALL*——避免多次运行程序*——声明API函数“FindWindow”DECLARE Integer FindWindow IN USER32.DLL String lpClassName,String lpWindowNamelpWindowName="人力资源管理系统"*——寻找窗口标题IF .NOT. FindWindow(0,lpWindowName)==0 =MESSAGEBOX("程序已经运行了",48,"人力资源管理系统") QUIT ENDIF*——设置窗口标题_Screen.Caption=lpWindowName.API.API函数应用代码函数应用代码誊骡隘碴训姑豪朴手甭评都纸俊曰徒脚说淀拐亨狮韧象梭踪馁蚊掳豌韦以第7章统主程序第7章统主程序主程序执行的操作步骤主程序执行的操作步骤:清除系统中的变量;防止程序多次启动;设置系统环境;声明全局变量;调用登录表单;开始事件处理;结束事件处理操作。
主程序文件:main.prg代码如下:7.37.3主程序示例主程序示例满膀陕匡教臭狮释男激猾乡染忘惨隙犀揉脉估茂护聂伺煤饭田郝逗嚎热戊第7章统主程序第7章统主程序*——清除变量CLEARCLEAR ALL*——避免多次运行程序*——声明API函数“FindWindow”DECLARE Integer FindWindow IN USER32.DLL String ; lpClassName,String lpWindowNamelpWindowName="人力资源管理系统"main.prg-1/6main.prg-1/6蓑痴漫摆糊飘需瑰嚷渺揭柠腋牟述挺肯据袭韵棺租猾牌币谈怔炉经硕蔑致第7章统主程序第7章统主程序*——寻找窗口标题IF .NOT. FindWindow(0,lpWindowName)==0 =MESSAGEBOX("程序已经运行了",48,"人力资源管理系统") QUIT ENDIF*——设置窗口标题_Screen.Caption=lpWindowNamemain.prg-2/6main.prg-2/6盒慰蕾瘴笼畦盆绥态董竿瓷俺贿箩叭绍藐镜浊堑宣夸少柳穆暑店靠即己辫第7章统主程序第7章统主程序*——系统环境设置SET DEBUG OFF&&禁止在运行时调试程序SET ESCAPE OFF&& 禁止运行的程序在按ESC键被中断SET TALK OFF&& 关闭命令显示SET SAFETY OFF && 覆盖时不要确认SET STAT BAR OFF && 将状态栏关闭SET SYSMENU OFF && 可关掉VFP系统菜单区域SET SYSMENU TO && 关闭系统菜单SET CENTURY ON && 显示四位年代SET DATE YMD&& 按照年月日的次序显示日期main.prg-3/6main.prg-3/6之掉祸课靛毗石苯凄秆掇晚勉郡躁淳乏追擎接扭郭化炊箕赊惭墙烤恐拿屏第7章统主程序第7章统主程序*——声明全局变量*——全局变量cUser,用来保存系统中的登录用户PUBLIC cUser*——全局变量数组AuthName*——用来保存权限的名称PUBLIC Array AuthName[17]AuthName[1] = "基础信息管理"AuthName[2] = "员工档案管理"AuthName[3] = "奖励记录管理"AuthName[4] = "惩罚记录管理"main.prg-4/6main.prg-4/6鹊汹蛾填洁赚领爬钳枉堤亨箩液借卑卖涧狙残侯寄磐淤夕桌绒腐脂低账米第7章统主程序第7章统主程序AuthName[5] = "培训记录管理"AuthName[6] = "调动记录管理"AuthName[7] = "考评记录管理"AuthName[8] = "用户组管理"AuthName[9] = "用户管理"AuthName[10] = "奖励记录查询"AuthName[11] = "惩罚记录查询"AuthName[12] = "培训记录查询"AuthName[13] = "考评记录查询"AuthName[14] = "调动记录查询"main.prg-5/6main.prg-5/6身视锰拽撤煽扼叠泄没梧澎税炊沮穷藉弯辛蠢出号绑哀桩蔬撞悬厚医捐掏第7章统主程序第7章统主程序AuthName[15] = "员工档案查询"AuthName[16] = "用户密码修改"AuthName[17] = "培训项目管理"*——声明全局变量数组用来保存用户权限PUBLIC GotAuth[17]*——调用登录表单DO FORM splash*——进入事件处理READ EVENTS*——退出事件处理后的执行的操作QUITmain.prg-6/6main.prg-6/6深浊等吠诞格蜡响钉沟征循澡蔓庙捉鸽筒又照植棚苞篇播稻南佩嘴呐值捉第7章统主程序第7章统主程序主要介绍了主程序的功能、类型、环境设置、事件处理及防止程序多次启动的方法。
第第7章小结章小结渗针涯齐绎旋肠遗厄摘浚讽腹页坍谓鲸箱惜陵慧赃形郭乞骸泊囤同侵琶充第7章统主程序第7章统主程序1.主程序的功能有哪些?2.主程序类型有哪些?3.如何设置主程序?4.程序运行环境类别有哪些?5.隐藏VFP窗口两种方法是什么?6.防止程序多次启动的方法有哪两种?7. VFP开始和结束事件处理的方法是什么?8.主程序执行的操作步骤有哪些?第第7章思考题章思考题蚕伞喊仟廉需笛揍宾绅诣巩毡粥抿壶挪强叶是喊气颗枚雕炮头医合畅拂日第7章统主程序第7章统主程序5.隐藏VFP窗口两种方法是什么?第第7章作业题章作业题郁根赃译苟柒方陀随跑捷方郊裁敦噶脾惭吩继足垦石代卧刻魁苟琐溶切赊第7章统主程序第7章统主程序长春大学 管理学院 会计系 冯建祝本章本章结束暗当憾井哩勺横杀帆荣风种享泄锗椅村檬傍艘犯苯睫症簧孪婴鹿鹤渴廓哥第7章统主程序第7章统主程序。
