![]() |
![]() ![]() ![]() ![]() |
|
Перетаскивание картинки мышьюDelphi , Синтаксис , Drag and DropАвтор: Пётр Соболь
type
TMouseState = (msNormal, msDragging);
var
FMouseState: TMouseState;
OldPos, NewPos: TPoint;
MaxShift: TPoint;
bar: integer;
i: integer;
implementation
procedure TForm1.Image1MouseDown(Sender: TObject; Button:
TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
with Image1 do
begin
MaxShift.X := Parent.Width - Width;
MaxShift.Y := Parent.Height - Height;
end;
if (MaxShift.X > 0) and (MaxShift.Y > 0) then
Exit;
if MaxShift.X > 0 then
MaxShift.X := 0;
if MaxShift.Y > 0 then
MaxShift.Y := 0;
FMouseState := msDragging;
OldPos := Point(X, Y);
end;
// обработка переноса
procedure TForm1.Image1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if FMouseState = msDragging then
with (Sender as TImage) do
begin
NewPos := Point(X - OldPos.X, Y - OldPos.Y);
if Left + NewPos.X > 0 then
NewPos.X := -Left;
if Left + NewPos.X < MaxShift.X then
NewPos.X := MaxShift.X - Left;
if Top + NewPos.Y > 0 then
NewPos.Y := -Top;
if Top + NewPos.Y < MaxShift.Y then
NewPos.Y := MaxShift.Y - Top;
Parent.ScrollBy(NewPos.X, NewPos.Y);
end;
end;
//возвращение исходных значений
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FMouseState := msNormal;
Screen.Cursor := crDefault;
with Sender as TImage do
Label1.Caption := Format('(%d , %d)', [-Left, -Top]); // отображение координат
end;
Программный код на Delphi, который реализует функциональность перетаскивания изображения (TImage) с помощью мыши и прокрутки родительского контрола для сохранения изображения в видимой области. Вот разбивка функций каждого процедуры:
Код также включает в себя некоторые ошибки обработки: если максимальное значение сдвига больше 0, она устанавливает соответствующий компонент в положение 0. Это предотвращает изображение от перемещения за пределы видимой области. Вот несколько предложений по улучшению кода:
В целом, это хорошо написанный код, который реализует основные функции. С некоторыми дополнительными функциями и улучшениями он может стать еще более пользовательским и функциональным. В статье описывается пример реализации функции перетаскивания изображения мышкой в Delphi с помощью обработчиков событий MouseDown,MouseMove и MouseUp. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Drag and Drop ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||