我有一个用Delphi 2010制作的软件,它需要在两个不同的部门使用,它们共享相同的数据和相同的UI,除了一些更改,如隐藏/添加按钮,表单和网格列。因此,需要具有相同应用程序的两个版本。
无法在应用程序启动时提示用户选择我必须使用单独的EXE的部门。
在Delphi 2010或XE3(将在稍后升级)中执行此操作的最佳方法(概念)是什么?是否可以使用不同的exe名称进行编译?
答案 0 :(得分:9)
听起来像维护噩梦,所以请考虑其他解决方案,例如评论中建议的解决方案,例如登录或设置文件。
如果你想制作单独的exe,那么你可以使用compiler defines并基于代码中的define in / exclude部分:
添加新配置:
将配置添加到配置中:
使用代码中的define:
{$IFNDEF ADVANCED}
// Remove Event Handler
Button1.OnClick := nil;
// Hide Button
Button1.Visible := False;
{$ENDIF}
答案 1 :(得分:9)
我可以想到几个解决方案:
为您的发布应用程序提供INI文件(或在客户端计算机上创建注册表项)以指定/确定您的应用程序所服务的部门。然后通过TIniFile
或TRegistry
读取值。例如INI文件(MyApp.ini
):
[选项]
部=销售
创建程序的快捷方式并使用参数,例如"MyApp.exe /sales"
或"MyApp.exe /support"
(ParamStr(1)
会告诉您/sales
与/support
部门的对比情况
使用2个单独的项目文件,并在每个项目选项中定义Conditionals
指令,例如SALES
或SUPPORT
,然后在您的代码中使用{$IFDEF SALES}...{$ENDIF}
- 使用此选项,完全重建所有项目单位非常重要。 (我有一个预构建脚本,在编译之前会删除项目* .dcu文件。)
答案 2 :(得分:0)
您需要在您的应用程序中拥有权限系统,该系统可以针对不同的组和配置文件进行自定义,您可以为将使用该应用程序的所有最终用户分配角色或特定权限,您可以自己开发它,或者您自己可以依赖第三方,例如TMS Security System
答案 3 :(得分:0)
一件可能的事情是做第一个项目。 提出申请。
然后在同一文件夹中创建第二个项目,并将第一个项目中的所有单元添加到该项目中。
现在,在您的第二个项目中,如果您只需要进行少量更改,则可以在第一个项目中从mainform派生一个新类,并对其进行更改。
这样你有2个exes,但有一个共享的代码库。