公布源代码(ERP系统外壳程序)

kesa 2002-04-25 03:32:30
感谢大家对我的支持和帮助,我将公布部分核心代码,给大家参考
希望大家批评指教
unit mainunit;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, Menus, ToolWin, DBCtrls, ImgList, StdActns, ActnList,
DBActns ,FileCtrl ;

type
pmenu_file=^Tmenu_file;
Tmenu_file=record
MENU_NODEID:integer; //菜单结点ID号
MENU_NAME:string; //菜单名字
MENU_PACKAGE:string; //单击结点时运行的包名字。
PARENT_ID:integer; //父结点ID号
REMARK:string; //备注。
end;

type
TcreateNewObject = function(params1:tstringlist;params2:tstringlist) :Tobject;
//TdestroyloadObject = function :Boolean;
Tmainfrm = class(TForm)
TVmenu: TTreeView;
Splitter1: TSplitter;
MainMenu1: TMainMenu;
File1: TMenuItem;
Window2: TMenuItem;
Help1: TMenuItem;
StatusBar1: TStatusBar;
ImageList1: TImageList;
N2: TMenuItem;
N3: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
ImageList2: TImageList;
N15: TMenuItem;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton17: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton13: TToolButton;
ToolButton11: TToolButton;
TBtv: TToolButton;
ActionList1: TActionList;
EditCopy1: TEditCopy;
EditCut1: TEditCut;
EditPaste1: TEditPaste;
DataSetFirst1: TDataSetFirst;
DataSetLast1: TDataSetLast;
DataSetNext1: TDataSetNext;
DataSetPrior1: TDataSetPrior;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
CASCADE1: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
NReLogin: TMenuItem;
NChangePassWord: TMenuItem;
N1: TMenuItem;
N4: TMenuItem;
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton12Click(Sender: TObject);
procedure TVmenuDblClick(Sender: TObject);
procedure Loadpkbyname(pkname:string;pkmenuname:string);
procedure N3Click(Sender: TObject);
procedure TBtvClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure NReLoginClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure NChangePassWordClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
procedure InitTreeView;
procedure filltree(midnode:ttreenode;midfilter:integer);
procedure CheckFileAgeAndDownLoadNew();
public
{ Public declarations }
pubobject:THandle;
end;

var
mainfrm: Tmainfrm;

implementation
uses loginunit,dmunit, ChangePsWUnit, DownLoadFileUnit;

{$R *.DFM}

procedure Tmainfrm.ToolButton4Click(Sender: TObject);
begin
cascade;
end;

procedure Tmainfrm.ToolButton6Click(Sender: TObject);
begin
tilemode:=tbhorizontal;
tile;
end;

procedure Tmainfrm.ToolButton5Click(Sender: TObject);
begin
tilemode:=tbvertical;
tile;
end;

procedure Tmainfrm.ToolButton12Click(Sender: TObject);
begin
application.Terminate;
end;

procedure Tmainfrm.TVmenuDblClick(Sender: TObject);
var
i,l_len:integer;
pk_name:string;
pk_menuchoose:string;
begin
if MDICHILDCOUNT=3 then
begin
application.MessageBox('您最多可以同时打开三个窗口!','信息',48);
exit;
end;
pk_menuchoose:=pmenu_file(TVmenu.selected.Data)^.MENU_NAME;
pk_name:=pmenu_file(TVmenu.selected.Data)^.MENU_PACKAGE;
l_len:=length(pk_name);
pk_name:=copy(pk_name,3,l_len-8)+'frm';
for i:=0 to MDICHILDCOUNT-1 do
begin
if uppercase(MdiChildren[i].Name)=uppercase(pk_name) then // already open
begin
MdiChildren[i].BringToFront;
exit;
end;
end;

if pmenu_file(TVmenu.Selected.Data)^.MENU_PACKAGE<>'' then
begin
loadpkbyname(pmenu_file(TVmenu.selected.Data)^.MENU_PACKAGE,pmenu_file(TVmenu.selected.Data)^.MENU_NAME);
cascade;
//mainmenu1.Items.Caption:='abcd';
end;
end;
procedure Tmainfrm.loadpkbyname(pkname:string;pkmenuname:string);
var
pkobject:THandle;
// AForm: TForm;
CreateNewObject:TCreateNewObject; // -- test pass user ID, mybe OK--//
//ReturnObject:Tobject;
params1:tstringlist;
params2:tstringlist;

