我的程序中需要为各个窗体写一段适应不同的分辨率的一段代码,
但是窗体太多,我想把这适应不同的分辨率的这段代码写成公用单元,
试了多次没有成功,特此请指教!望指点

解决方案 »

  1.   

    这个单元在我的程序中是作为一个公用单元来调用的,
    在别的窗体中调用这个单元,但这个公用单元这样写好象有错编译通不过呀,
    请帮忙改下,请指教!unit Unit2;interfaceuses   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs;type
      TMyClass = Class(TObject)
      public
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      end;
      const
      ScreenHeight: integer = 1024;
      ScreenWidth: integer = 768;implementationprocedure TMyClass.FormCreate(Sender: TObject);
    var
      x, y: LongInt;
    begin
    form1.scaled := true;  //有错
      x := getSystemMetrics(SM_CXSCREEN);
      y := getSystemMetrics(SM_CYSCREEN);
      if (x <> ScreenHeight) or (y <> ScreenWidth) then
        begin
           form1.height:=form1.height*x DIV ScreenHeight;   //有错
           form1.width:=form1.width*y DIV ScreenWidth;     //有错
           scaleBy(x,ScreenHeight);
        end;
    end;procedure TMyClass.FormClose(Sender: TObject; var Action: TCloseAction);
    var
      x, y: LongInt;
    begin
     form1.scaled := true;  //有错
      x := getSystemMetrics(SM_CXSCREEN);
      y := getSystemMetrics(SM_CYSCREEN);
      if (x <> ScreenHeight) or (y <> ScreenWidth) then
        begin
           form1.height:=form1.height*x DIV ScreenHeight;   //有错       form1.width:=form1.width*y DIV ScreenWidth;              //有错
           scaleBy(x,ScreenHeight);
               end;
    end;end.
      

  2.   

    你其他窗体调用的时候  要引用这个单元  然后在创建TMyClass这个类的实例
      

  3.   

    编译通过
    unit Unit2;interfaceuses   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs;type
      TMyClass = Class(TObject)
      public
        procedure FormCreate(form: Tform);
        procedure FormClose(form: Tform; var Action: TCloseAction);
      end;
      const
      ScreenHeight: integer = 1024;
      ScreenWidth: integer = 768;implementationprocedure TMyClass.FormCreate(form: Tform);
    var
      x, y: LongInt;
    begin
    form.scaled := true;  //&Oacute;&ETH;&acute;í
      x := getSystemMetrics(SM_CXSCREEN);
      y := getSystemMetrics(SM_CYSCREEN);
      if (x <> ScreenHeight) or (y <> ScreenWidth) then
        begin
           form.height:=form.height*x DIV ScreenHeight;   //&Oacute;&ETH;&acute;í
           form.width:=form.width*y DIV ScreenWidth;     //&Oacute;&ETH;&acute;í
           form.ScaleBy(x,ScreenHeight);
        end;
    end;procedure TMyClass.FormClose(form: Tform; var Action: TCloseAction);
    var
      x, y: LongInt;
    begin
     form.scaled := true;  //&Oacute;&ETH;&acute;í
      x := getSystemMetrics(SM_CXSCREEN);
      y := getSystemMetrics(SM_CYSCREEN);
      if (x <> ScreenHeight) or (y <> ScreenWidth) then
        begin
           form.height:=form.height*x DIV ScreenHeight;   //&Oacute;&ETH;&acute;í       form1.width:=form1.width*y DIV ScreenWidth;              //&Oacute;&ETH;&acute;í
           form.ScaleBy(x,ScreenHeight);
        end;
    end;end.
      

  4.   

    窗体调用时输入该窗体的名称作为参数
    FormClose函数的第二个参数var Action: TCloseAction去掉,函数中没有用到