Лабораторная работа: Створення проекту з використанням технології Drag&Drop та контекстних підказок

if(Sender as TControl<> Source) then Accept := Source is TListBox else Accept := False;

end;

У ньому спочатку перевіряється, чи не є даний об'єкт (Sender ) і об'єкт-джерело (Source ) тим самим об'єктом.

Це зроблено, щоб уникнути перетаскування інформації усередині того самого списку.

Значення параметра Accept , що задається в обробнику події OnDragOver , визначає вигляд курсору, що переміщається при перетаскуванні над даним об'єктом. Цей вигляд показує користувачу, чи може даний об'єкт прийняти інформацію, що передається. Якщо в об'єкті не описаний обробник події OnDragOver , то вважається, що даний об'єкт не може прийняти інформацію від об'єкта-джерела.

Процедура прийому інформації від об'єкта-джерела, записується в обробнику події OnDragDrop об'єкта-приймача. Ця подія настає, якщо після перетаскування користувач відпустив клавішу миші над даним об'єктом. В обробник цієї події передаються параметри Source (об'єкт-джерело) і X і Y координати курсору. Якщо продовжити приклад перетаскування інформації з одного списку в іншій, то обробник події OnDragDrop може мати вигляд:

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);

begin

(Sender as TListBox).Items.Add((Source as TListBox).Items[(Source as TListBox).ItemIndex]);

end;

У цьому обробнику рядок, що виділений у списку-джерелі (Source as TListBox).Items[(Source as TListBox).ItemIndex] , додається в список-приймач методом (Sender as TListBox).Items.Add . Використовується операція as , яка дозволяє розглядати параметри Sender і Source як вказівники на об'єкт класу TListBox . Це робиться тому, що ці параметри є оголошені у заголовку процедури як вказівники на об'єкти класу TObject . Але в класі TObject немає властивостей Items і ItemIndex, які нам потрібні. Ці властивості є визначені в класі TListBox , що є нащадком TObject . Тому з параметрами Sender і Source у даному випадку треба оперувати як із вказівниками на об'єкти TListBox , що і виконує операція as .

У даному випадку можна було б не використовувати параметр Sender , замінивши (Sender as TListBox) просто на ListBox1 . Але запис оператора в загальному вигляді за допомогою параметра Sender дозволяє скористатися таким обробником і для інших об'єктів ListBox , якщо вони є в ужитку.

Після завершення чи припинення перетаскування настає подія OnEndDrag , в обробнику якої можна передбачити якісь додаткові дії. Також пов'язана з перетаскуванням подія OnStartDrag , що дозволяє зробити якісь операції на початку перетаскування, коли іншим способом цей момент не можна зафіксувати.

Таким чином, якщо в ужитку є кілька списків і потрібно задати можливість копіювання рядків кожного з цих списків у будь-який іншій, те це вимагає двох операцій:

1. Написати для одного списку обробник події OnDragOver . Для всіх інших списків указати для події OnDragOver цей же обробник (виділивши у формі всі списки, що залишилися).

2. Написати аналогічним чином для всіх списків обробник події OnDragDrop .

Якщо починати перетаскування потрібно тільки при виконанні якої-небудь додаткової умови, наприклад, при натисканні клавіші Alt, то буде потрібно задати для всіх списків значення властивості DragMode , рівне dmManual і написати обробник події OnMouseDown .

Контекстна підказка

програмування контекстна підказка

Контекстна підказка - це невелике віконце з текстом, яке з'являться за деякий час після наведення курсору миші на певний об'єкт на формі. Для різних об'єктів текст може бути різним, тому підказка називається контекстною.

Для створення такої підказки у програмі слід задати значення властивості Hint (рядкового типу) для відповідного об'єкта, а також установити у True значення його властивості ShowHint. Ці дії можна виконати як у процесі проектування так і програмно.


Завдання

Написати програму, яка показує можливості технології Drag&Drop для заданих об'єктів - джерела та приймача. Необхідну інформацію для користувача програми оформити у вигляді контекстної підказки.

Варіанти завдання

1. Edit StringGrid.

2. ListBox ListBox.

3. StringGridMemo.

4. MemoRichEdit.

5. ListBoxListView.

К-во Просмотров: 131
Бесплатно скачать Лабораторная работа: Створення проекту з використанням технології Drag&Drop та контекстних підказок