procedure TForm1.Button2Click(Sender: TObject);
//我按下这个按钮的时候,Panel上的按钮应该移动到相对应的座标上.
//而这些按钮是动态创建的,问题是,如果我只在PANEL上点一下(就是生成一个按钮,那么程序完全正常,如果点多次,就只有第一下点生成的那个按钮有移动到我相对应的位置.我不知道我程序是哪里出错了..请大侠们帮我看看)
var I:Integer;
Temp:TComponent;
X,Y:Integer;
begin
P1:=Panel1.BoundsRect.Left+Panel1.Width;
P2:=Panel1.BoundsRect.Bottom+Panel1.Height;
Panel1.Width:=(Panel1.Width*1)DIV 2;
Panel1.Height:=(Panel1.Height*1) DIV 2;
Button1.Left:=Button1.Left Div 2;
Button1.Top:=Button1.Top div 2;
Image1.Width:=Panel1.Width;
Image1.Height:=Panel1.Height;
Panel1.Refresh;
For I:=0 to Form1.ComponentCount-1 do
//问题可能是由这一句引起的..
Temp:=Form1.Components[i];
begin
if (Sender is TButton) then
begin
X:=TButton(Temp).Left; //记录下当前按钮的Left位置,
Y:=TButton(Temp).Top; //记录下当前按钮的Top位置
TButton(Temp).Left:=X div 2;
TButton(Temp).Top:=Y div 2;
Panel1.Refresh;
Image1.Refresh;
Form1.Refresh;
end;
end;
end;
//这个是创建控件的...
procedure TForm1.Image1Click(Sender: TObject);
var Btn:TButton;
PT:TPoint;
begin
GetCursorPos(PT);
Btn:=TButton.Create(Self);
with Btn do
begin
Parent:=Self;//或者是Panel1都行
Width:=10;
height:=10;
Left:=ScreenToClient(PT).X;
Top:=ScreenToClient(PT).Y;
OnClick:=ButtonClick;
OnMouseMove:=ButtonMouseMove;
Show;
end;
end;end.
//我按下这个按钮的时候,Panel上的按钮应该移动到相对应的座标上.
//而这些按钮是动态创建的,问题是,如果我只在PANEL上点一下(就是生成一个按钮,那么程序完全正常,如果点多次,就只有第一下点生成的那个按钮有移动到我相对应的位置.我不知道我程序是哪里出错了..请大侠们帮我看看)
var I:Integer;
Temp:TComponent;
X,Y:Integer;
begin
P1:=Panel1.BoundsRect.Left+Panel1.Width;
P2:=Panel1.BoundsRect.Bottom+Panel1.Height;
Panel1.Width:=(Panel1.Width*1)DIV 2;
Panel1.Height:=(Panel1.Height*1) DIV 2;
Button1.Left:=Button1.Left Div 2;
Button1.Top:=Button1.Top div 2;
Image1.Width:=Panel1.Width;
Image1.Height:=Panel1.Height;
Panel1.Refresh;
For I:=0 to Form1.ComponentCount-1 do
//问题可能是由这一句引起的..
Temp:=Form1.Components[i];
begin
if (Sender is TButton) then
begin
X:=TButton(Temp).Left; //记录下当前按钮的Left位置,
Y:=TButton(Temp).Top; //记录下当前按钮的Top位置
TButton(Temp).Left:=X div 2;
TButton(Temp).Top:=Y div 2;
Panel1.Refresh;
Image1.Refresh;
Form1.Refresh;
end;
end;
end;
//这个是创建控件的...
procedure TForm1.Image1Click(Sender: TObject);
var Btn:TButton;
PT:TPoint;
begin
GetCursorPos(PT);
Btn:=TButton.Create(Self);
with Btn do
begin
Parent:=Self;//或者是Panel1都行
Width:=10;
height:=10;
Left:=ScreenToClient(PT).X;
Top:=ScreenToClient(PT).Y;
OnClick:=ButtonClick;
OnMouseMove:=ButtonMouseMove;
Show;
end;
end;end.
解决方案 »
- 散分,方便的话请投我女儿一票吧
- 如何用idTcpClient\idTcpServer实现P2P.
- 何为midas???
- 关于bde连接access的问题!
- 新建文件出错!
- 怎樣當鼠標點擊DBGrid的某一字段值時﹐再點'刪除'(Botton)作刪除處理﹗謝謝
- 很是简单的问题。送分了。ApplicationEvents控件如何用呀,举个例子吧
- 各位高手,怎样动态创建TAdoDataSet,并把查询到数据写进数组?
- 为什么distinct不管用?
- 在ORACLE中不能使用关联吗?
- 求两句SQL简单语句,在线等待!解决马上给分!
- delphi中如果access字段太多修改数据时提交会提示查询太复杂,怎么处理?
For I:=0 To Form1.ComponentsCount-1 do 这个只对第一次创建的按钮起做用..不知道为什么会是这个样子的..
For I:=0 To Form1.ComponentsCount-1 do
begin //忘记了这句吧?end;
For I:=0 to Form1.ComponentCount-1 do
begin//你看看这里是不是少了一个begin呢,呵呵 Temp:=Form1.Components[i];
//这个begin是多余的
if (Sender is TButton) then
begin
X:=TButton(Temp).Left; //记录下当前按钮的Left位置,
Y:=TButton(Temp).Top; //记录下当前按钮的Top位置
TButton(Temp).Left:=X div 2;
TButton(Temp).Top:=Y div 2;
Panel1.Refresh;
Image1.Refresh;
Form1.Refresh;
end;
end;