我的一个单元被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改成一个根本不存在的变量,编译也没有提示错误.
大虾,帮忙看看,如何解决?谢谢

解决方案 »

  1.   

    这个问题,解决了,同时再问高手,能不能使用条件编译,改变一个单元form的属性?
    如在一个应用程序中该form为fsNormal,在另一个应用程序中该form为fsMDIChild
    应如何实现?
      

  2.   

    可以。但是这个编译开关应该写在FormCreate事件中。
    {$IFDEF ???}
      FormStyle := fsNormal;
    {$ELSE}
      FormStyle := fsMDIChild;
    {$ENDIF}
      

  3.   

    SOFTWARE_TITLE应该定义在inc文件里
    编译的时候加上{$I *.inc}
      

  4.   

    写在FormCreate中,仍然不行??!!SoftWare_Title如何写在inc中,是不是就在inc 中写一行:  software_Title='一号管理系统'
    然后在条件编译中直接使用了?
      

  5.   

    不可能!我的代码就是这样的·
    Inc文件的内容,
    {$DEFINE ????}
    下面的这句话加在Uses之前
    {$I ???.inc}
      

  6.   

    to xthmpro_cn
    inc文件的办法,我没有试,我等一会儿试一试我是说:条件编译修改formstyle好象不行.