![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Перетаскивание картинки мышью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 |