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