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


Лабораторнаробота № 5

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


Мета: навчитисявикористовувати можливості технології Drag&Drop у прикладних програмах,додавати до програм контекстні підказки.

Порядок роботи:

1. Користуючись рекомендованоюлітературою до лабораторної роботи створити проект відповідно доіндивідуального завдання.

2. Оформити звіт для захистулабораторної роботи за зразком

· назвароботи

· метароботи

· порядокроботи

· короткітеоретичні відомості

· алгоритмрозв’язку задачі

· текстивідповідних модулів проекту

· аналізотриманих результатів та висновки

 

ТехнологіяDrag&Drop

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

Усі властивості,методи та події, пов'язані з технологією Drag&Drop, визначені в класі TControl,що є базовим класом (прабатьком) усіх візуальних компонент Delphi. Тому вони єспільними для всіх компонент.

Початокперетаскування визначається властивістю DragMode, що можевстановлюватися в процесі проектування чи програмно рівною dmManual або dmAutomatic.Значення dmAutomatic (автоматичне) визначає негайний початок процесуперетаскування при натисканні користувачем кнопки миші над об'єктом. Однак уцьому випадку подія OnMouseDown, пов'язана з натисканням користувачем кнопкимиші, для цього об'єкта взагалі не настає.

Значення dmManual(ручне) говорить про те, що початок процесу перетаскування визначаєпрограміст. Для цього він повинен у відповідний момент викликати метод BeginDrag.Наприклад, він може помістити виклик цієї функції в обробник події OnMouseDown,що настає в момент натискання кнопки миші. У цьому обробнику можна попередньоперевірити якісь умови (режим роботи ужитку, натискання тих чи інших кнопокмиші і додаткових клавіш) і при виконанні цих умов викликати BeginDrag.

Нехай, наприклад,процес перетаскування повинен розпочатися, якщо користувач натиснув ліву кнопкумиші та клавішу Alt над списком ListBox1. Тоді властивість DragModeцього об'єкта слід установити в dmManual, а його обробник події OnMouseDownможе мати вигляд:

procedureTForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;

Shift:TShiftState; X, Y: Integer);

begin

if (Button =mbLeft) and (ssAlt in Shift)

then (Sender asTControl).BeginDrag(false);

end;

Параметр Buttonобробника події OnMouseDown показує, яка кнопка миші була натиснута, апараметр Shift є множиною, що містить позначення натиснутих у цей момент кнопокмиші і допоміжних клавіш клавіатури. Якщо натиснута ліва кнопка миші та клавішаAlt, то викликається метод BeginDrag даного об'єкта (Sender).

У функцію BeginDragпередається значення False. Це означає, що процес перетаскування почнеться неодразу, а тільки після того, як користувач зрушить мишу з натиснутою при цьомукнопкою. Це дозволяє відрізнити просте натискання клавіші миші від початкуперетаскування.

Якщо ж передати вBeginDrag значення True, то перетаскування почнеться негайно.

Коли почавсяпроцес перетаскування, звичайний вигляд курсору змінюється. Поки вінпереміщається над формою чи об'єктами на формі, які не можуть прийнятиінформацію, він звичайно має вигляд crNoDrop. Якщо ж він переміщаєтьсянад об'єктом, що готовий прийняти інформацію з об'єкта-джерела, то набуваєвигляду, що залежить від властивості DragCursor об'єкта-джерела (а нетого об'єкта, над яким переміщається курсор!). За замовчуванням ця властивістьдорівнює crDrag, що відповідає зображенню білого прямокутника з рамкою.

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

procedureTForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;State: TDragState;var Accept: Boolean);

begin

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

end;

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

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

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

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

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

begin

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

end;

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

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

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

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

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

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

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

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

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

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

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


Завдання

 

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

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

 

1. EditStringGrid.

2. ListBoxListBox.

3. StringGridMemo.

4. MemoRichEdit.

5. ListBoxListView.

6. LabelMemo.

7. ListViewListView.

8. StringGridStringGrid.

9. ListBoxMemo.

10. ShapeShape.

11. ImageImage.

12. EditListBox.

еще рефераты
Еще работы по информатике, программированию