开始了机房的重构,本来以为这是一件很是轻松的事情,但是在开始的初期却碰到了许多的困难导致了不能前行,止步于一个地方,但是这恰是最重要的学习过程,真的是很重要。
一、数据库的建立
建立数据库真的是一件很麻烦但是很有意思的事情,在建立数据库之前,总是找到借口来拖着,不建立,认为数据库是个很麻烦的东西,建立起来很是麻烦,所以就脱了好久才建立起来,也没有按照先画E-R图后建立数据库的顺序来做,但是却发现了有意思的地方。由于这次建立数据库不是不了解需求才去建立的,所以比较的心应手,但是又考虑到了要优化以前的表关系,所以自作主张的把学生的表给拆了,拆成了4个表,分别是学生信息,班级信息,卡信息,注册信息,这四个表,然后再根据教师以及记录等功能又建立了剩下的表,最后有了12张表,但是E-R图又怎么画呢,尝试了EA后发现太难看和难用了,果断用了DiagramDesigner,于是效果整体好了很多,如图:
由于是第一次画,所以只是这样了,曾经考虑过学生和可上机学生之间的取舍关系,但是在这里面对应的就是注册卡的学生的表,所以也就没有改掉。
二、窗体的建立与调整
建立窗体的时候还是没有费多大的力气,就是在调试的时候发现最开始打开的窗体不能被close掉,否则整个程序都会被停止,这是怎么个情况呢,在网上查了很多的资料后知道了在程序的设置里面有一个关机模式,默认情况下是启动窗体关闭时,改成最后一个窗体关闭时就可以了,如图:
这就解决了关闭窗体的问题。
第二个遇到的问题就是SetParent函数的问题,和MDI子窗体的问题,在vs中窗体的属性中没有是否是MDI子窗体的选项,只有在代码中才能初始化这个属性,让我很是费解,但是可以达到效果。如下代码:
Dim instruct As New frmInstruct第二句就是设置MDI子窗体的父窗体是谁的语句。
instruct.MdiParent = Me
调用SETPARENT这个API函数之前是要声明的,要注意的是和VB6.0中不同的是这里的变量类型都要改成integer(以前是long)如代码:
Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Integer, ByVal hWndNewParent As Integer) As Integer然后就可以调用了,但是这里还要注意的是,在vs中句柄的英文名是handle,所以使用的时候这么写:
SetParent(instruct.Handle, Me.PictureBox1.Handle)在这里浪费了我一晚上的时间来处理这个问题呢!
Ps:vs中的MDI 窗体是可以设置图片的,只是不显示而已,所以还得用原来的setparent函数。
三、subMain问题
在VB6.0的时候我们启动窗体都是用的submain()函数来作为程序的开头的,但是到了vs中即使是在一个模块里面写上了submain,也是看不到在启动程序里面有选择submain这一项,这是为什么呢?因为vs默认建立的窗体应用程序,在UI层的属性里面有这个选项:
应用程序框架就是指的以窗体为基础的程序,所以在启动项里面只有窗体的选项,并没有submain函数的选项,所以把这个对勾去掉就可以使用submain函数了。