Delphi для початківців, Різне, Програмування, статті

Сьогоднішню статтю я хочу, в першу чергу, присвятити інтерфейсу середовища розробки Delphi. Це питання досить гостро стоїть і серед програмістів, недавно почали вивчення Delphi, і серед запеклих прогеріей, які цілодобово не сплять, занурившись в процес створення чергової програми.


Почнемо по порядку. Створюючи чергову програму, користувач компонує інтерфейс, виходячи з наявних у нього підручних об’єктів, при цьому він неминуче стикається з необхідністю змінити те чи інше його властивість. Як пам’ятає наш читач, властивості об’єктів на етапі розробки програми змінюються з використанням інспектора об’єктів. Цих властивостей існує досить багато. На них-то ми зараз і зупинимося.

Інспектор Об’єктів (Рис. 1). У вікні інспектора об’єктів є випадаюче меню і дві вкладки. Меню, що випадає показує нам, конфігурація якого об’єкта нам зараз представлена, а вкладки, власне, цю конфігурацію допомагають нам споглядати і змінювати. У вкладці Властивості (Properties) Зазначено не що інше, як властивості форми проекту :). Розглянемо деякі основні властивості детальніше:

Action – Призначає для об’єкта дію;

ActiveControl – Вказує на елемент форми, який має фокус;

Align – Встановлює положення об’єкту:

– AlNone – Положення об’єкта визначається вручну користувачем;

– AlBottom (AlTop) – Об’єкт розташований внизу форми (якщо мова йде про форму проекту, то – внизу екрану). При цьому висота об’єкта залишається незмінною, а його ширина збільшується до ширини форми (екрану);

– AlLeft (AlRight) – Об’єкт розташований в лівій частині форми (якщо мова йде про форму проекту, то – в лівій частині екрана). При цьому ширина об’єкта залишається незмінною, а його висота збільшується до висоти форми (екрану);

– AlClient – Об’єкт займає всю надану площу. Наприклад, при установці даної властивості формі проекту, при запуску програми, вікно буде розтягнуто на весь екран;

BiDiMode – Це властивість використовується для локалізації програми. Воно дозволяє встановити напрямок читання тексту в програмі;

BorderStyle – Властивість, що відповідає за тип форми. Включає в себе:

– bsNone – На формі повністю відсутні всі системні елементи управління. Форма виглядає як прямокутник без бортів і заголовка. При виконанні програми розмір форми змінити не можна;

– bsSingle – Стандартне вікно, але при цьому відсутня можливість зміни розмірів форми. Набір системних кнопок залежить від властивості BorderIcon;

– bsDialog – Стандартне діалогове вікно;

– bsToolWindow – Панель інструментів. Схожа на стиль bsSingle, але при цьому всі системні елементи зменшені;

– bsSizeToolWin – Панель інструментів. Схожа на стиль bsSingle, але при цьому всі системні елементи зменшені, можлива зміна розмірів форми;

BorderIcons – група властивостей, що відповідають за видимість системних елементів – кнопок: згорнути, закрити, розвернути, допомогу і системне меню;

Caption – Містить текст назви форми проекту;

CurrentHelpFile – Містить ім’я файлу контекстної допомоги, використовуваного додатком;

HelpFile – Задає ім’я файлу допомоги для застосування;

ShowHint – Включає або відключає показ спливаючих ярликів підказок;

Hint – Містить рядок ярлика підказки;

Icon – Вказує на значок програми;

Cursor – Встановлює тип курсора, який буде встановлений при наведенні миші на область об’єкта;

Visible – Встановлює таку властивість об’єкта, як видимість;

Enabled – Вказує на стан об’єкту. При значенні False об’єкт недоступний;

Font – Група властивостей, які характеризують відображення тексту, що використовується об’єктом. За допомогою цих властивостей можна змінювати колір, розмір, стиль, кодування і шрифт тексту;

Height – встановлює висоту об’єкта в пікселях;

Width – Встановлює ширину об’єкта в пікселях;

Left – Встановлює відступ лівого краю об’єкта від лівого краю форми проекту в пікселях;

Top – Встановлює відступ верхнього краю об’єкта від верхнього краю форми проекту в пікселях;

Name – Внутрішнє ім’я об’єкта програми;

