我的一个单元被2个应用程序共用,但单元中部分信息不同,于是我采用了条件编译,代码如下:
procedure TPrintForm.FormShow(Sender: TObject);
var
FilterStr:String;
begin
{$IF SOFTWARE_TITLE='任务单浏览系统'}myAllSQlStr:=BrowTaskForm.mySQLStr;
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} myAllSQlStr:=MainForm.mySQlStr;
{$IFEND}
myPartSQLStr:=Copy(myAllSQLStr,POS('FROM ',UPPERCase(myAllSQLStr)),Length(myAllSQLStr));
FieldLister.List1.Clear;
FieldLister.List2.Clear;
{$IF SOFTWARE_TITLE='任务单浏览系统'}FieldLister.List1:=BrowTaskForm.myFieldsList.Items ;
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} FieldLister.List1:=MainForm.myFieldsList.Items ;
{$IFEND} ItemList1.Clear;
ItemList3.Clear;
{$IF SOFTWARE_TITLE='任务单浏览系统'}ItemList1.Items:= BrowTaskForm.myFieldsList.Items ;
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} ItemList1.Items:= MainForm.myFieldsList.Items ;
{$IFEND}
{$IF SOFTWARE_TITLE='任务单浏览系统'}ItemList3.Items:= BrowTaskForm.myFieldsList.Items ;
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} ItemList3.Items:= MainForm.myFieldsList.Items ;
{$IFEND}
{$IF SOFTWARE_TITLE='任务单浏览系统'}FileNameEdit1.Text:=ExtractFilePath(Application.ExeName)+'ReportTemp\'+BrowTaskForm.myPrnTemplate;
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} FileNameEdit1.Text:=ExtractFilePath(Application.ExeName)+'ReportTemp\'+MainForm.myPrnTemplate;
{$IFEND}
CountItem:=0;
LastSortDir:='ASC';
FilterStr:='';
ListField:='';
GetPrintData(FilterStr);
PrintDBGrid.Refresh;
Frm_Prograss.Close;
{$IF SOFTWARE_TITLE='任务单浏览系统'}Caption:=BrowTaskForm.RegOrganization+ '通用打印模块';
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} Caption:=MainForm.RegOrganization+ '通用打印模块';
{$IFEND}end;结果是条件编译那块内容,好象根本就没有用.我将SOFTWARE_TITLE定义在一个mySysConst.pas单元内.甚至我将SOFTWARE_TITLE改成一个根本不存在的变量,编译也没有提示错误.
大虾,帮忙看看,如何解决?谢谢
procedure TPrintForm.FormShow(Sender: TObject);
var
FilterStr:String;
begin
{$IF SOFTWARE_TITLE='任务单浏览系统'}myAllSQlStr:=BrowTaskForm.mySQLStr;
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} myAllSQlStr:=MainForm.mySQlStr;
{$IFEND}
myPartSQLStr:=Copy(myAllSQLStr,POS('FROM ',UPPERCase(myAllSQLStr)),Length(myAllSQLStr));
FieldLister.List1.Clear;
FieldLister.List2.Clear;
{$IF SOFTWARE_TITLE='任务单浏览系统'}FieldLister.List1:=BrowTaskForm.myFieldsList.Items ;
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} FieldLister.List1:=MainForm.myFieldsList.Items ;
{$IFEND} ItemList1.Clear;
ItemList3.Clear;
{$IF SOFTWARE_TITLE='任务单浏览系统'}ItemList1.Items:= BrowTaskForm.myFieldsList.Items ;
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} ItemList1.Items:= MainForm.myFieldsList.Items ;
{$IFEND}
{$IF SOFTWARE_TITLE='任务单浏览系统'}ItemList3.Items:= BrowTaskForm.myFieldsList.Items ;
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} ItemList3.Items:= MainForm.myFieldsList.Items ;
{$IFEND}
{$IF SOFTWARE_TITLE='任务单浏览系统'}FileNameEdit1.Text:=ExtractFilePath(Application.ExeName)+'ReportTemp\'+BrowTaskForm.myPrnTemplate;
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} FileNameEdit1.Text:=ExtractFilePath(Application.ExeName)+'ReportTemp\'+MainForm.myPrnTemplate;
{$IFEND}
CountItem:=0;
LastSortDir:='ASC';
FilterStr:='';
ListField:='';
GetPrintData(FilterStr);
PrintDBGrid.Refresh;
Frm_Prograss.Close;
{$IF SOFTWARE_TITLE='任务单浏览系统'}Caption:=BrowTaskForm.RegOrganization+ '通用打印模块';
{$ELSEIF SOFTWARE_TITLE='分布式任务单系统'} Caption:=MainForm.RegOrganization+ '通用打印模块';
{$IFEND}end;结果是条件编译那块内容,好象根本就没有用.我将SOFTWARE_TITLE定义在一个mySysConst.pas单元内.甚至我将SOFTWARE_TITLE改成一个根本不存在的变量,编译也没有提示错误.
大虾,帮忙看看,如何解决?谢谢
解决方案 »
- delphi,TDBGridEh导出excel的问题
- MSCOMM,串口通讯问题
- 请问窗口上的的各种初始化设置应该在OnActivate事件、OnCreate事件还是OnShow事件中???
- 关于图片显示的总题
- 绘制一个电感图形,请教画法。
- 在SQL2000里,更换用户名的存储过程是哪一个?
- mov()过程的用法————在线等待!!!
- >>>>关于Image字段的一些问题的困惑《〈〈〈〈〈
- 实时录音&实时MP3压缩组件源码发布!
- 在多文档中,怎样判断子窗口已经打开,并把其关掉!!!
- 一个关于Fast Report的简单问题
- 联接断开后 数据就不可见了!!我用ado方式连接oracle。当数据连接断开时 ,怎么能保证客户端的数据还是可见的?
如在一个应用程序中该form为fsNormal,在另一个应用程序中该form为fsMDIChild
应如何实现?
{$IFDEF ???}
FormStyle := fsNormal;
{$ELSE}
FormStyle := fsMDIChild;
{$ENDIF}
编译的时候加上{$I *.inc}
然后在条件编译中直接使用了?
Inc文件的内容,
{$DEFINE ????}
下面的这句话加在Uses之前
{$I ???.inc}
inc文件的办法,我没有试,我等一会儿试一试我是说:条件编译修改formstyle好象不行.