Суббота, 04.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Как часто ви на этот сайт заходите?
Всего ответов: 159
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Разные » Примеры Delphi

Drag&Drop, учимся перетаскивать картинку по форме

В этом уроке будем учиться с помощью мышки перетаскивать по форме компонент Image.

  1. Создаем новый проект на форму кидаем компонент Image с закладки Additional. Сразу загрузите в image какую ни будь картинку!
  2. Для начала давайте определимся с тем каким образом пользователь будет перемещать объект по форме. Я предлагаю сделать так: если нажата кнопка мышки и удерживается клавиша Ctrl то можем перетаскивать. Для этого на компоненте Image создаем обработчик событий OnMouseDown, в котором пропишем вот такую строку
if ssCtrl in Shift then Image1.BeginDrag(True) ; 

Т.Е при нажатии кнопки мышки проверяем условие: если нажата клавиша CTRL то можем перетаскивать

Во время перетаскивания компонента Image над формой, а также при отпускании кнопки, у Формы возникает событие:
OnDragOver - В котором мы должны сказать форме примет ли она данный элемент(В нашем случае Image)

Итак, создадим на форме обработчик событий OnDragOver и в нем пропишем вот такую строку

Accept:= (Source is TImage) ; // Разрешаем принимать компонент Image 
  1. Теперь нам осталось лишь сообщить программе что нужно делать, когда пользователь отпустил кнопку т.е завершил перетаскивание. Для этих целей существует событие OnDragDrop В обработчик этого события передаются параметры Source (объект-источник) и X и Y координаты курсора. В общем создаем обработчик событий OnDragDrop на форме и между begin .. end пишем:
if Source is TImage then // Если перетаскиваем компонент Image то
begin
TImage(Source).Left := X; //Переместить компонент Image в координаты //курсора по X
TImage(Source).Top := Y; //Переместить компонент Image в координаты //курсора по Y
end;

Вот и все можите запускаться!!!

P.S. Полный код примера:

procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source is TImage then
begin
TImage(Source).Left := X;
TImage(Source).Top := Y;
end;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := (Source is TImage) ;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssCtrl in Shift then Image1.BeginDrag(True) ;
end;

Получить ссылку на материал

Категория: Примеры Delphi | Добавил: Барон (20.12.2011)
Просмотров: 2192 | Теги: картинка, форма, Drag&Drop | Рейтинг: 1.0/1
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
Delphi.NET [3]
Kylix Delphi for Linux [9]
Советы Дельферу [6]
Хитрости в Delphi [2]
Обзор Delphi [45]
Инсталлятор [11]
Пользовательский интерфейс [18]
Примеры Delphi [93]
Функции и процедуры [15]
Разные [31]
Королевство Delphi © 2010-2024
Яндекс цитирования