我是DELPHI新手,会的不多,现在接手维护老系统,只能修改程序内简单的SQL逻辑部分.现在需新增一模块,与现有的类似. 想复制模块后再做细微修改. (系统是采用 菜单项对应BPL文件执行)我拷贝了一个模块的文件(文件夹),打开工程另存为新名字,编译生成BPL包,
在执行程序框架中新建了菜单,建立了与新包的对应关系,程序执行时和原对应模块 冲突(新旧模块都可单独打开,
但先打开一个模块后,再另一个会显示找不到对应模块). 我知道这样做肯定有问题,
但不知如何解决!高手给我说一下,如果我复制一个模块(每个BPL 源程序都对应一个文件夹,若干表单/子表单:dfm,dcu,res,dpr,dpk,pas....),
任何功能都不改,只是生成不同名字的程序包,又能分别存在与不同的菜单下同时能运行,需要怎么在 DELPHI 中调整?
(文件夹内好多文件,不可能以一一替换改名吧(更名之后代码内若也有引用名岂不也要改? 汗!),应该有标准的做法吧?) 望路过高手不吝赐教!
在执行程序框架中新建了菜单,建立了与新包的对应关系,程序执行时和原对应模块 冲突(新旧模块都可单独打开,
但先打开一个模块后,再另一个会显示找不到对应模块). 我知道这样做肯定有问题,
但不知如何解决!高手给我说一下,如果我复制一个模块(每个BPL 源程序都对应一个文件夹,若干表单/子表单:dfm,dcu,res,dpr,dpk,pas....),
任何功能都不改,只是生成不同名字的程序包,又能分别存在与不同的菜单下同时能运行,需要怎么在 DELPHI 中调整?
(文件夹内好多文件,不可能以一一替换改名吧(更名之后代码内若也有引用名岂不也要改? 汗!),应该有标准的做法吧?) 望路过高手不吝赐教!
解决方案 »
- 自定义gina,卡在'正在加载个人设置...'窗口
- 一个简单的问题!
- 老问题---条形码 急急。。。。。。
- 这个安装程序怎么做?
- 怎样在dbgrid表里做这种编辑字段????
- 怎么知道某个MDIChild窗体是否已经存在?FindWindow不起作用。
- 关于Datasnap:讨论:取表格数据用哪种方法好一些?
- 使用sendmessage函数,控制listview中移动行的问题。
- delphi单元之间调用问题
- 小弟不行,大家快来指点,如何用C++BUILDER5中创建DLL,并在DELHI5中调用??????
- 有关生成BOM树出现的问题,请高手帮忙
- TCustomForm和TForm及TPersistentClass类有什么区别?什么时候用哪个?
另外,就看框架的实现了:是按什么定位模块、函数的
框架程序提供了 系统菜单 界面分布等 通用功能, 每个菜单项会执行到如下语句: pkname := 'PKlib\' + pkname; //=== package path ===//
try
pkobject := Loadpackage(pkname);
@CreateNewObject := GetprocAddress(pkobject, 'CreateObject');
if integer(@CreateNewObject) < 0 then
Mymessage('包加载失败!', 2)
else
begin
CreateNewObject(userid); //== test pass user ID, mybe OK ==// //记录登录信息
if pmenufile(TVmenu.selected.data)^.Important = 'Y' then
begin
hostname := GetHostName;
ipaddress := NameToIP(hostname);
sqlstr := 'insert into salary_security (empno,name,logontime,logonunit,hostname,ipaddress) ' +
'values(''' + userid + ''',''' + username + ''',getdate(), '+
' '''+pmenufile(TVmenu.selected.data)^.NodeName+''',''' + hostname + ''',''' + ipaddress + ''' )';
MyExecSQL(sqlstr);
end;
end;
except
Mymessage('没有找到指定的模块,请重新下载系统文件!', 1);
end; 现在出错位置应该在第一句 pkobject := Loadpackage(pkname);
因为提示信息是 "没有找到指定的模块,请重新下载系统文件!"如果是进入系统第一次点击菜单项(比如A1),一切正常, 之后什么时候点击该项都正常;
但如果再点击 与该模块对应的B1 (修改后的模块,1楼问题),此时将出上述错误提示,
反过来先点B1 后点A1 一样, 只是换成 A1打不开.我觉的是有什么东西没有修改彻底.
我想把form1复制为一模一样的form2,然后对form2进行修改,步骤如下:
1、分别复制unit1.dfm为unit2.dfm
unit1.pas为unit2.pas
2、用记事本分别打开:unit2.dfm,unit2.pas,替换所有的unit1为unit2,form1为form2
3、在project--->add to project 将unit2加入project。
3、打开form2修改即可。原码都有了,想生成啥就生成啥。
没办法,看别人的程序,尤其是我不熟悉的语言,很头痛啊!
1 一个包中的单元不能列于另一个包的contains中,也不能列于另一个包单元的use子句中
2 一个包已经列于自己的contains子句中,不能同时列于自己的require子句中
3 包不能放在自己的require下面,也不能放在其他require下有这个包的的包里面