我有一个用Delphi 2010编写的软件,需要两个不同部门使用,它们共享相同的数据和UI,除了一些变化,比如隐藏/添加按钮、窗体和网格列。因此,需要有两个版本的同一应用程序。
无法在应用程序启动时提示用户选择部门,必须使用单独的EXE文件。
在Delphi 2010或XE3中,最佳方法(概念)是什么?是否可以使用不同的exe名称进行编译?
我有一个用Delphi 2010编写的软件,需要两个不同部门使用,它们共享相同的数据和UI,除了一些变化,比如隐藏/添加按钮、窗体和网格列。因此,需要有两个版本的同一应用程序。
无法在应用程序启动时提示用户选择部门,必须使用单独的EXE文件。
在Delphi 2010或XE3中,最佳方法(概念)是什么?是否可以使用不同的exe名称进行编译?
提供INI文件作为发布应用程序的一部分(或在客户端计算机上创建注册表键)以指定/确定应用程序服务的部门。然后通过 TIniFile
或 TRegistry
读取值。例如,一个包含以下内容的INI文件(MyApp.ini
):
[Options]
Department=Sales
创建一个快捷方式并使用参数,例如"MyApp.exe /sales"
或 "MyApp.exe /support"
(ParamStr(1)
将告诉您它是 /sales
还是 /support
部门)。
使用两个单独的项目文件,并在每个项目选项中定义您的条件编译指令,例如SALES
或SUPPORT
,然后在代码中使用{$IFDEF SALES}...{$ENDIF}
- 使用这些选项,完全重建所有项目单位非常重要。(我有一个预构建脚本,在编译之前删除项目*.dcu文件)。
将定义添加到配置中:
在您的代码中使用定义:
{$IFNDEF ADVANCED}
// Remove Event Handler
Button1.OnClick := nil;
// Hide Button
Button1.Visible := False;
{$ENDIF}
您需要在应用程序中加入权限系统,该系统可以定制给不同的团体和配置文件,并且您可以为所有使用该应用程序的终端用户分配角色或特定权限。您可以自行开发该系统,也可以依赖第三方产品,例如TMS安全系统。
可能的一件事是制作第一个项目。 创建您的应用程序。
然后在同一个文件夹中创建第二个项目,并将第一个项目的所有单元添加到该项目中。
现在,在您的第二个项目中,如果只需要进行小的更改,例如从第一个项目中派生一个新类,然后在其中进行更改。
这样,您就拥有了2个具有共享代码库的可执行文件。