近日要做一个信息采集卡设计器,需要使用在运行状态拖动image的功能。将image放到一个panel上,然后将image的align设为alclient。再用image装载一幅图。
设置了image的三个事件。mousedown、mousemove、mousedown。
procedure TImage.ImageMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if flag then
begin
panel1.Left := panel1.Left + X - OldX;
panel1.Top := panel1.Top + Y - OldY;
end;
end;
procedure TImage. ImageMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
flag := false;
end;
procedure TImage.ImageMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
OldX := X;
OldY := Y;
flag := true;
end;
但是在拖动image时,图像总是抖动。最后找了好久,才发现将panel的docksite设为true可以解决这个问题,可以是这个属性设为true时在panel中的所有控件都可以停靠在panel上,所以image就不会刷新了吗。谁有更好的解释docksite对于panel是做什么的。
设置了image的三个事件。mousedown、mousemove、mousedown。
procedure TImage.ImageMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if flag then
begin
panel1.Left := panel1.Left + X - OldX;
panel1.Top := panel1.Top + Y - OldY;
end;
end;
procedure TImage. ImageMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
flag := false;
end;
procedure TImage.ImageMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
OldX := X;
OldY := Y;
flag := true;
end;
但是在拖动image时,图像总是抖动。最后找了好久,才发现将panel的docksite设为true可以解决这个问题,可以是这个属性设为true时在panel中的所有控件都可以停靠在panel上,所以image就不会刷新了吗。谁有更好的解释docksite对于panel是做什么的。