做一个控件 Image中放一个Label,怎么实现在设计期,移动Image,其上的Label也跟着移(30分)

  • 主题发起人 主题发起人 redcoffee
  • 开始时间 开始时间
R

redcoffee

Unregistered / Unconfirmed
GUEST, unregistred user!
做一个控件 Image中放一个Label,怎么实现在设计期,移动Image,其上的Label也跟着移
就像在panel中放一个button,移动panel时,button跟着移动
谢谢谢谢
 
移动image的时候产生事件,让label改变位置,相对于image的位置.
就这样...
 
写的很粗糙……凑合看下吧
var
Form1: TForm1;
MouseStatus : Integer;
OldImgPoint : TPoint;
OldLabelPoint : TPoint;
implementation
{$R *.dfm}
procedure TForm1.Image1MouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
begin
MouseStatus := 1;
OldImgPoint.X := X;
OldImgPoint.Y := Y;
OldLabelPoint.X := Label1.Left - Image1.Left;
OldLabelPoint.X := Label1.Top - Image1.Top;
end;

procedure TForm1.Image1MouseUp(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
begin
MouseStatus := 0;
end;

procedure TForm1.Image1MouseMove(Sender: TObject;
Shift: TShiftState;
X,
Y: Integer);
begin
if MouseStatus=1 then
begin
with Image1do
begin
Left := Left - OldImgPoint.X + X;
Top := Top - OldImgPoint.Y + Y;
end;
with Label1do
begin
Left := Image1.Left + OldLabelPoint.X;
Top := Image1.Top + OldLabelPoint.Y;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
MouseStatus := 0;
end;
 
[:D]结帖吧
 
楼主问的是设计期哈。
因为TImage不是容器,所以Label不可能放在Image上,所以在设计期也就不可能完成同步移动的。
解决办法就是把Image和Label放在一个Panel上,或者写一个控件封装Image和Lable。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部