===代码和界面分离===

138075 138075 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
做法:代码与界面分开,用户层和业务层分离。
下面是代码,请个位大虾帮忙看下这么写是否科学,有什么不对的地方或者不科学的地方请指教,非常感谢:

unit InfoClass;

interface

uses
DB, ADODB;

//== TYPE BEGIN ========================================
type
TAppInfo = class(TObject)
private
FAdoconn: TADOConnection;
public
destructor Destroy; override;
end;

{员工信息}
TUserInfo = class(TAppInfo)
private
function SPUser: TADOStoredProc;
public
function GetUserList(AConn: TADOConnection): TADOStoredProc;
{
function Append....
function Update...
function Delete...
}
end;

{部门信息}
//...
{商品信息}
//...

//== TYPE END ===========================================

function UserInfo: TUserInfo;

implementation

var
_UserInfo: TUserInfo;
_SPUser: TADOStoredProc;

{ TInfo }

//销毁实例,释放内存

destructor TAppInfo.Destroy;
begin
//这里添加需要释放的东西...
inherited;
end;

{ TUserInfo }

//检测_UserInfo是否存在,然后赋于UserInfo;
function UserInfo: TUserInfo;
begin
if _UserInfo = nil then _UserInfo := TUserInfo.Create;
Result := _UserInfo;
end;

//取员工存储过程组件
function TUserInfo.SPUser: TADOStoredProc;
begin
if _SPUser=nil then _SPUser := TADOStoredProc.Create(nil);
_SPUser.Connection := FAdoconn;
Result := _SPUser;
end;

//获得员工信息表记录
function TUserInfo.GetUserList(AConn: TADOConnection): TADOStoredProc;
begin
FAdoconn := AConn;
with SPUser, SPUser.Parameters do
begin
close;
clear;
ProcedureName := 'AP_GetInfoList;1';
Filtered := false;
Parameters.Refresh;
ParamByName('@Type').Value := 5;
Open;
end;
Result := SPUser;
end;



//销毁对象

initialization
finalization
if _UserInfo <> nil then _UserInfo.Free;
if _SPUser<> nil then _SPUser.Free;

end.



使用:======================================

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;

type
TForm1 = class(TForm)
AdoConn: TADOConnection;
DsInfo: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses myclass;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
DsInfo.DataSet := UserInfo.GetUserList(AdoConn);
end;

...全文

相关推荐

【图像加密解密】基于matlab Base54矩阵变换图像加密解密【含Matlab源码 9235期】.mp4

海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

海神之光

安卓Android面试-综合题汇总九万字

文章摘要 本文详细解析了Android Activity的核心机制:1)启动流程涉及客户端与服务端的跨进程通信,包括根Activity的创建过程;2)状态保存与恢复(onSaveInstanceState/onRestoreInstanceState)的触发条件及版本差异;3)四种启动模式(standard/singleTop/singleTask/singleInstance)的特点与适用场景;4)Activity跳转与返回时的生命周期执行顺序;5)系统交互事件(横竖屏切换、Home键、锁屏等)对生命周期

JPC客栈

安卓逆向工程师面试指南【干货】

安卓逆向工程师岗位在近年来算是互联网IT行业的香饽饽之一,月薪动辄上万年薪动辄20万,让很多行业内兢兢业业拿一个五六千的外行人士很是羡慕。但是安卓逆向工程是专业技术要求很高的职业,外行人轻易抢不走你的饭碗,因此也有大量的人花很多金钱投资自己,学会了安卓逆向,想要入行分一杯羹。 光学会技术,并不等于就能找到一份好的工作。要找到一个很好的安卓逆向工程师岗位,我们一定不能忽视其中最为重要的环节——面试。 安卓逆向工程师在面试时,需要你掌握什么技能,面试官会怎样考核你?这些东西对于一位安卓逆向求职者来说,至关重要.

那时雨_

【图像加密解密】matlab分数傅里叶变换彩色图像加密【含Matlab源码 4543期】.zip

【图像加密解密】matlab分数傅里叶变换彩色图像加密【含Matlab源码 4543期】.zip

Matlab武动乾坤

【图像加密】基于双随机相位编码实现图像加密解密含Matlab源码.zip

【图像加密】基于双随机相位编码实现图像加密解密含Matlab源码

Matlab科研辅导帮
评论 7
收藏 已收藏
分享
返回顶部
138075
Delphi 5,944 成员 262,941 内容