1、 房地产信息管理系统的设计与开发 二○一○ 年 三 月 十 日 房地产信息管理系统的设计与开发 【摘要】该系统为满足中小房屋销售公司业务管理的需要,按照一般的房产销售管理业务流程,通过模块化设计,能够对楼盘、楼房、房屋、客户信息,房屋销售情况及员工业绩等多种信息进行全方位管理。 系统由基础信息、房屋销售、统计报表和系统设置等四大模块组成。每个大的模块又由多个分模块组成,比如,房屋销售模块中又包括房屋销售管理、客户资料管理、销售收款管理和客户退款管理等,能够满足房屋销售业
2、务各个环节的需要。系统的报表生成工具和分析工具使房屋销售情况和公司员工的业绩一目了然。系统的设置模块除了密码等常规设置外,还有权限设置,不同权限的人员进入不同操作模块,使数据具有保密性。 系统使用Delphi 7.0和SQL Server数据库为开发平台,系统具有很好的安全性。 该系统还具有操作界面友好、使用方便、维护简单等显著特点,是中小房产企业管理销售业务的有力工具。 【关键词】商品房销售管理系统,SQL Sever 2000数据库,Delhpi 7.0, 毕业论文 The Design and Development of human
3、resources management system 【Abstract】 [单击此处添加外文摘要,内容应与中文摘要一致] 【Key Words】 [单击此处添加外文关键词],[单击此处添加外文关键词],[单击此处添加外文关键词],[单击此处添加外文关键词],[单击此处添加外文关键词] 目录 第1章 概要 1 1.1房地产信息管理系统的功能结构图: 1 1.1.2 1 1.2 研究的基本内容 1 1.2.1 基本框架 2 1.2.2 研究的重点及要解决的关键问题 2 第2章 数据库设计 3 2.1房地产信息管理系统数据库的
4、表 3 2.1.1楼盘基本信息表的字段 4 2.1.1客户信息表的字段 5 2.1.2 系统流程图 6 2.2 系统开发使用的技术 6 2.2.1 [单击此处添加条标题] 6 2.2.2 [单击此处添加条标题] 6 第3章 主窗体设计 7 3.1主窗体设计概要 7 3.1.1 主窗体详细设计 8 3.2 数据模块设计 15 第4章 登录模块设计 18 4.1 登录模块的窗体设计 18 4.1.1 登录窗口样式 18 5.1.2 登录模块的数据控件 19 4.1.2 登录模块代码设计 20 5.1.3 编译成功后的登录窗口 23 第5章 功能模块设计 25 5
5、1 房型资料录入模块设计 25 5.1.1 在dm窗体中添加数据控件 25 5.1.2 窗体详细设计 26 5.1.3 房型资料录入窗体的代码设计 27 5.2 楼盘楼房资料录入模块的设计 32 5.2.1 做好连接数据表的准备 33 5.2.2 楼盘楼房资料录入模块的界面设计 35 5.2.3 楼房资料录入模块的设计 37 5.2.4 [单击此处添加条标题] 38 5.2 [单击此处添加节标题] 38 5.2.1 [单击此处添加条标题] 38 5.2.2 [单击此处添加条标题] 38 第6章 制作系统的安装程序 39 6.1 InstallShield概述 39
6、 6.1.1 [单击此处添加条标题] 39 6.1.2 [单击此处添加条标题] 40 6.1.3 [单击此处添加条标题] 40 6.2 [单击此处添加节标题] 40 6.2.1 [单击此处添加条标题] 40 6.2.2 [单击此处添加条标题] 40 结论 42 参考文献 43 附录 46 致谢 47 图目录 图2.2 系统流程图 6 图3.1 主窗体页面 7 图3.2 一级菜单设计图 8 图3.3 【房屋销售管理】的二级菜单设计图 9 图3.4 其余三项菜单的二级菜单设计图 9 图3.5 菜单的详细内容 10 图3.6 设置image控件的”pictu
7、re”属性以载入背景图 10 图3.7 载入背景图后的样式 11 图3.8 将StausBar1控件分成三段 12 图3.9 状态条第三段显示系统时间 13 图3.10 设计好的工具栏 14 图3.12 选择DataModule窗体 15 图3.13 DataModule窗体中的连接控件 16 图3.14 fdc_conn控件的Connection属性 16 图3.15 数据库连接成功 16 图4.2 设置DBLookupCombobox1控件的属性 19 图4-3 为登录窗体访问数据库要求的数据控件 20 图4-4 登录用的用户表 20 图4-5 登录窗口 24
8、 图5.1 编辑CommandText属性 25 图5.2 编辑CommandText属性 26 图5-3 设计好的房型资料录入窗体 27 图5-4 编译好的房型资料录入窗体 28 图5-5 开始录入房型资料 28 图5.1 [单击此处添加图标题] 31 图6.1 [单击此处添加图标题] 32 表目录 表3.1 人员基本资料表(JBZL) 7 表3.2 简历信息表(JLXX) 7 表4.1 [单击此处添加表标题] 10 表5.1 [单击此处添加表标题] 12 表6.1 [单击此处添加表标题] 14 第1章 概要 1.1房地产信息管理系统的功能结构图:
9、 房地产信息管理系统的功能很多,系统大而复杂,设计起来非常繁琐,尤其是销售部分,相互关联的部分很多,窗口套窗口。所以在设计之前,要把模块之间的关系梳理清除。 系统由基础信息、房屋销售、统计报表和系统设置四个大的功能模块组成。 图1-1 房地产信息管理系统功能结构图 1.1.2 基础信息管理 房屋销售管理系统的基础信息中,关于楼房的信息有楼盘(即我们平时所说的小区)、楼房(即该小区中的第几号楼)、和房屋(即户)三层基础资料。 首先是要建立一个楼盘(小区)的资料,即数据库中的f_build表(楼盘基本信息表),一个实用化
10、的楼盘基本信息表有23项内容,比较复杂。接下来是建立每一座楼的基本信息,即数据库中f_house表(楼房基本信息),表中的明细也有15项之多。关于楼房的第三项基本数据是具体到每一户,就是数据库中的f_room(房屋信息表),动手设计之前,一定要牢记这三张表。此外还有公司员工信息、客户信息等。 第2章 数据库设计 2.1房地产信息管理系统数据库的表 用SQL Server2000创建数据库,取名为fdc.mdf. 数据库一共有30张表,表名见表1: 表1 fdc.mdf数据库的表 表名称 功能描述 f_appertain
11、house 附属房产 f_build 楼盘基本信息 f_buy_factor 客户购买因素信息表 f_buy_will 客户购买意向 f_customer 客户信息 f_customer_change 客户更换信息 f_customwer_return 退房信息表 f_customer_work 客户工作信息 f_employees 员工信息表 f_family_structure 家庭结构 f_house 楼房基本信息 f_house_aspect 楼房朝向信息表 f_house_type 楼房类型 f_house_structure
12、楼房结构 f_mode 房型基本信息表 f_pay_item 付款项目表 f_pay_mode 支付方式表 f_pay_plan 付款安排 f_post 岗位表 f_price_reflect 价格反映表 f_require_area 需求面积 f_require_floor 需求楼层 f_room_mode 需求房型 f_room 房屋信息表 f_room_format 房屋格式表 f_room_pay 房屋付款 f_standard 装修及设备标准 f_tube_net 网管资料 f_sys_company 公司信息 f_use
13、r 用户资料 在上述的30张表中,最重要的是下列三表,楼盘à楼房à房屋。 1. f_build 楼盘基本信息。就是记录一个新建楼盘,即“小区”的所有信息; 2. f_house 楼房基本信息。一个楼盘下面有多栋楼房,该表记录楼房信息。 3. f_room 房屋基本信息。每栋楼房有多个户数,该表记录每户的信息。 2.1.1楼盘基本信息表的字段 表2 楼盘基本信息表f_build 的字段 字段名称 字段类型 主键 允许为空 默认值 功能描述 楼盘编号 Varchar(20) 是 标识一个楼盘 楼盘名称 Varchar(20) 是
14、 地理位置 Varchar(20) 是 占地面积 Varchar(20) 是 建筑面积 Varchar(20) 是 建筑占地面积 Varchar(20) 是 道路广场占地面积 Varchar(20) 是 建筑密度 Varchar(20) 是 容积率 numeric(9) 是 绿化面积 varchar(20) 是 绿化率 numeric(9) 是 开发日期 datetime(8) 是 time_defau
15、lt 楼房数量 numeric(9) 是 车位数 numeric(9) 是 房屋数量 numeric(9) 是 出售数量 numeric(9) 是 预定数量 numeric(9) 是 出售未审核数量 numeric(9) 是 未出售数量 numeric(9) 是 楼盘备注 varchar(20) 是 建档人员 varchar(20) 是 建档日期 datetime(8) 是 time_default
16、 楼盘图片 image 是 2.1.2 楼房信息表的字段 楼房信息表f_house的字段如表3所示。 2.1.3 房屋信息表的字段 楼房信息表f_house的字段如表4所示。 2.1.4客户信息表的字段 表5列出的是客户信息表的字段。客户信息表也是本系统的重要数据表。 表5 客户信息表f_customer 的字段 字段名称 字段类型 主键 允许为空 默认值 功能描述 客户编号 Numeric(9) 是 客户名称 Varchar(10) 是 性别 Varchar(2) 是 年龄
17、 Varchar(3) 是 职业 Varchar(16) 是 身份证号码 Varchar(23) 是 邮编 Varchar(10) 是 联系方式 varchar(15) 是 工作单位 varchar(40) 是 联系地址 varchar(40) 是 家庭结构 varchar(16) 是 需求面积 varchar(16) 是 需求楼层 varchar(11) 是 需求房型 varchar(10)
18、 是 购买意向 varchar(10) 是 价格反映 varchar(10) 是 支付方式 varchar(10) 是 考虑因素 varchar(10) 是 信息来源 varchar(10) 是 购房数量 numeric(9) 是 购房金额 float(8) 是 已付金额 float(8) 是 未付金额 float(8) 是 备注 varchar(100) 建档人员 varchar
19、10) 建档日期 datetime(8) 修改人员 varchar(8) 修改日期 datetime(8) 2.1.2 系统流程图 图2.2 系统流程图 第3章 主窗体设计 3.1主窗体界面设计 3.1.1 主窗体界面设计概要 主界面首要任务是要通过主菜单给用户提供调用各功能模块的选择,因此设计菜单是主窗体设计的第一步。另外,与主菜单相配合的是工具条的设计。工具条上放了许多使用频率高的快捷键,以提高使用者的操作速度。 另外,在主菜单的最下方有一个状态栏,该栏用于显示系统的
20、当前状态,例如当前的操作员和系统时间等。 主窗体运行的结果如图3-1所示。 状态条 工具条 主菜单 图3.1 主窗体页面 3.1.2 主窗体界面详细设计 1. 启动Delphi 开发平台,将自动弹出的窗体设为主窗体,并命名。 主窗体的name属性:mainform; 主窗体的单元文件名:mainunit.pas; 工程文件名:fdcbuilding.prj。 1)主菜单设计 向主窗体中拖放一个主菜单控件,使用它的默认名:Mainmenu1。 在Mainmenu1 上按右键,从弹出的窗体中,选择“Menu Designer”以设计主菜单。主菜单的第一级有【房屋销
21、售管理】、【数据统计报表】、【基本资料录入】、【系统设置】和【帮助】等5项。具体内容如图3-1所示。 这条线(分隔符)是在Caption属性中输入英文状态下的“-”号 二级菜单 一级菜单 图3.2 一级菜单设计图 2)设计二级菜单 在Menu Designer 中按照图3.2 中的标识完成【房屋销售管理】菜单的二级菜单的设计。 选择热键 接着输入二级菜单名 先输入一级菜单名 图3.3 【房屋销售管理】的二级菜单设计图 接下来分别设计【数据统计表表】、【基本资料录入】、【系统设置】和【帮助】菜单的二级菜单。设计好的二级菜单如图3-4所示。 图3.4
22、其余三项菜单的二级菜单设计图 至于【帮助】菜单的二级菜单只有“关于”和“帮助 F2” 这2项。 我们可以展开Delphi 设计平台左上角的“object treeview”视窗查看主窗体“MainForm”的全部菜单内容,如图3-5所示。 这是分隔符 图3.5 菜单的详细内容 3) 主窗体背景设计 在主窗体(MainForm)中放入一个“image控件”,在它的“picture”属性中载入一张保存在本工程文件目下(根目录)的图片作为背景图。 图3.6 设置image控件的”picture”属性以载入背景图 定时器 图3.7 载入背景图后的样式
23、 4) 主窗体的状态栏控件设计 在主窗体的最下方添加TStatusBar(在控件栏的Win32页)组件,该组件用来显示主窗体运行时的状态,用默认名“StausBar1”。 将StausBar1分成三个区域,分别是StatusPanel1、StatusPanel2和StatusPanel3。第一个区域显示公司名称,第二个区域显示当前的操作员,第三个区域显示系统时间。为此,要在主窗体中添加一个时间控件。 这些功能的实现是靠代码完成的,稍后介绍这些代码。 将状态条分段的操作方法是:在StausBar1 控件上按鼠标右键,弹出“Editing StatusBar1.Panels” 编辑窗
24、在该编辑窗上面按右键,选择弹出窗的“Add”,将StatusBar1分成三段,分别是0-STatusPanel1、1-STatusPanel1、2-STatusPanel1。然后在其“Width”属性中设置每一段的宽度,如图3-8 所示。 设置第一段的 宽度为150 每选择一次Add就会增加一段 图3.8 将StausBar1控件分成三段 5) 状态栏的代码设计 ●为了在状态栏的第一段中显示目前登录者的姓名,首先在主窗体的“public”域中声明一个UserName的字符串变量: public name:string; username:string; ●为了在状态栏
25、的第三段中显示目前的系统时间,要在主窗体中添加一个时间控件,双击主窗体中的定时器控件,在弹出的代码编写器中编写如下代码: procedure Tmainform.Timer1Timer(Sender: TObject); begin Mainform.StatusBar1.Panels[2].Text :='现在时间: '+datetimetostr(now); end; 编译后就可以在状态条的第三段看到系统时间,如图3-9所示: 工具栏 显示系统时间 图3.9 状态条第三段显示系统时间 6) 主窗体工具栏的设计 在主窗体中添加一个工具栏,工具栏上放置若干个快件
26、键,以提供某些快速操作。 添加工具栏的操作方法是: 1. 从Win32页中拖放一个ToolBar1 控件到主窗体中。设置Align属性(对齐)为alNone;设置DragKind属性为dkDock。 2. 从Additional 页中拖放10个SpeedButton按钮到ToolBar1上。这些SpeedButton按钮作为工具栏的快捷键; 3. 给每个按钮添加上相应的图标和文字。 为了能给这些SpeedButton按钮添加上图标,首先要准备好图标(素材),并将他们存放在一个专门的文件夹中,然后在主窗体中添加一个ImageList 控件,使用默认名ImageList1。选择Speed
27、Button1,通过它的Glyph 属性添加上为它准备好的图标,并从它的Caption 属性中输入中文名。 设计好的工具栏ToolBar1如图3-10所示: 图3.10 设计好的工具栏 7) 主窗体工具栏的拖曳 工具栏不一定始终停靠在一个个固定的地方,而是随时可以变换地方,这就要用到控件的拖曳技术。 ●ToolBar1的Align属性设置为:alNone,即不固定位置; ●ToolBar1的DranKInd属性设置为:dkDock; ●在主窗体的最下方添加一个Panel1组件,它的Heigh属性设为1;Align属性设为alBottem;Docksite设为True ●
28、程序的相关代码: procedure TMainForm.FormCreate(Sender: TObject); begin toolbar1.Hide; end; procedure TMainForm.ToolBar1StartDock(Sender: TObject; var DragObject: TDragDockObject); begin panel1.Height:=1; end; procedure TMainForm.Panel1DockDrop(Sender: TObject; Source: TDragDockO
29、bject; X, Y: Integer); begin panel1.Height:=toolbar1.Height; end; 3.2 主窗体的第一次代码设计 主窗体的界面设计好后,着手编写主窗体初始化的三段代码,以便先让它空转起来。 1)procedure FormShow(Sender: TObject); 2)procedure FormCreate(Sender: TObject); 3)procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); //按下F功能键所执
30、行的功能 4)为了在编译完成后能退出程序,可先编写主菜单“【系统设置】”中的“退出系统”项的代码: procedure TMainForm.N27Click(Sender: TObject); //退出系统菜单 begin Close; end; 由于内容较多,代码就不一一列出,具体的代码请参见程序设计部分。 同时要在主窗口的代码编辑窗口的public处设立如下变量,以备后用: public modelr,buildlr,comlr,emplr,sale,gather,plan,payreturn, saler,house,custpay,cust,cust
31、fx,user1,databack:boolean; name:string; username:string; 3.3 数据模块设计 在Delphi的数据库应用程序设计中,数据库与SQL Server 服务器的连接是通过数据模块(Data Module)来实现的。 从菜单“File” | “New” | “Other” ,弹出选择“Data Module”模版窗口,从该窗体中点选Data Module 项,如图3-12所示。 点选Data Module 图3.12 选择DataModule窗体 在新生成的Data Module窗体中,从“ADO”组件页中拖放连接
32、数据库的“Connection” 组件,将其Name属性设为“fdc_conn”,再从“DataAceess”页中拖放一个“DataSource”控件将其Name属性设为“dsuser”,并给数据模版(窗体)命名为“dm” ,单元文件保存为:“dmunit.pas” 。设计好的数据模块如图3-13所示。 这些是登录页面访问f_User表所需的控件 DataSource控件 图3.13 DataModule窗体中的连接控件 我们采用ADO数据库连接技术。 设置fdc_conn控件的Connection属性,以实现连接FDC.mdb数据库。 按下图首先选择提供程序“Microso
33、ft OLE DB for SQL Server”,然后按右边所谓图示填写数据库所在的服务器名和将要连接的数据库“FDC”,最后确认数据库连接成功。 要连接的数据库名 选择服务器 选择提供程序 图3.14 fdc_conn控件的Connection属性 图3.15 数据库连接成功 在以后的设计中将在“dm”窗体中逐次添加其他数据控件。 第4章 登录模块设计 4.1 登录模块的窗体设计 程序的启动画面消失后,将弹出登录窗体,用户通过输入用户名和密码就可 以进入系统
34、然后根据用户权限打开相应的模块。 用户登录的作用是保护应用程序中的相关资料,以防止无关人员对程序信息的肆意破坏。当进入程序后,用户只能根据用户拥有的权限对程序中的相关模块进行相应的操作。为了防止无关人员在数据库中获取用户信息,而对应用程序进行操作,可以先对用户名和密码进行再加密后存入数据库中,这样用户名和密码就不太容易被盗取,使应用程序变得更加安全。 当没有输入用户名和密码时,程序会提示“请输入正确的用户名和密码”,当 用户名或,密码错误时,系统会提示:“对不起,没有这个用户名”或“密码错误”,系统重新回到登录窗口。一个用户最多允许输入三次用户名和密码,超过三次,系统将退出。 4.
35、1.1 登录窗口样式 登录窗体的一般样式如图4-1。 图4.1 登录窗体布局图 窗体中用到的图片要事先准备好,保存在工程文件的根目录下。 要注意的是,用户名后面的输入框采用的控件是位于DataControls页的DBLookupCombobox1。用它可以从下拉列表框中选择已经保存在User数据表中的用户,不必每次输入用户名。 读取User表中的“用户名称”字段 DBLookupCombobox1的属性设置图4-2所示: 数据模块中的一个 名为“dsuser”的D
36、atasource控件 外形设置 图4.2 设置DBLookupCombobox1控件的属性 5.1.2 登录模块的数据控件 登录窗体中输入用户名和密码之后,点击键,程序代码就去访问“FDC.mdf” 数据库中的“ User” 数据表,通过函数()将输入的用户名和密码与User 表中保存的数据是否一致。如果一致,程序就打开主窗体,供登录者进行所需的操作;否则会弹出提示框,要你输入正确的用户名和密码,而且最多只能连续输入三次,若三次都不成功,那么程序就退出。 为了能够实现这些功能,我们必须在数据模块(DataModule)中放置如下数据控件: DataSource控
37、件 它的DataSet属性:UserDataSet ADODataSet控件 它的CommandText属性: select * from f_user 表控件,它的TableName属性:f_user 图4-3 为登录窗体访问数据库要求的数据控件 4.1.2 登录模块代码设计 登录系统时既要检查用户名是否存在,还要验证密码是否正确,而且还要获 取用户的权限供后面窗体调用。用户名、密码和用户权限存储在f_user表中,字段名有用户编号、用户名称、和用户密码以及用户权限等多项,参见图4-4: 代表用户有权进行房型录入操作 图4-4 登录用的用户表 检验
38、通过后,程序进入主窗体。 登录模块的主要程序代码如下: unit loginunit; private { Private declarations } public times:integer; //设置一个计算登录次数的参数 { Public declarations } end; var loginform: Tloginform; implementation uses dmunit, mainunit; //登录窗口要与数据模块窗体和主窗体相关联 {$R *.dfm} procedure Tloginfor
39、m.DBLookupComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); //当点击用户名输入框时执行的动作 begin if key=13 then //按下回车键 edit1.SetFocus ; end; procedure Tloginform.DBLookupComboBox1Enter(Sender: TObject); begin dblookupcombobox1.Color:=clcream; end; procedure Tloginfo
40、rm.DBLookupComboBox1Exit(Sender: TObject); begin dblookupcombobox1.Color:=clskyblue; end; procedure Tloginform.Edit1Enter(Sender: TObject); begin edit1.Color:=clcream; //Edit1是密码输入框 end; procedure Tloginform.Edit1Exit(Sender: TObject); begin edit1.Color:=clskyblue; end; pro
41、cedure Tloginform.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=13 then bitbtn1.SetFocus ; end; procedure Tloginform.BitBtn1Click(Sender: TObject); //按下键 begin if dm.usertable.RecordCount=0 then begin Mainform.Username:='超级用户'; mainf
42、orm.StatusBar1.Panels[1].Text:='操作员: '+mainform.username; mainform.modelr:=true; 主窗体的状态条 mainform.buildlr:=true; mainform.emplr:=true; lr:=true; mainform.sale:=true; mainform.gather:=true; mainform.cust:=true; 主窗体中的那些菜单 因为登录的是“超级用户” 所有的菜单都是可操作的 mainform.pl
43、an:=true; mainform.payreturn:=true; mainform.saler:=true; mainform.house:=true; mainform.custpay:=true; mainform.custfx:=true; mainform.user1:=true; mainform.databack:=true; dm.usertable.Active:=false; close; end else begin if edit1.Text<>tr
44、im(dm.usertable.FieldValues['用户密码']) then begin times:=times+1; //登录次数+1 if times<3 then begin messagebox(self.Handle,'用户名称或用户密码不正确,请重新输入','提示信息',mb_iconinformation); edit1.SetFocus ; end else begin messagebox(self.Handle,'您已经
45、三次输入不正确,请退出','提示信息',mb_iconinformation); application.Terminate ; end; end else begin Mainform.Username:=dblookupcombobox1.text; mainform.StatusBar1.Panels[1].Text:='操作员: '+mainform.username; mainform.modelr:=dm.usertable.FieldValues['房型录入'];
46、 mainform.buildlr:=dm.usertable.FieldValues['楼盘楼房录入']; mainform.emplr:=dm.usertable.FieldValues['员工资料录入']; lr:=dm.usertable.FieldValues['公司资料录入']; mainform.sale:=dm.usertable.FieldValues['房屋销售管理']; mainform.gather:=dm.usertable.FieldValues['收款管理']; mainform.cust:=d
47、m.usertable.FieldValues['客户资料管理']; mainform.plan:=dm.usertable.FieldValues['收款安排查询']; mainform.payreturn:=dm.usertable.FieldValues['给客户退款管理']; mainform.saler:=dm.usertable.FieldValues['销售代表统计']; mainform.house:=dm.usertable.FieldValues['楼房销售统计']; mainform.custpay:=
48、dm.usertable.FieldValues['客户购订收款统计']; mainform.custfx:=dm.usertable.FieldValues['客户数据分析']; mainform.user1:=dm.usertable.FieldValues['用户管理']; mainform.databack:=dm.usertable.FieldValues['数据备份与恢复']; mainform.name:=dm.usertable.FieldValues['用户名称']; dm.usertable.Active
49、false; close; end; end; end; procedure Tloginform.FormCreate(Sender: TObject); begin dm.usertable.Open; times:=0; end; procedure Tloginform.FormClose(Sender: TObject; var Action: TCloseAction); begin dm.usertable.Active:=false; end; procedure Tloginform.FormShow(Sender: TObject); begin DBLookupComboBox1.SetFocus ; end; procedure Tloginform.BitBtn2Click(Sender: TObject); begin application.Terminate ; end; end. 5.1.3 编译成功后的登录窗口 运行后的登录窗口如图4-5所示。 图4-5 登录窗口 输入事先存放在用户表f_user中的用户名和密码,就可以进到主窗体。 图4-






