导航
  • 主页
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

我用动态数组创建了一批的Label,我想对这些动态创建的控件进行事件的处理,比如用鼠标拉动它们进行移动?请问各位我应该怎么做?

明行 测试开发  2002-06-24 11:11:24
我用动态数组创建了一批的Label,我想对这些动态创建的控件进行事件的处理,比如用鼠标拉动它们进行移动?请问各位我应该怎么做?
...全文
25 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LXJ2001 2002-06-24
把zswang(伴水)的代码拷进DELPHI,执行一下你就明白了。
回复
明行 2002-06-24
to zswang(伴水)

我的窗体上还有静态的Label,我可不想让他们也可以移动。
有什么好的办法吗?还有就是在点到动态的Label时还可以让他color改变。
回复
王集鹄 2002-06-24
type
TForm1 = class(TForm)
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);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FMouseDown: Boolean;
FOldPoint: TPoint;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FMouseDown := mbLeft = Button;
FOldPoint := Point(X, Y);
end;

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not FMouseDown then Exit;
TControl(Sender).Left := TControl(Sender).Left + (X - FOldPoint.X);
TControl(Sender).Top := TControl(Sender).Top + (Y - FOldPoint.Y);
end;

procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FMouseDown := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
for I := 1 to 10 do
with TLabel.Create(Self) do begin
Name := 'MyLabel' + IntToStr(I);
Parent := Self;
Top := I * Height;
Cursor := crHandPoint;
OnMouseDown := Label1MouseDown;
OnMouseMove := Label1MouseMove;
OnMouseUp := Label1MouseUp;
end;
end;
回复
xinghf 2002-06-24
创建的同时将时间赋予对象
回复
debussy 2002-06-24
if (Sender is TLabel) then
begin

If Label in your label array
do drag operation

end;
回复
明行 2002-06-24
已经解决了多谢伴水兄你真行。真是一个出色的好版主!加分!
回复
王集鹄 2002-06-24
看看你完整代码
处理的方法很多
要学会自己组织
回复
明行 2002-06-24
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);
procedure FormCreate(Sender: TObject);


过不去,有错误。
我是把动态创建Label写在一个自定义的函数里的。
回复
发动态
发帖子
Delphi
创建于2007-08-02

4802

社区成员

Delphi 开发及应用
申请成为版主
社区公告
暂无公告