===代码和界面分离===
做法:代码与界面分开,用户层和业务层分离。
下面是代码,请个位大虾帮忙看下这么写是否科学,有什么不对的地方或者不科学的地方请指教,非常感谢:
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;