📄 疑难问题思索过程.txt
字号:
关于登陆的进度条动画问题——已解决
(2种方法:1.使用VB提供的经典进度条,优点是方便快捷,缺点是界面太难看。2.使用TIMER控制一个很小的图形并拉长。优点是相当美观,缺点是需要使用PHOTOSHOP来制作,费时费力,且需要与背景配合。本系统考虑到需要一个统一界面,采用第二种方法。)
关于全图形窗口移动问题——已解决
(见任意子窗体代码开头)
关于图形化工具栏替代问题——已解决
(frmmainbutton的全图形化控制在主窗体中的位置,用位图来替代按钮)
关于工具栏按钮动画问题——已解决
(用MOVE方法来控制多图形的切换,关键在X坐标。同样点击事件也是用X坐标来控制,这点非常重要)
关于工具栏随主窗体大小而长度变化保持满屏问题——已解决
(用REZISE方法来控制工具栏的大小,注意这里测试得出长度是比主窗体小123数值,还有原始图片的长度像素是1024才行)
关于工具栏的随主窗体启动时由上自下出来动画问题——已解决
(用一个TIMER来控制下来动画,注意是控制frmmainbutton的Top属性,而不是Height属性,否则就是变形动画而不是下拉动画了)
关于学员信息增加后人性化提示及时更新该学员的成绩信息——已解决
(两点:一是按确定后回到成绩添加信息窗体中,并已经帮用户填写好学期、姓名和ID,只需要直接填写成绩即可;二是按取消后系统自动添加该学员的相关信息到相应的学期表中,并设置所有成绩为0,这样可以保证学员信息和成绩信息一一对应,不会出现错误。)
关于清空数据库时选择性清空的问题——已解决
(使用SELECT CASE来控制T-SQL,然后调用清空函数)
关于点击清空数据库后的动画显示问题——已解决
(确定后,使用类似于登陆的进度条表示清空过程,并使用第二个窗体表示清空成功。)
关于主窗体的背景切换问题——已解决
(当点击相应的按钮时,使用SET PIC...来更换对应的背景。同样,MBOX窗体也是使用相同的办法来制作众多的信息框。缺点:需要使用PHOTOSHOP制作大量的位图,见图片资源文件夹中的图片。)
关于不会使用标签的问题——已解决
(在没有教过使用标签来制作分页,而MSDN上也对标签的使用介绍甚少的情况下,可以用2种方法来实现。第一种方法:决定使用双窗体来实现模拟标签页面,利用unload和show来切换页面。优点:可以利用全图形来制作相当精美的标签页面。缺点:制作相比较麻烦,需要制作透明按钮、编写各种状态的处理情况、编写上一个窗体的基本信息接受代码和下一个窗体的设置代码(比如实现切换后窗体的位置要不变)。同时如果标签的数目超过三个,将大大增加代码的数量。典型例子:增加数据功能的窗体frmadd1和frmadd2。第二种方法:所有的控件和位图都将放在同一个窗体上,利用透明切换按钮来控制相应的控件的有效无效和显示隐藏。优点是由于只有一个窗体,没有重复加载问题,对于外部的控制来说比较单一可靠。但缺点也很明显,由于控件众多,编写代码时相当繁琐,且需要编写相当多的状态处理情况代码,并且在加载时会变得缓慢。典型例子:编辑功能的窗体frmmdy。综合两种方法,个人比较赞同第一种,毕竟在编写frmmdy时已经成为一个痛苦的经历。frmmdy中有4个数据绑定控件、4个图形容器(每个容器中有7个捆绑了数据的文本框),4个捆绑了数据的下拉文本框。两个透明按钮分别控制这所有的控件的有效无效和显示隐藏。在frmmdy中的控制非常复繁,且容易出错。这个是两个标签时的情况,如果标签数增加,采用这种办法的代码量将成倍增加,所以个人推荐不使用第二种方法。)
关于双窗体的重复加载问题——已解决
(设定一个PUBLIC变量,储存窗体的加载状态,防止子窗体进入二级窗体时一级窗体还会被加载。典型例子:frmadd1和frmadd2、frmcleardb和frmcleardbing,以及frmserach和frmserach2。)
关于搜索结果的打印、保存问题——已解决
(2种方法:一是使用普通的print之类的函数和文件读取保存函数进行打印、保存。但需要编写大量的代码来实现。二是利用报表来同时实现两个功能。但注意需要避开系统提示“实时错误‘3705’:对象打开时,不允许操作”的问题。)
关于模糊查询的树形结构实现问题——已解决
(需要实现的效果:如同经典WINDOS的搜索,可以点击相应的限定条件弹出详细内容,而下面的选项将自动向下移动。当取消后详细内容消失,下面的选项将回到原来的位置。实现原理:当点击限定条件A时,将详细内容B显示(原先为隐藏),且下面所有限定选项在原来的Y坐标上加上详细内容的高度,若下面的限定选项C有详细内容D的,定义其详细内容D的Y坐标是原来Y坐标上加B的高度。同样,当取消限定选项时,所有操作相反即可。注意有一个特点:设定有5个限定选项,则最上面一个限定选项需要编写4种情况,而第二个限定选项需要编写3种情况...最后一个不需要编写情况。详细代码见窗体frmserach2)
关于模糊搜索中需要搜索两个表的问题——已解决
(比如在学员表中有ID和NAME,成绩表中有ID和MAK,其中ID对应,则可以使用语句SELECT STUMAK.* FROM STUINFO,STUMAK WHERE 1=1 and STUINFO.ID=STUMAK.ID来链接搜索两个表,且可以再添加如:and stumak.计算机基础 between 80 and 100 或者 and stuinfo.name='%东%'来进行模糊查询。说明:前一个是查询《计算机基础》成绩在80~100的所有学员的成绩信息,后一个是查询所有名字包含“东”字所有学员的所有成绩信息)
关于显示Help文档——已解决
(利用Dreamweaver制作好HTML文档,再导入QuickCHM即可打包成一个CHM。这里注意QuickCHM并不好用,不能像软件说的那样可以在其主界面中编辑,且不能保存成项目文件,否则下次打开时会陷入死循环。所以建议一次性做好所有页面,一次性导入和一次性打包。在VB中可以用通用对话框的SHOWHELP来打开帮助文档,但可惜,我没有发现它可以支持CHM文档,它好像只支持HLP文档。不过后来找到SHELL函数,用它可以调用EXE,这样足够了。我能将任意非exe文件变成EXE文件。最后将两个帮助文件转成的EXE文件放到了主程序的目录下,问题完美解决。)
关于锁定系统的问题——已解决
(锁定计算机需要做一个主窗体的文本框储存当前用户的密码,当锁定时,出现一个有模式的窗体,用户名已有,且不能修改,需输入相应密码,密码验证是和主窗体的密码框验证。如果密码输入错误将清空错误的密码,不提示任何信息。)
关于锁定系统时数据隐藏的问题——已解决
(目标是在锁定时不能出现主窗体的任何已打开的数据窗体,以保护数据安全。想出数种方法进行解决。1.最简单的办法是将所有已经打开的窗体关闭,但这样会丢失数据。但如果是隐藏的话,经实践,窗体在打开之前的Enabled均为空,不能使用IF判断。2.记录所有子窗体的数据,锁定时关闭其他子窗体,解锁时还原所有数据。这种办法最复杂且低效,没有实践过。3.锁定窗体带有屏蔽页面,锁定时,锁定页面最大显示以盖住所有子窗体。但经过实践发现需要最大化显示必须将锁定页面设置为子窗体,但有模式显示就不能在子窗体上实现。如果不是有模式用户在锁定时可以直接单击最小化、还原之类按钮跳过密码输入解锁这个环节,锁定将失效。4.建立一个专门的屏蔽子窗体——frmlockback,启动锁定时先启动屏蔽子窗体,再使用有模式加载锁定窗体。这样的好处是可以简单地屏蔽所有数据窗体,且可以设置为启动最大化。因为加载有模式锁定窗体后将不能点击任何除锁定窗体外的窗体,所以不用担心屏蔽窗体会被点击最大化按钮。还有这样做可以单独设置屏蔽窗体的背景和颜色,提高锁定时的美观度。我在屏蔽窗体中加载了一个循环动画,使用from_load时加载到其右下方,进一步避免了主窗体大小更改时锁定后屏蔽窗体的背景混乱状态。)
关于锁定系统后忘记的问题——已解决
(当锁定软件后,只能登陆当前用户的密码才能解锁。如果不慎忘记密码,只有强行结束该进程,但所有未保存数据会丢失。现提供一个解决办法:再启动一次《ACCP学员管理系统》,进入帐户管理,使用密码“123”登陆,查看相关的用户和密码。)
关于登陆窗体中类似于QQ的帐户记录功能——已解决
(建立两个INI文件,一个是user.ini,一个是users.ini,user.ini记录所有登陆过的用户名,users.ini记录所有登陆用户的登陆时间和退出时间。这两个用户文件可以提高登陆速度、供系统管理者查询使用情况。系统提供两个用户记录文件的初始化功能。)
关于登陆窗体的密码的强度检查——已解决
(检查密码的字符串,如果是全数字则显示低强度红色图标,如果是6位以上数字或者6位以下字母则显示中强度黄色图标,如果是6位以上的数字加字母则显示高强度绿色图标。登陆后状态栏提示该用户的密码强度。推荐用户使用高强度的密码。)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -