我的一个单元被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开发VPN客户端,或有没有相关资料
- 关于一个异常处理的问题 !急急急!
- oracle的odbc打包问题
- 真的没人回答这个问题吗?
- 怎樣安裝FasterReport控件?
- 請教兩個問題!
- 如何判断一个线程实例是否存在?(即已经create,并没有被terminated)
- 如何读(保存)????
- 怎样知道DBGrid中目前定位的是哪以条记录?
- 送分了,TChart、TDBChart是做棒图的控件,做网站的ISAPI中如何用它?
- 一个关于Fast Report的简单问题
- 联接断开后 数据就不可见了!!我用ado方式连接oracle。当数据连接断开时 ,怎么能保证客户端的数据还是可见的?
如在一个应用程序中该form为fsNormal,在另一个应用程序中该form为fsMDIChild
应如何实现?
{$IFDEF ???}
FormStyle := fsNormal;
{$ELSE}
FormStyle := fsMDIChild;
{$ENDIF}
编译的时候加上{$I *.inc}
然后在条件编译中直接使用了?
Inc文件的内容,
{$DEFINE ????}
下面的这句话加在Uses之前
{$I ???.inc}
inc文件的办法,我没有试,我等一会儿试一试我是说:条件编译修改formstyle好象不行.