如何移动Form上的一个Label,马上结贴
解决方案 »
- 【祈福】为 爸爸妈妈 祈福!
- 求像Midal play9中的播放,声音调节一样的控件
- 关于子窗口中用Sleep的问题
- 我下载了indy 9的DEMOS,偏偏少了一个 httpclient ,谁能发一个给我,谢谢!
- ****100分———换一个PP号。2000分求“潘多拉之盒”这款游戏的稳定下载地址!
- 这是怎么回事
- 用ADO怎样连接*.DBF文件?
- 数据导出到excel表时出现的问题???
- 何为delphi 6.8版本?
- 如何释放dll中的res资源
- 人性化程序设计(3)-伴水灌性!
- (1)XPMenu2.2在Delphi7中有部分功能失效了!(2)D7中的XPMan怎样达到OfficeXP效果?请问怎样解决?
Shift: TShiftState; X, Y: Integer);
begin
label1.Left := x;
label1.Top := y;
end;
Form1: TForm1;
MoveEn:Boolean;
XY:TPoint;
implementation{$R *.DFM}procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button =mbLeft then
begin
MoveEn:=True;
XY.x :=x;
XY.y :=y;
end;
end;procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MoveEn:=False;end;procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if MoveEn then
begin
Label1.Left :=Label1.Left +(x-XY.x);
Label1.Top :=Label1.Top +(y-XY.y);
end;end;
1在某种情况下直接修改Label的座标:
procedure TFrom1.Button1Click(Sender: TObject);
begin
Label1.Left:=200;
Label1.Top:=100;
end;
2修改Label的父,比如将Label1从Panel1上移到Panel2上:
Label1.Parent:=Panel2;
3用鼠标拖动:
var
ox,oy:integer;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ox:=X;
oy:=Y;
end; TForm1.FormMouseMove(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Shift=[ssLeft] then
begin
Label1.Left := Label1.Left+X-ox;
Label1.Top := Label1.Top+Y-oy;
end;
end;
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if ( source is TLabel ) then
accept := true;
end;procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if ( Source is TLabel) then
begin
(Source as TLabel).Left := x;
(Source as TLabel).Top := y;
end;
end;
(Sender as TWinControl).Perform(WM_SysCommand,$F012,0);
用类似于上面的语句,
只不过,它只对TWinControl有效,而对TLabel无效