begin
params1 := TStringList.Create;//公用参数表
params2 := TStringList.Create;//动态参数表
params1.Add('userid='+trim(userid));//当前用户
params1.add('pubhandle='+inttostr(pubobject));//公用模块handle
params2.add('menuname='+trim(pkmenuname));//调用菜单项的名称
// showmessage('1-----'+params1.values['pubhandle']);
pkname:='PKlib\'+pkname; // package dir
pkobject:=Loadpackage(pkname);
@CreateNewObject:=GetprocAddress(pkobject,'CreateObject');
if integer(@CreateNewObject)<0 then application.messagebox('包加载失败!','Load Package',48)
else
createnewobject(params1,params2); // -- test pass user ID, mybe OK--//

end;

...全文
151 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
erp2 2002-08-25
  • 打赏
  • 举报
回复
61.145.171.177里面有一整套erp系统,看你有没有本事去拿了.
而且是专线一天24小时在线.(Delphi+Sql Server写的)
rainsea 2002-08-15
  • 打赏
  • 举报
回复
垃圾,还自以为是。
你以为程序和思想的完美结合就是这样吗?哈哈!!!
是不是不知道人外有人,天外有天?
hezchuan168 2002-08-03
  • 打赏
  • 举报
回复
错,但是这个只是整个程序最外层的那个“包袱皮”吧。
把和数据库打交道的单元贴点出来嘛,这里看不出来是三层还是两层,还有什么COM+之类的
secondlf 2002-08-02
  • 打赏
  • 举报
回复
学习(虽然看不太懂)
lifeng@tyut.edu.cn
maxsuy 2002-05-21
  • 打赏
  • 举报
回复
suy@neuera.com
maxsuy 2002-04-27
  • 打赏
  • 举报
回复
gz
wzsswz 2002-04-26
  • 打赏
  • 举报
回复
不错,但是还不够,搞个zip什么的发送发送。。。。。。。。
CodeDuDu 2002-04-26
  • 打赏
  • 举报
回复
能给份源码吗?
codedudu@sohu.com
nylp 2002-04-26
  • 打赏
  • 举报
回复
up
Delit 2002-04-26
  • 打赏
  • 举报
回复
学习学习中
Larky 2002-04-26
  • 打赏
  • 举报
回复
:)学习
rwdx 2002-04-26
  • 打赏
  • 举报
回复
学习,代码好长
hongyou 2002-04-26
  • 打赏
  • 举报
回复
记号!
nodefault 2002-04-26
  • 打赏
  • 举报
回复
學習...
forgot2000 2002-04-26
  • 打赏
  • 举报
回复
支持。
Ra1998 2002-04-26
  • 打赏
  • 举报
回复
好!
kesa 2002-04-26
  • 打赏
  • 举报
回复
fredfei(飞飞),你有没有看得懂,这是应用在企业内部局域网,C/S两层,这是客户端程序。你明白更新流程吗,你知道怎么更新的吗? 这和客户端时钟有什么关系,你是真的DELPHI 程序员还是假的
fredfei 2002-04-25
  • 打赏
  • 举报
回复
有意思

不过你倒是真的不在乎网络流量、硬盘碎片造成的负面影响
客户端时钟滞后会造成你的包文件永远更新
或者时钟超前造成的包文件永远不更新

想来想去,你是在开发单机版
softwing 2002-04-25
  • 打赏
  • 举报
回复
不错,但是这个只是整个程序最外层的那个“包袱皮”吧。
把和数据库打交道的单元贴点出来嘛,这里看不出来是三层还是两层,还有什么COM+之类的。
如果需要的话,我们可以帮助测试测试嘛!呵呵。
firetoucher 2002-04-25
  • 打赏
  • 举报
回复
赶紧学习学习
加载更多回复(13)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