Delphi - 手把手教你基于D7+Access常用管理系统架构的设计与实现 (更新中)
前言
从事软件开发工作好多年了,学的越深入越觉得自己无知,所以还是要对知识保持敬畏之心,活到老,学到老!
健身和代码一样都不能少,身体是革命的本钱,特别是我们这种高危工种,所以小伙伴们运动起来!有没有健身撸铁,体脂现在是多少呀?明年(2020/03/22)徐州的马拉松有没有报名呀!?
扯的有点远了,接下来我将抽三天时间手把手教你基于Delphi7+Access,同时搭配第三方控件RC、AlphaControl(第三方控件主要用于美化界面),完成通用管理系统架构的设计。骚年,想想是不是还有点小激动?
涉及知识点
- Access数据库建立与关键表结构设计
- Delphi ADOConnection动态连接Access数据库
- Delphi前台fsMDIForm和fsMDIChild窗体设计
- dxBarManager方式通用菜单架构设计
- 主界面常见状态栏涉及与动态更新(软件版本信息、时间状态信息、登录组信息、滚动信息、当前时间...)
- Delphi通用登录界面设计及主界面载入交互
- MD5方式验证和保存密码
- 动态窗体菜单列表(打开窗体事件、销毁窗体事件)
- RzCheckTree方式设计常见用户权限
- imageList图标库
- 第三方控件:RC、AlphaControl皮肤控件
看到这么多知识点是不是感觉有点晕啊!
没关系,接下来我们一步一步实现!注意我们的口号,保持对知识的敬畏之心!
整体设计方案
这个是我们系统实现部分的一个设计方案,因为系统是通用的嘛,所以这里我就叫它Common Management System了,下面简称CMS。
这里暂不做DFEMA和PFEMA的深层次分析,有BUG的系统才是好系统,不然还要开发和维护人员做什么?(客户小姐姐:呸,渣男!)
项目实现
骚年,扶好了,我要教你开车了,啊呸,我要教你开发了。
Access数据库建立与关键表结构设计
创建一个Access文件,命名为DataX.mdb,再创建两张表,分别命名为sysUser和sysUserAuthority,其中ID栏位自动生成,VDate栏位为日期格式,其余栏位均为长文本根式,并添加如下数据,如下图。
Delphi ADOConnection动态连接Access数据库
启动Delphi7,新建一个项目,分别命名为:工程文件命名为:CommonManagementSystem.dpr,单元文件命名为:uMain.pas,主窗体命名为:MainFrm。
然后保存,注意文件的保存位置,因为接下来连接Access数据库时需要根据相对路径来,参考下图。
然后,在主窗体上放一个ADOConnection控件,命名为conMain。接下来在工程onShow事件中写如下代码:
procedure TMainFrm.FormShow(Sender: TObject);
begin
// 动态连接Access数据库
try
Screen.Cursor := crSQLWait;
ChDir(ExtractFilePath(Application.ExeName));
ChDir('..');
try //动态加载数据库
conMain.Connected := False;
conMain.ConnectionString := 'Provider=Microsoft.Jet.OlEDB.4.0;Data Source=' + GetCurrentDir + '\DataX\DataX.mdb' + ';User ID=admin;Password=;Persist security Info=False';
conMain.Connected := True;
conMain.LoginPrompt := False;
statusPaneAccess.Caption := '数据库已连接';//状态栏控件statusPane
Screen.Cursor := crDefault;
except
Screen.Cursor := crDefault;
statusPaneAccess.Caption := '数据库未连接';
MessageDlg('数据库连接失败,请确认!', mtError, [mbOK], );
end;
Screen.Cursor := crDefault;
except
statusPaneAccess.Caption := '数据库未连接';
MessageDlg('数据库连接失败,请确认!', mtError, [mbOK], );
end;
end;
OK,到这里工程动态连接Access数据库的功能已经实现了。
骚年,是不是感觉很简单,是的,你没有看错,跟着我一步步做,就是so easy!(
Delphi - 手把手教你基于D7+Access常用管理系统架构的设计与实现 (更新中)的更多相关文章
- 手把手教你基于C#开发WinCC语音报警插件「附源代码」
写在前面 众所周知,WinCC本身是可以利用C脚本或者VBS脚本来做语音报警,但是这种方式的本质是调用已存在的音频文件,想要实现实时播报报警信息是不行的,灵活性还不够,本文主要介绍基于C#/.NET开 ...
- 手把手教你基于Netty实现一个基础的RPC框架(通俗易懂)
阅读这篇文章之前,建议先阅读和这篇文章关联的内容. [1]详细剖析分布式微服务架构下网络通信的底层实现原理(图解) [2][年薪60W的技巧]工作了5年,你真的理解Netty以及为什么要用吗?(深度干 ...
- 手把手教你基于SqlSugar4编写一个可视化代码生成器(生成实体,以SqlServer为例,文末附源码)
在开发过程中免不了创建实体类,字段少的表可以手动编写,但是字段多还用手动创建的话不免有些浪费时间,假如一张表有100多个字段,手写有些不现实. 这时我们会借助一些工具,如:动软代码生成器.各种ORM框 ...
- python 手把手教你基于搜索引擎实现文章查重
前言 文章抄袭在互联网中普遍存在,很多博主都收受其烦.近几年随着互联网的发展,抄袭等不道德行为在互联网上愈演愈烈,甚至复制.黏贴后发布标原创屡见不鲜,部分抄袭后的文章甚至标记了一些联系方式从而使读者获 ...
- 手把手教你基于CentOS8搭建微信订阅号后台服务(一)
一.准备域名并完成解析 关于域名,我买的是阿里的一个1元/年的廉价域名,同时国内域名都需要备案,当时在这里耽搁了挺久的. 域名解析的话,在阿里云官方帮助文档里有.传送门:https://help.al ...
- 手把手教你基于koa2,mongoose实现增删改查
初始化项目 npm init -y 先安装一波乱七八糟的依赖插件(需要具备一定的koa2知识,至于mongoDB自行百度安装教程),模板引擎我使用的是art-template(据说是性能最好的,而且是 ...
- 手把手教你Dubbo与SpringBoot常用两种方式整合
一.Dubbo整合SpringBoot的方式(1) 1)直奔主题,方式一: pom.xml中引入dubbo-starter依赖,在application.properties配置属性,使用@Servi ...
- 10、手把手教你Extjs5(十)自定义模块的设计
从这一节开始我们来设计并完成一个自定义模块.我们先来确定一个独立的模块的所能定义的一些模块信息.以下信息只是我自己在开发过程中想到或用到的,希望有新的想法的或者有建议的跟贴回复. 一个独立模块包含以下 ...
- PHP常用函数总结(180多个)[持续更新中...]
PHP常用函数总结 本文源文件(markdown): https://github.com/yanglr/AlgoSolutions/blob/master/PHP常用函数总结(160多个).md 数 ...
随机推荐
- python学习之【第十七篇】:Python中的面向对象(类和对象)
1.什么是类和类的对象? 类是一种数据结构,我们可以用它来定义对象,后者把数据值和行为特性融合在一起,类是现实世界的抽象的实体以编程形式出现.实例是这些对象的具体化.类是用来描述一类事物,类的对象指的 ...
- Vue计算属性缓存(computed) vs 方法
Vue计算属性缓存(computed) vs 方法 实例 <div id="example"> <p>Original message: "{{ ...
- Python类属性与实例属性理解
按理讲,类属性改变,类的实例对象这个属性也应该被改变,但是在python中实际却不是这样 class test(): name = 111 a = test() b = test() a.name = ...
- linux环境中,两个不同网段的机器互通
linux环境中,两个不同网段的机器互通 人评论3690人阅读2019-11-18 14:50:21 环境如下: host1 单网卡 eth0 172.24.100.15/16 hos ...
- [干货]AspNetCore熟练应用CancellationToken,CTO会对你刮目相看
背景 已经有很多文章记录了 web程序中采用异步编程的优势和.Net异步编程的用法, 异步编程虽然不能解决查询数据库的瓶颈, 但是利用线程切换,能最大限度的弹性利用工作线程, 提高了web服务的响应能 ...
- C语言程序设计100例之(14):丑数
例14 丑数 问题描述 丑数是其质因子只可能是2,3或5的数.前10个丑数分别为1, 2, 3, 4, 5, 6, 8, 9, 10, 12.输入一个正整数n,求第n个丑数. 输入格式 每行为一个 ...
- element表格点击行即选中该行复选框
关键代码如下 <el-table ref="multipleTable" :data="tableData" highlight-current-row ...
- code migrate
1. 从Git上clone 仓库到本地. git clone --mirror http://gittest:gittest@192.168.1.x/x.git 2. push 到codecommit ...
- SCAU-1078 破密-数学的应用
另外一种方法和该题的题目在这位大佬的博客里 SCAU 1078 破密 还可以参考 https://blog.csdn.net/sinat_34200786/article/details/78 ...
- Linux 命令记录
记录Linux下使用过的命令: Linux端 1.测试当前系统支持语言(我这用的是xshell,如果出现乱码,则在file-properties-terminal-encoding中,设置为utf-8 ...