如何制作可自动生成label并可拖动程序 程序打开后显示一个白屏,右键菜单新建,弹出一个窗口,设置label标签的caption和name属性,然后自动生成到白屏上,label可自由拖动,以此类推可重复生成label,请教如何制作? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 动态建立TLabel,然后处理它的OnMouseDown、OnMouseMove、OnMouseUp事件。 写一个反回TControl的Func,Result就是那个控件了 什么控件啊?动态创建tlabel到是可以,可怎么处理它的onmousedown、onmousemove、onmouseup事件啊? unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Label1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Label1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private fDown: Boolean; fDynLabel: TLabel; { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin fDynLabel := TLabel.Create(Self); with fDynLabel do begin Parent := Form1; Left := 100; Top := 100; Font.Size := 12; Caption := 'Dynamic Label Demo'; OnMouseDown := Self.Label1MouseDown; OnMouseUp := Self.Label1MouseUp; OnMouseMove := Self.Label1MouseMove; end; fDown := FALSE;end;procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin fDown := TRUE;end;procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);var P: TPoint;begin if fDown then begin GetCursorPos(P); P := Form1.ScreenToClient(P); fDynLabel.Left := P.X; fDynLabel.Top := P.Y; end;end;procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin fDown := FALSE;end;end. 好象不能多次生成label吧,对应的动作只是针对label1,没有达到要求效果,每次生成的label我要手动设置label的name和caption属性 确实是动态建立,可是我要是再建一个label,也让他实现可拖拽功能,就办不到啦,想想看两个或多个可拖拽的label同时出现,,,,关于动态建立一个label,然后具有label1所具有的鼠标响应事件,真的很让我头疼,其实我是想做一个网络连接状态图这样一个软件,我想用.ini文件记录label的ip地址,然后让两个ip之间自动划线表示连通,首先建立多个单位的label并且可拖拽就把我难倒了,不知道如何继承一个已有的label响应事件,有朋友能帮帮我吗? 5楼的就可以动态创建,并且可拖动,为什么不试一下呢?关键是你要处理好onmousemove事件 给一个外部TDGGrid添加一行记录后,如何结束"插入"状态? 我连接ACCESS数据库这样行吗???? 小问题请进!!关于对话框 两个ADO的简单问题 添加 TreeView 节点的小问题 用delphi 怎样判断系统已经安装了某一应用程序? 如何在Delphi程序历遍FastReport报表的所有控件? 我用adodataset.savetofile生成一个件,怎样快速将此文件导入另一个数据库的表中? BlueTrees(蜗牛),谢谢你,请进来拿分 帮我看看代码?? 问个关于比较编辑框的值的问题 关于10转16进制的问题
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
fDown: Boolean;
fDynLabel: TLabel;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
fDynLabel := TLabel.Create(Self);
with fDynLabel do
begin
Parent := Form1;
Left := 100;
Top := 100;
Font.Size := 12;
Caption := 'Dynamic Label Demo';
OnMouseDown := Self.Label1MouseDown;
OnMouseUp := Self.Label1MouseUp;
OnMouseMove := Self.Label1MouseMove;
end;
fDown := FALSE;
end;procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
fDown := TRUE;
end;procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
P: TPoint;
begin
if fDown then
begin
GetCursorPos(P);
P := Form1.ScreenToClient(P);
fDynLabel.Left := P.X;
fDynLabel.Top := P.Y;
end;
end;procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
fDown := FALSE;
end;end.
关键是你要处理好onmousemove事件