动态控件数组的事件处理程序怎么写呀,在线等,急

houyongdong 2003-10-16 02:50:11
我的程序:
public
teamstring:array[0..20] of Tstringgrid;
procedure TeamStringMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
过程:
for i:=0 to 10 do
begin
teamstring[i]:=tstringgrid.create(self);
teamstring[i]:=teamstringmouseup;
end;
procedure TeamStringMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//
end;
执行我按鼠标没有反映,但单个控件可以的。求各个大虾救救则个,我都被老板逼疯了。
...全文
52 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dickeybird888 2003-10-16
  • 打赏
  • 举报
回复
楼上说的都可以!
joky1981 2003-10-16
  • 打赏
  • 举报
回复
给你个例子你就应该搞定了
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button: TButton;
procedure ButtonClick(Sender: TObject);
procedure MyMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure MyMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure MyMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure MyButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Count: Integer = 0;
CanMove: Boolean = false;
StartX, StartY : Integer;

implementation

{$R *.dfm}

procedure TForm1.ButtonClick(Sender: TObject);
var
MyLabel: TLabel;
MyButton: TButton;
begin
Inc(Count);
MyLabel:= TLabel.Create(self);
MyButton:= TButton.Create(self);
MyLabel.Parent:= Form1;
MyButton.Parent:= Form1;
MyLabel.Left:= (Count-1)* 50;
MyButton.Left:= (Count-1)* 80;
MyLabel.Top:= (Count-1)* 20;
MyButton.Top:= (Count-1)* 20;
MyLabel.Name:= 'Label'+IntToStr(Count);
MyButton.Name:= 'Button'+IntToStr(Count);
MyLabel.Caption:= 'Label'+IntToStr(Count);
MyButton.Caption:= 'Button'+IntToStr(Count);
MyButton.OnClick:= MyButtonClick;
MyLabel.OnMouseDown:= MyMouseDown;
MyLabel.OnMouseMove:= MyMouseMove;
MyLabel.OnMouseUp:= MyMouseUp;
end;

procedure TForm1.MyButtonClick(Sender: TObject);
begin
showmessage(TButton(Sender).Name);
end;

procedure TForm1.MyMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CanMove:= true;
StartX:= x;
StartY:= y;
end;

procedure TForm1.MyMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
//
if CanMove then
begin
Tlabel(sender).Create();
TLabel(Sender).Left:= TLabel(Sender).Left+ x-StartX;
TLabel(Sender).Top:= TLabel(Sender).Top+ y-StartY;
end;
end;

procedure TForm1.MyMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//
CanMove:= false;
end;

end.
上海老李 2003-10-16
  • 打赏
  • 举报
回复
teamstring[i].mouseup:=teamstringmouseup();
saien 2003-10-16
  • 打赏
  • 举报
回复
public
teamstring:array[0..20] of Tstringgrid;
procedure myEven(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);//注要与事件对应

procedure TeamStringMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
过程:
for i:=0 to 10 do
begin
teamstring[i]:=tstringgrid.create(self);
teamstring[i].MouseUp:=myEven

end;
procedure myEven(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//
end;

5,388

社区成员

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

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