我的程序:
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;
执行我按鼠标没有反映,但单个控件可以的。求各个大虾救救则个,我都被老板逼疯了。
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;
执行我按鼠标没有反映,但单个控件可以的。求各个大虾救救则个,我都被老板逼疯了。
begin
teamstring[i]:=tstringgrid.create(Form1);
teamstring[i]:=teamstringmouseup;
end;没测试.你试试吧.
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.
begin
teamstring[i]:=tstringgrid.create(self);
teamstring[i]:=teamstringmouseup;
teamstring[i].Tag:=i;
end;
procedure TeamStringMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
case tstringgrid(Sender).Tag of
0:...
1:...
...
end;end;
var
i : integer;
begin
for i:=0 to 10 do
begin
teamstring[i]:=tstringgrid.create(self);
teamstring[i].Parent := Self;
teamstring[i].Top := i*20;
teamstring[i].Height := 20;
teamstring[i].OnMouseUp := TeamStringMouseUp;
end;
end;procedure TForm1.TeamStringMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
showmessage('ok');
end;我在delphi7上测试过,可以的
for(int i=0;i<MainFrm->ComponentCount;++i)
{
TButton* pButton=dynamic_cast<TButton*>(MainFrm->Components[i]);
if(pButton)//初始化窗体Button供host使用
{
Buttons[j++]=pButton;
}
void __fastcall TMainFrm::Button1MouseUp
{TButton* btn=dynamic_cast<TButton*>(Sender);
tag=static_cast<unsigned char>(btn->Tag);
............
}
joke1981:10分;没有看清我的问题,是控件数组。
windyhero:25分;非常感谢,还提供了曾经测试过。
vargent77:5分;虽然是c++语言,但是效果一样,给5分
hiflower:虽然给出的没有找到症结所在,但给我的程序有其他的参考价值,给10分。
大家满意吗^_^