我做了一个不规则的窗体,但是发现在移动的时候外面还是带了一个窗体原来的方框,有什么方法能把那个方框去掉吗?

解决方案 »

  1.   

    以前写的代码,希望对你有用unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      MPos:TPoint;
    implementationuses Unit2;{$R *.DFM}
    procedure TForm1.FormCreate(Sender: TObject);
    var
      region: HRgn;
    begin
      region:=CreateEllipticRgn(1,1,300,300);  SetWindowRgn(handle,region, true);end;procedure TForm1.Button1Click(Sender: TObject);
    var
    r:HRGN;
    begin
    r:=CreateEllipticRgn(0,0,300,300);
    SetWindowRgn(handle,r,true);
    DeleteObject(r);        
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    close;
    end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
    mpos.X:=x;
    mpos.Y:=y;
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
    if ssLeft in Shift then
    begin
    Form1.Left := Form1.Left - (MPos.X-X);
    Form1.Top := Form1.Top - (MPos.Y-Y);
    end;
    end;
    end.
      

  2.   

    glassesboy(glassesboy) 的方法可行。