超难问题!!!!!! 如何使 frame 具有 用鼠标 拖动 边框 实现 改变 frame 大小的功能!!!!!!!!下面代码 创建 Frame :var
  Frame1 : TFrame1             ;
 begin
  Frame1 := TFrame2.Create(Self);
  Frame1.Parent := form1;
  Frame1.Show;如何使 frame 具有 用鼠标 拖动 边框 实现 改变 frame 大小的功能!!!!!!!!  就像 用鼠标 拖动 窗体 边框  改变 大小一样!!
请给出详细的方法和代码,谢谢!

解决方案 »

  1.   

    //写了一个方向的,其它的参照就可以了
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, AppEvnts, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        x_,y_:integer;
        bMove: boolean;
        procedure fMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure fMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure fMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      Frame1 : TFrame;
    begin
      bMove := FALSE;
      Frame1 := TFrame.Create(Self);
      Frame1.Parent := form1;
      Frame1.Color := clred;
      Frame1.OnMouseDown := fMouseDown;
      Frame1.OnMouseMove := fMouseMove;
      Frame1.OnMouseUp := fMouseUp;
      Frame1.Show;
    end;procedure TForm1.FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if x >= TFrame(Sender).Width - 10 then
        TFrame(Sender).Cursor := crSizeWE
      else
        TFrame(Sender).Cursor := crdefault;  if bMove then
      begin
        TFrame(Sender).Width := TFrame(Sender).Width + X - x_;
        x_ := X;
      end;
    end;procedure TForm1.FMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      bMove := TRUE;
      x_ := X;
      y_ := Y;
    end;procedure TForm1.FMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      bMove := FALSE;
    end;end.