TabOrder – Вказує напрямок переміщення фокусу при натисканні клавіші Tab (від початку до кінця або від кінця до початку, але при цьому хочу зауважити, що порядок переміщення фокуса можна змінювати за допомогою діалогу TabOrder (Edit/TabOrder…);

TabStop – При встановленому значенні False фокус при натисканні клавіші Tab на даний об’єкт не перекладається (при цьому фокус переходить до об’єкта, що стоїть наступним у списку TabOrder).

Вище описані властивості, які притаманні багатьом компонентам. Проте варто відзначити, що, крім вищезазначених параметрів, компоненти мають і специфічні властивості. Їх ми будемо розглядати по мірі вивчення матеріалу.

У другій вкладці Дії (Events) Вказані методи-обробники подій. Познайомимося з ними ближче:

OnActivate – Викликається при передачі фокусу формі проекту;

OnDeactivate – викликається при втраті фокуса формою проекту;


OnClose – викликається при закритті форми. Призначений для виконання операцій, що дозволяють користувачеві прийняти рішення про закриття форми або продовженні роботи;


OnCreate – викликається при створенні форми;


OnDestroy – Викликається при знищенні форми;


OnHide – викликається при зникненні форми з екрану;


OnPaint – Викликається при перемальовуванні форми;


OnShow – Викликається при появі форми на екрані;


OnClick – Викликається при натисканні на об’єкт;


OnMouseDown – Викликається при натисканні кнопки миші.


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


Вікно редактора коду. Як наш допитливий читач міг уже помітити, вікно редактора коду представлено трьома частинами:


– Панель модулів опису змінних і використовуваних модулів;


– Панель коду програми;


– Панель знайдених помилок програми (на етапі створення програми дане вікно є невидимим, активізується, якщо це необхідно, при компіляції програми).

Думаю, на цьому з інтерфейсом можна зупинитися і перейти до конкретних проблем програмування. Почати я б хотів з розділу Delphi, який звернув на себе увагу через наших читачів. Отже, діалоги. Здавалося б, досить простий розділ. Однак мене з десяток осіб запитали, яким чином можна провести операції над файлом, який повинен вибрати користувач. Які тільки варіанти рішення мені ні доводилося читати: і створювали додаткову форму об’єкта, і намагалися змусити користувача від руки написати адресу файлу, і пропонували скористатися компонентами Treeview, OutLine і їм подібним. При цьому читачі самі розуміли, що вони роблять зайву роботу і що існує більш короткий і простий шлях для вирішення проблеми. Як виявляється, внутрішнє відчуття наших читачів їх не повело. Досить було скористатися компонентом OpenDialog (сторінка Dialogs). Даний компонент легко встановлюється на форму проекту у вигляді квадрата. При запуску програми він невидимий. Квадрат лише вказує нам на те, що компонент встановлений і допомагає нам звертатися до його властивостей за допомогою інспектора об’єктів. Розглянемо їх детальніше.

Отже, після установки компонента на форму проекту діалогове вікно можна активізувати за допомогою функції Execute: Boolean. При цьому, якщо користувач вибрав файл або декілька файлів і натиснув кнопку ОК, то функція повертає True. Властивість компонента FileName містить ім’я останнього файлу зі списку обраних в діалозі. Властивість Files – список всіх файлів, в діалозі. Властивість InitialDir задає каталог, до якого діалог звертається при відкритті. Властивість Title містить заголовок діалогового вікна. Слід також відзначити властивість Filter. З його допомогою при виборі і збереженні файлів зручно здійснювати відбір файлів тільки з заданими розширеннями. Наприклад, для створення фільтра для виконуваних файлів властивість має містити наступну рядок:

“Виконувані файли / *. EXE”

В одному фільтрі можна відбирати файли і з різними розширеннями:

“Графічні зображення / *. JPG; *. GIF; *. PNG”

Фільтр також можна створити в простому редакторі, який пов’язаний з властивістю Filter в інспектора об’єктів.

Дуже цікаві властивості і при цьому одні з найважливіших для діалогових компонентів (OpenDialog, SaveDialog, OpenPictureDialog, SavePictureDialog) представлені в групі Options. Вони розглянуті в наступній таблиці:























































OfReadOnly

Встановлює значення прапорця Open As Read Only (відкрити тільки для читання)

ofOvewWritePrompt

Діалог виводить попередження, якщо вибирається вже використовуваний файл

OfHideReadOnly

Встановлює видимість прапорця Open As Read Only (відкрити тільки для читання)

OfNoChangeDir

Після вибору файлу і закриття діалогу встановлюється каталог, який був заданий у діалозі до відкриття

OfShowHelp

Додає до діалогу кнопку допомоги

OfNoValidate

Відключає перевірку імені файлу

OfAllowMultiSelect

Дозволяє вибирати в діалозі кілька файлів

OfExtensionDifferent

Встановлюється в True під час виконання програми, якщо розширення обраного файлу відрізняється від розширення за замовчуванням

OfCreatePrompt

Генерує попередження у разі вибору неіснуючого файла і пропонує створити його

OfShareAware

Дозволяє вибирати файли, які використовуються іншими процесами

OfNoReadOnlyReturn

Генерує повідомлення, якщо був вибраний файл з атрибутом “тільки для читання”

OfNoTestFileCreate

Відключає перевірку на існування обраного файлу і доступність мережевого диска

OfNoNetworkButton

Видаляє з діалогового вікна кнопку Network доступу до мережевих дисків

OfNoLongNames

Діалог не відображає файли з довгими іменами

OfOldStyleDialog

Представляє діалог в стилі windows 3.1x

OfNoDereferenceLinks

Не розрізняє файли та посилання на файли (розширення LNK)

OfEnableSizing

Дозволяє змінювати розміри діалогу

Як і у багатьох інших компонентів, у діалогів теж існують і свої методи-обробники подій. Серед них найбільш цікавими є OnClose, OnFolderChange, OnSelectionChange, OnTypeChange (думаю, в поясненнях ці методи не потребують).

Виходячи з усього вищесказаного, опишемо процедуру (щоб побачити все на конкретному прикладі), яка буде викликатися при натисканні на кнопку Button1, що виконує запуск діалогу OpenDialog1 і передавальну шлях до вибраного файлу в поле введення Edit1:

procedure TForm1.Button1Click(Sender: TObject);
begin
opendialog1.execute; {запуск діалогу за допомогою функції execute}
{Під час активації діалогу виконання процедури припиняється}
edit1.text: = opendialog1.filename; {присвоювання полю введення Edit1 шляху до файлу}
end;

На цьому розділ діалогів роботи з файлами закінчується. Всього вищеописаного цілком достатньо для створення повноцінних додатків. Мною були спеціально опущені деякі моменти, про які я не вважав за потрібне писати. Вони рідко використовуються в програмуванні, однак розширюють можливості роботи з програмою. При величезному вашому бажанні я можу написати про них персонально. Заявки – на e-mail :).

