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

明行 2002-06-24 11:11:24
我用动态数组创建了一批的Label,我想对这些动态创建的控件进行事件的处理,比如用鼠标拉动它们进行移动?请问各位我应该怎么做?
...全文
87 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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写在一个自定义的函数里的。

5,927

社区成员

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

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