Вивчаємо програмування в Gupta Team Developer. Крок 2 – Розробка користувальницького інтерфейсу, Інтеграція додатків і даних, Бази даних, статті

Частина 1


Зміст




Дана стаття є другою у циклі статей під загальною назвою “Вивчаємо програмування в Team Developer / Gupta”, в якому ми постараємося дати починаючому користувачеві програмних продуктів Gupta Technologies всю необхідну інформацію для вивчення програмування та отримання навичок створення інформаційних систем. У ній ми розглянемо способи побудови інтерфейсу користувача на базі стандартних об’єктів Team Developer (TD). Для успішного засвоєння матеріалу читачеві бажано познайомитися з першою статтею з цього циклу, який буде розміщений на нашому сайті. Після завершення читання і практичних вправ, які пропонуються в статті, Ви зможете створити свій власний додаток на TD, що використовує різні елементи інтерфейсу.


Введення


Традиційно, під інтерфейсом користувача в середовищі WINDOWS розуміється сукупність видимих ​​(візуальних) елементів управління, які розташовуються на екрані дисплея і допомагають керувати процесами в програмою, для виконання заданих функцій. Всі елементи-об’єкти можуть бути поділені на два класи: віконні об’єкти і дочірні об’єкти. У Team Developer віконними об’єктами є:



Серед дочірніх елементів, які існують тільки в межах віконних об’єктів, виділяються такі основні:



Всі ці елементи є стандартними для TD. Робота з ними досить проста і прозора. Розглянемо їх використання на основі простого прикладу підсумовування.


Створення простого вікна


Створимо спочатку нове стандартний додаток, запустивши попередньо TD:


1. START->PROGRAMS->CENTURA->Team Developer 2.1-> SQLWindows 2.1.


Для збереження програми необхідно виконати наступні дії:


2. МЕню FILE-> SAVE AS, Вибрати потрібний каталог і ввести будь-яке ім’я, ми назвемо додаток STEP2.APP.


3. Далі створимо вікно загального вигляду. Для цього в дереві програми виділимо елемент групи WINDOWS, Клацнемо на ньому правою кнопкою мишки, в призначеному для користувача меню виберемо позицію NEW, А у вкладеному меню позицію Form Window. Після цього буде створено вікно з поточним стандартним ім’ям (у нас на малюнку нижче ftm1) І стандартними встановленими властивостями (заголовок – untitled). Для того щоб побачити образ вікна необхідно в нижній частині вікна програми вибрати закладку Layout.

Рис. 1. Створення нового вікна в TD


4. Для налаштування властивостей вікна скористаємося керуючим вікном інспектора атрибутів в введемо назву об’єкта frmFirst замість frm1 і “Вікно програми” замість “untitled” у властивості Object Title.

Рис. 2. Вікно інспектора атрибутів для Form Window


Звернемо увагу на те, щоб властивість Automatically Create залишилося в положенні Yes. У результаті ми одержимо наступне вікно після установок (рис. 3).

Рис. 3. Вікно frmFirst з настройками


Примітка:




    1. Вікно можна побачити і проектувати в розгорнутому вигляді. Для цього необхідно переключити його в режим Preview Window (Клацнути правою кнопкою на вікні в дереві програми і включити цей режим Preview Window).
    2. Зворотне перемикання з режиму Preview Window у віконний режим виконується аналогічно.

5. Перший додаток з вікном готове до виконання. Запустіть його – F7. Для закриття вікна і додатки натисніть на “хрестик” у правому верхньому куті.


6. Тепер вимкнемо режим Automatically Create (положення NO в інспектора атрибутів вікна). І налаштуємо подія старту програми, як показано в тексті на малюнку нижче. Ця подія ми розглядали в першій статті циклу.

Рис. 4. Фрагмент тексту запуску вікна за подією SAM_AppStartup


У тексті викликається функція створення вікна з параметрами: у Ім’я шаблону вікна (frmFirst) І покажчиком батьківського вікна. У нашому випадку цей покажчик замінений системної змінної hWndNULL, Що показує, що батьківське вікно відсутня. По заданому шаблону можна створювати довільне число вікон.


7. Знову запустіть додаток – F7. Для закриття вікна і додатки натисніть на “хрестик” у правому верхньому куті.