Наступною зупинкою я вибрав повідомлення. Погодьтеся, повідомлення грають далеко не останню роль в роботі програми. За допомогою повідомлень програміст може сповіщати про помилки користувача при завданні вихідних даних для роботи програми, система повідомляє про некоректної роботи додатків, завдяки повідомленням програмні продукти доводять до нашого відома інформацію про свою версії, про розробників і фірмі-виробнику, нарешті, планувальники повідомляють користувачеві про заплановані зустрічі, події. Реалізувати повідомлення можна кількома способами: за допомогою процедури ShowMessage, функції MessageDlg, створення додаткового вікна.

Процедура showmessage дозволяє вивести користувачеві просте повідомлення. При цьому з’явиться додаткове вікно з назвою проекту і кнопкою ОК. Виглядає все це наступним чином:


Синтаксис:
ShowMessage(Msg: string);

Приклад:
ShowMessage (“Усі завдання виконані успішно”);

Функція messageDlg дозволяє створювати складні діалогові запити з використанням зворотного зв’язку. Має вигляд додаткового вікна, доповненого зображенням. При цьому можливо використовувати діалогові запити. Назва вікна залежить від типу запиту.


Синтаксис:

MessageDlg(Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: Longint): Word;


Msg – рядковий параметр. Задає виведене повідомлення;

Atype – внутрішній параметр функції. Задає тип повідомлення:

– MtWarning – повідомлення про попередження;

– MtError – повідомлення про помилку;

– MtInformation – інформаційне повідомлення;

– MtConfirmation – повідомлення про підтвердження;

– MtCustom – повідомлення не містить в кутку зображення. Назва вікна відповідає назві виконуваного файлу (аналогічно showmessage).

Abuttons – задає імена кнопок, які будуть відображатися на діалоговому запиті. Можливі значення: mbYes, mbNo, mbOK, mbCancel, mbHelp, mbAbort, mbRetry, mbIgnore, mbAll.

HelpCtx – містить номер розділу, який буде показаний користувачеві, якщо він викличе довідку, коли діалог активізований.

Приклад:

MessageDlg (“Продовжити виконання програми”, mtConfirmation, [mbYes, mbNo], 0);

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

If MessageDlg (“Закінчити виконання завдання?”, MtConfirmation, [mbYes, mbNo], 0) = mrYes
then
begin
MessageDlg (“Виконання завдання закінчено.”, MtInformation, [mbOk], 0);
Close;
end;

Створення повідомлення за допомогою додаткового вікна досить трудомістким. Цей спосіб використовується для створення складних запитів, коли одного тільки “Так” і “Ні” мало. Прикладом може служити ситуація, коли від користувача необхідно отримати код продовження, в залежності від якого додаток буде виконувати ті чи інші операції. Розглядом даного способу створення повідомлень і використання додаткових вікон для допоміжних завдань ми займемося в наступній статті.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*