创建按钮并且可以拖动它

ZJZM214120 2007-05-15 09:20:30
我现在放了一个Panel按钮在窗体上.如何在这个panel上自动创建按钮啊..并且可以拖动按钮的位置
...全文
265 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihuasoft 2007-05-15
  • 打赏
  • 举报
回复
你是要在Panel上创建按钮。自己改一下就行了,与在Form上创建是一样的道理。
无非就是指定按钮的Parent为Panel,MouseDown代码写在Panel的MouseDown或Click事件里。
lihuasoft 2007-05-15
  • 打赏
  • 举报
回复
请试验:


下面这是演示在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;
chenzhuo 2007-05-15
  • 打赏
  • 举报
回复
放一个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.
zaza_bbface 2007-05-15
  • 打赏
  • 举报
回复
先放一个按钮,在mousedown,mouseup,mousemove里编写代码,实现拖动。

动态创建按钮,指定它的onmousedown,onmousmove,onmousup事件

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