Обробка повідомлень для вікна


Вікно, як і додаток, обробляє різні повідомлення, список яких можна побачити в асистент кодування при виділенні закладки (або OUTLINE) Action. Повідомлення надсилаються до вікна і можуть бути оброблені програмістами. При цьому стандартні дії системи за цими повідомленнями зберігаються, якщо виконується повернення з певним значенням (булевих), то вони можуть бути перевантажені. Нижче дан приклад обробки повідомлень у вікні.


В даному випадку при обробці повідомлень використовується функція SalMessageBox для індикації їх появи.


8. Включіть у текст Вашого застосування цей фрагмент і заново виконайте додаток (F7).

Рис. 5. Обробка повідомлень SAM_Create і SAM_Close у вікні.


Перейдемо тепер до створення, дочірніх об’єктів. Інші віконні об’єкти ми розглянемо пізніше при необхідності.


Стандартні дочірні об’єкти вікна та їх створення


Для включення об’єкта в вікно можна скористатися трьома способами:


Візуальним способом: на панелі об’єктів виділяється потрібний об’єкт (наприклад, кнопка), а потім у вікні він малюється прямокутником в потрібному місці.


З використанням дерева програми (для вікна): розкрити вміст вікна, правою кнопкою на елементі Child Windows викликати для користувача меню, в якому вибравши пункт NEW вибрати необхідний дочірній об’єкт (для кнопки PushButton).


З використанням OUTLINE – тексту програми: вибрати закладку OUTLINE для всього вікна, в якій виділити рядок Contents, а далі з асистента кодування вибрати об’єкт потрібного класу (наприклад, Pushbutton).


Всі способи є рівноправними. Далі можна налаштувати властивості об’єкта. На малюнку нижче представлений третій спосіб додавання об’єктів у текст програми.

Рис. 6. Додавання об’єктів у вікно


Найбільш зручним є візуальний спосіб, хоча, зрештою, все одно необхідно виконувати дії з кодування тексту в OUTLINE.


Налаштування властивостей об’єктів і обробка повідомлень


Додамо кнопку одним з перерахованих способів і налаштуємо її властивості. Привласнимо ім’я цього об’єкта – pbClose, А заголовок (Object Title) – “Закрити”. На малюнку, розташованому нижче зображений фрагмент OUTLINE та інспектора атрибутів для створеної кнопки. Дана кнопка буде закривати наше вікно і завершувати програму, тому що інших активних вікон не створено. Для закриття вікна використовується функція SalDestroyWindow з параметром hWndForm. Цей параметр є системним і задає покажчик на поточний активне вікно, в якому обробляються повідомлення. У вікні інспектора аттрібутов ми замінили назву кнопки на pbClose і заголовок об’єкта.

Рис. 7. Створення кнопки у вікні і налаштування її властивостей.


9. Додайте кнопку, включіть в текст Вашого застосування цей фрагмент і заново виконайте додаток (F7). Для його завершення тепер достатньо натиснути на кнопку “Закрити”.


Тепер додамо у вікно поле даних dfNumber (Data Field) і ще одну кнопку pbNumber (Імена об’єктів, звичайно, можуть бути довільними). Кнопка повинна заносити в поле фіксоване числове значення (нехай – 5). Поле вводу повинні бути числовим (Data Type – Number).

Рис. 8. Текст опису об’ектовdfNumber і pbNumber.

Рис. 9. Результати роботи програми після натискання на “Занести в полі 5”.


У вікні створений об’єкт-пояснення “Поле числове” (тип – Background Text). Побачити властивості цього об’єкти можна у вікні інспектора атрибутів.


Приклад виконання функцій вікон і програми


Розглянемо тепер приклад з декількома полями і використання функцій, визначених у вікні. Нехай наш додаток виконує підсумовування двох полів введення та інформацію заносить у третє поле. Остаточний вид такого додатка може бути таким як показано на малюнку нижче. У цьому додатку за допомогою кнопки “Підсумувати“Формується сума двох полів в третьому полі:


Сума = Перший доданок + Перший доданок


Для цього виконується наступний оператор по події натискання на цю кнопку (On SAM_Click):



а Set dfSumm = dfSl1 + dfSl2.


Цей додаток працює в двох режимах, що визначаються станом Check Box “Вікна”:


