首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

创建按钮并且可以拖动它,该如何处理

2012-03-08 
创建按钮并且可以拖动它我现在放了一个Panel按钮在窗体上.如何在这个panel上自动创建按钮啊..并且可以拖动

创建按钮并且可以拖动它
我现在放了一个Panel按钮在窗体上.如何在这个panel上自动创建按钮啊..并且可以拖动按钮的位置

[解决办法]
先放一个按钮,在mousedown,mouseup,mousemove里编写代码,实现拖动。

动态创建按钮,指定它的onmousedown,onmousmove,onmousup事件
[解决办法]
放一个Panel在上面,为它写两个事件,
还有一个可以动态生成BUTTON的按钮,代码如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
procedure Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if (Source is TButton) then
begin
with Source as TButton do
begin
Left := X;
Top := Y;
end;
end;
end;

procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source is TButton then Accept := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
with TButton.Create(Self) do
begin
Parent := Panel1;
Top := Panel1.Top + 5;
Left := Panel1.Left + 5;
DragMode := dmAutomatic;
Caption := 'Test ';
end;
end;

end.

[解决办法]
请试验:


下面这是演示在Form上动态生成按钮,并可以拖动:


type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ReleaseCapture;
TControl(Sender).Perform(WM_SysCommand,$F012,10);
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
With TButton.Create(self) do
begin
Left := X;
Top := Y;
Parent := self;
Caption := Format( '%d,%d ',[X,Y]);
OnMouseMove := ButtonMouseMove;
Show;
end;
end;

热点排行