У першому режимі довга кнопка (Check Box включений – TRUE) працює з функцією вікна (sum), а текст на ній містить інформацію “Підсумовувати у функції вікна + 100”. На малюнку нижче показані результати після натискання кнопки.

Рис. 10. Вікно програми в режимі підсумовування у функції вікна (sum)


У другому режимі довга кнопка (Check Box вимкнений – FALSE) працює з глобальною функцією програми (sum1), а текст на ній містить інформацію “Підсумовувати у функції програми”. На малюнку нижче показані результати після натискання кнопки.

Рис. 11. Вікно програми в режимі підсумовування у функції додатка (sum1)


10. Для перевірки такого додатка потрібно створити чотири поля введення типу Number (Дамо їм імена: dfSl1, dfSl2, dfSumm і dfSummFun), дві кнопки (“Підсумувати“- PbSummField і”Підсумовувати у функції вікна + 100 “- pbSummFun) і Check Box “Вікна“(CbLocal). Оформити наступні фрагменти тексту:


Для управління режимами: Після натискання на Check Box змінюється текст на кнопці з допомогою функції SalSetWindowText:

Рис. 12. Зміна режиму і тексту кнопки


Простий фрагмент тексту, наведений нижче, показує, як можна побудувати розгалуження на основі Check Box cbLocal. У залежності від його стану (TRUE або FALSE) виконується одна або інша функція.

Рис. 13. Виклик функції залежно від режиму


Опис локальної функції наведено нижче. Опис глобальної функції програми (sum1) аналогічно опису, даному в першій статті в додатку step1.app.

Рис. 14. Опис локальної функції вікна


Управління можна побудувати і на основі радіокнопок (Radio Button). Приклад такого додатка і текст програми, що пояснює логіку, даний нижче.

Рис. 15. Управління за допомогою радіо кнопок


На малюнку, представленому нижче текст програми умовно об’єднаний в єдиний фрагмент. Перша його частина відноситься до процедури обробки натискання кнопки (SAM_Click) Для виконання функцій. Залежно від стану (rbLocal – TRUE / FALSE) буде викликана локальна функція вікна (sum) Або глобальна функція програми (sum1). У другому фрагменті, який потрібно розташувати в процедурі обробки натиснення на радіо кнопку (rbLocal) Мишею, встановлюється текст кнопки (pbSummFun) викликає локальну функцію. Аналогічно, у третьому фрагменті, який відповідає опису реакції натискання на радіо кнопку (rbGlobal) Змінюється режим і текст, розташований на кнопці pbSummFun.

Рис. 16. Фрагмент тексту керування радіо кнопками.


Узагальненої опис об’єктів вікна нашого застосування (в режимі OUTLINE) виглядає так. У частині Contents виділені всі створені об’єкти інтерфейсу.

Рис. 17. Опис об’єктів вікна.


11. Підготуйте всі фрагменти тексту в додатку. Чи не забуваєте користуватися асистентом кодування (про нього ми детально говорили в першій статті). Запустіть і протестуйте створене додаток.


В результаті Ви отримали додаток step2.app, яке для перевірки засвоєння матеріалу можна скачати тут. Для тестування різних режимів потрібно закоментувати або відкоментувати фрагменти програми. Це зазначено в тексті у вигляді коментаря.



Примітки:



  1. Коментувати і відкоментувати можна будь-який фрагмент тексту, включаючи ціле вікно або будь-якої його фрагмент. Для цього можна використовувати для користувача меню, яке з’являється при натисканні правою кнопкою після виділення фрагмента тексту (як у WORD виділяються рядки – натискання ліворуч від OUTLINE), вибирається Comment або Uncomment відповідно.
  2. Коментування допомогою меню: виділяємо фрагмент і EDIT-> Comment або Uncomment.
  3. Допускається коментування і в дереві програми, однак откомментірованіе в цьому випадку можливе тільки в режимі OUTLINE.

Висновок


У наступній статті цього циклу ми розглянемо способи інші побудови користувацького інтерфейсу і реалізації бізнес логіки в додатках. Зокрема роботу з таблицями, вікнами діалогу і зі списками. Розглянемо способи налагодження і тестування програм в TD.

Частина 3

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


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

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

Ваш отзыв

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

*

*