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

Введення

  • Меню і діалоги TD


    • Робота з віконними меню. Редактор меню і ручний спосіб налаштування
    • Меню. Деактивація і позначка пунктів меню
    • Створення та опис вікна діалогу
    • Завершення діалогу

  • Масиви статичні і динамічні

    • Опис і створення масивів

    • Опції масивів

    • Заповнення і межі масивів

    • Нарощування масивів

  • Лінійки прокрутки і кнопки режимів

    • Лінійки прокрутки
    • Режими кнопки

  • Висновок


  • Дана стаття є третьою в циклі статей під загальною назвою "Вивчаємо програмування в Team Developer / Gupta", в якому ми постараємося дати початківцю програмних продуктів Gupta всю необхідну інформацію для вивчення програмування і отримання навичок створення інформаційних систем. У ній ми розглянемо роботу з меню, лінійками прокрутки і вікнами діалогу для об'єктів TD. До кожного досліджуваному розділу докладено спеціальне налагоджене програмне додаток, що дозволити перевірити успішність освоєння матеріалу. Для успішного засвоєння матеріалу читачеві бажано познайомитися з Крок 1"І"

    Рис. 1. Вікно програми для вивчення меню і вікон діалогу в TD


    Для створення меню можна використовувати асистент кодування або візуальний редактор меню (Component->Menu Editor або "Права кнопка" -> Menu Editor). Редактор меню, його вікно показано на малюнку нижче, дозволяє ввести та налаштувати пункти меню, побудувати вкладене меню (POPUP), Задати порядок пунктів меню, роздільники, налаштувати текст підказки (Status Text) І визначити гарячі клавіші для пункту (Accelerator). Крім цього Ви можете визначити стан пункту меню (доступний або недоступний, позначений або не позначено) за допомогою констант, змінних і функцій, а також задати спричинюється функцію або запускається вікно програми. Робота з редактором меню інтуїтивно зрозуміла, а результат налаштувань відображається автоматично в OUTLINE вікна і може надалі редагуватися вручну.

    Рис. 2. Візуальний редактор меню TD


    Результат конструювання меню буде занесений в текст програми, що розробляється, який зображений на малюнку нижче. Для наочності тут наведено дерево вікна (ліворуч), в якому для головного вікна (frmFirst) Виділена позиція віконного меню (Windows Menu), А праворуч зображений текст побудованого меню.

    Рис. 3. Текстове редагування меню в режимі OUTLINE


    Для наочності не всі пункти меню розгорнуті (ми їх розглянемо далі) і наведений фрагмент вікна асистента кодування в режимі додавання нових позицій меню. Можна додати: нову позицію меню (Menu Item), Вкладене меню (Popup Menu), Пойменоване меню (Named Menu), Стандартне меню управління вікнами (Windows Menu), Рядки меню (Menu Row) І колонки меню (Menu Collumn). Останні дві позиції дозволяють організувати рядкове меню у вигляді кількох рядків, а спадаюче меню з декількох колонок. Крім того, можна в спадаючому меню вкласти роздільники (Menu Separator).

    Рис. 4. Вікно програми для вивчення меню і вікон діалогу в TD


    На малюнку, представленому нижче дано перелік основних об'єктів вікна програми, з якою ми будемо використовувати для вивчення режимів меню і роботи з вікнами діалогу. Ці об'єкти відповідають візуальним об'єктам вікна.

    Рис. 5. Об'єкти вікна програми для вивчення меню і вікон діалогу в TD


    Кнопка pbClose, Забезпечує закриття вікна. Поле dfNumMain служить для введення цілочисельного параметра, переданого в діалог. Поле mlStrMain (Типу Multiline Field) Служить для введення багаторядкового параметра, переданого в діалог. Поле dfIndic, недоступне для редагування, використовується для індикації зміни рядка переданої в діалог.


    Меню. Деактивація і позначка пунктів меню


    Станом меню можна легко управляти в процесі виконання програми. Для цього можуть бути задані змінні або функції для описувачів меню, що містяться в розділі Menu Settings: Enadled when ("Доступно, якщо") і Checked when ("Позначено якщо"). У цих розділах OUTLINE можна:



    1. Нічого не задавати (за умовчанням "доступно" і "не позначено");
    2. Поставити константу (TRUE і FALSE);
    3. Поставити змінну (див. у прикладах нижче – bQuit) Або
    4. Виконати виклик функції (див. нижче – MenuCheck).

    Результат такого управління пунктами меню показаний на малюнках, розташованих нижче. Позначка меню представлена ​​"галочкою" розташованої перед рядком меню, а недоступність позначається блідим кольором.

    Рис. 6. Головне вікно з підменю.
    Пункт "Виклик діалогу" позначено і пункт "Діалог" недоступний.


    Нижче дан фрагмент тексту програми, що містить код обробки пункту меню "Діалог". Реакція на активізацію пункту меню приводить до виконання підпрограми на мові SAL визначеному в розділі Menu Actions. У даному пункті:



    1. Настроюються поля вікна і параметри для виклику діалогу,
    2. Відключається пункт меню зміною змінної bQuit на FALSE,
    3. Перевіряються і встановлюються значення параметрів (приховано для стислості) і
    4. Викликається вікно діалогу.

    Рис. 7. Опис меню виклику вікна діалогу


    Після повернення з вікна діалогу:



    1. Перевіряється код повернення (nCount), Рухаючись з діалогу.
    2. Аналізується повертається параметр (strCommon) І
    3. Виводяться повідомлення на екран із значенням коду повернення (приховано в if) І Значення повертається параметра (strCommon – Останній рядок).

    Установки меню для іншого вкладеного пункту меню "Виклик діалогу" зроблені так, що цей пункт завжди доступний (Enabled when – TRUE) І позначка управляється спеціальною функцією (MenuCheck), Фрагмент якої наведено нижче. Функція працює в режимі тригера (змінює поперемінно повертає значення з TRUE на FALSE і назад). Функція управляє зовнішнім параметром bCheck. Таким чином, "галочка" з'являється поперемінно у пункті вкладеного меню.

    Рис. 8. Установки меню і функція установки


    Вимкнення пункту "Діалог" головного меню виконується в його процедурі обробки (ми вже про це говорили вище). Зовнішній параметр bQuit встановлюється в FALSE. Після цього за допомогою спеціальної функції SalDrawMenuBar оновлюється стан пунктів меню.

    Рис. 9. Вимкнення пунктів меню за допомогою змінної


    Включення пункту "Діалог" головного меню виконується таким аналогічним чином. Параметр bQuit встановлюється в TRUE. Це показано на малюнку, представленому нижче.

    Рис. 10. Включення пунктів меню за допомогою змінної


    Більш складні операції з управління меню в TD можна виконувати за допомогою бібліотеки Visual Toolchest (VT), яку ми предметно розглянемо в наступних статтях. Після того як ми навчилися, в основному, управляти пунктами меню, розглянемо, як створювати і викликати діалогові вікна.


    Створення та опис вікна діалогу


    Вид вікна діалогу "Пробний діалог", якою ми будемо розглядати представлений нижче на малюнку. В даному вікні визначені дані, в яких висвічуються параметри, передані в діалогове вікно. Крім того, виділений перемикач (Check Box), який для ілюстрації використовується для управління кодом повернення з діалогу.

    Рис. 11. Вид викликається вікна діалогу


    Дані об'єкти виділено також в дереві програми на малюнку нижче. Відзначимо, в деревоподібної структурі опису об'єктів розміщуються і об'єкти фонового тексту (Background Text) Для заголовків полів параметрів ("1-й і 2-й параметри").

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


    Самое докладний опис діалогового вікна представлено в тексті програми (OUTLINE), яке дано на нижньому малюнку. У першому рядку опис дається назва форми типу Dialog Box – dlgTest.

    Рис. 13. Опис вікна діалогу dlgTest (текст OUTLINE)

    Рис. 14. Опис параметрів вікна діалогу


    У розділі Windows Parameters задаються параметри (формальні параметри), які передаються у вікно при його запуску. Як параметри можуть передаватися будь-які змінні мови SAL. У нашому випадку це: цілочисельний параметр nTest і параметр типу довга рядок (Long String) – strTest. Перед параметром strTest варто префікс Receive, Який означає, що даний параметр може бути повернений в зухвалу процедуру (див. нижче). Після запуску вікна діалогу обробляється повідомлення SAM_CreateComplete і елементам віконного інтерфейсу діалогу (dfNumber і mlTest) Присвоюються значення переданих параметрів. Значення перемикача коду повернення cbReturn (Check Box) Встановлюється за умовчанням в положення FALSE (Виключено). Головне вікно в момент перед викликом вікна діалогу показано на нижньому малюнку. Перед викликом діалогу з головного вікна можна вручну задати значення переданих параметрів, або використовувати значення, що задаються за умовчанням (44 і "Приклад тексту, займає два рядки!" відповідно). На малюнку вони вже занесені в поля введення "Число:" і "Довга рядок:".

    Рис. 15. Головне вікно з параметрами виклику


    Для ілюстрації виходу з пропозиції і виклику діалогу створимо вкладене меню (POPUP), Підпорядковане пункту головного меню "Вихід з підменю". Визначимо найменування пунктів (Menu Item) Підменю так: "Вихід з програми" і "Виклик діалогу". На малюнку, розташованому нижче, наведено приклад опису вкладеного меню. Вигляд цього підменю у розкритому вигляді був зображений на малюнку вище.

    Рис. 16. Опис POPUP меню


    Виклик вікна діалогу в програмі виконується за допомогою функції SalModalDialog. Приклад виклику даний нижче на малюнку.

    Рис. 17. Виклик вікна діалогу і перевірка коду повернення nCount


    Перший фактичний параметр при виклику цієї функції задає ім'я діалогу (dlgTest), Другий параметр визначає змінну покажчик викликає вікна (hWndForm – Це стандартна змінна, що визначає покажчик поточного вікна, у нас це вікно – frmFirst). Третій і четвертий – це необов'язкові параметри діалогу. Таких параметрів при описі діалогів можна визначити довільне число. У нашому випадку це: dfNumMain – Цілочисельне поле введення вікна і strCommon мінлива вікна типу Long String. Код повернення, повертається діалогом, буде записаний в спеціальну змінну (nCount). Аналіз даної змінної дозволяє видати повідомлення, наведене нижче.

    Рис. 18. Повідомлення з індикацією коду повернення


    Рядок, яка повертається з діалогу (strCommon), Може бути перевірена і виведена на екран. Це показано нижче у фрагменті тексту. Спочатку перевіряється зміна параметра і на екран головного вікна видається повідомлення індикації змін (поле – dfIndic, Захищене від редагування). Поле екрану mlStrMain задається в операторі присвоювання, а потім для ілюстрації прийнята з діалогу рядок виводиться у вікні повідомлень (SalMessageBox).

    Рис. 19. Контроль повертається параметра strCommon


    Результат виведення наведено на малюнку, розташованому нижче.

    Рис. 20. Повідомлення з індикацією повертається параметра


    Завершення діалогу


    Завершення роботи діалогового вікна виконується функцією SalEndDialog. Приклад її виклику у вікні діалогу зображений на малюнку наведеному нижче.

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


    За значенням перемикача (cbReturn), Який може бути встановлений в самому діалоговому вікні вручну, код повернення встановлюється в 0 або 1. Дані дії виконуються в розділі Message Actions при реакції на повідомлення SAM_Click для кнопки pbClose вікна діалогу.


    В результаті виконаних дій Ви отримаєте додаток step3_dialog.app, Яке для перевірки засвоєння матеріалу можна скачати

    Рис. 22. Вікно програми для вивчення статичних масивів TD


    В даному вікні показані всі основні можливості для ілюстрації роботи з масивами. Ми будемо окремо розглядати особливості роботи зі статичними і динамічними масивами, тому представлене вікно може зі статичними і динамічними масивами (цим управляє радіокнопка – "Тип масиву").


    Опис і створення масивів


    У вікні програми передбачено:



    1. Створення масиву з заданими межами ("Створити масив"),
    2. Його заповнення періодичної послідовністю чисел ("Заповнити масив"),
    3. Виконання функцій роботи з масивами ("Сума", "Середнє", "Максимум" і "Мінімум"),
    4. Динамічне додавання заданого числа елементів в масив ("Додати"),
    5. Автоматична індикація вмісту масиву в списку.
    6. Опитування конкретного елемента масиву ("Показати").

    Приклад опису статичних і динамічних масивів однієї розмірності даний на малюнку, розташованому нижче.

    Рис. 23. Опис статичних і динамічних цілочисельних масивів у TD


    Масиви можуть бути описані в розділі Windows Variables вікна (або програми). У даному прикладі описаний статичний цілочисельний масив nStaticArray, Размерностью 5 елементів і динамічний масив nArray, Розмірність якого не визначається при описі (замість розмірності поставлена “*”). Описані тут же допоміжні цілочисельні змінні nCount і nIndex, Які використані в програмі. Перелік об'єктів програми для ілюстрації роботи з масивами в TD даний нижче у фрагменті тексту.

    Рис. 24. Об'єкти вікна статичних і динамічних цілочисельних масивів у TD


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


    Опції масивів


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

    Рис. 25. Виклик стандартних функцій для масивів


    У фрагменті тексту на малюнку, наведеному вище, показано використання цих стандартних функцій для: отримання суми елементів масиву (SalArraySum), Підрахунку середнього значення (SalArrayAvg), Знаходження максимуму (SalArrayMax) І мінімуму (SalArrayMin) Масиву.


    Заповнення і межі масивів


    Заповнення масиву виконується звичайним циклом, вигляд якого наведено нижче.

    Рис. 26. Заповнення масиву послідовністю значень


    У даному фрагменті тексту мовою SAL, спочатку, за допомогою функції SalArrayGetUpperBound обчислюється верхня межа масиву (nCount). Так як за замовчуванням індексація статичного масиву виконується з 0 до N-1, то початкове значення індексу (nIndex) Задається одно нулю.


    Далі за допомогою функції SalListClear очищається список (lbArray), В якому у вікні передбачена індикація значень масиву. Далі в циклі присвоюються нові значення елементів масиву, для чого використовується традиційна, як в СІ, конструкція з індексами: [<індексне вираз>]. Крім цього, запам'ятованих елемент заноситься в список (функція – SalListAdd), Змінюється індекс та перевіряється на досягнення його граничного значення (nIndex >nCount) Для завершення циклу (Break).


    Для зміни або завдання меж масиву застосовується функція SalArraySetUpperBound, Яка має три параметри. Застосування цієї функції дано на малюнку нижче.

    Рис. 27. Динамічне завдання межі масиву


    Параметри мають наступні призначення:



    1. Перший визначає ім'я масиву (у нас nArray),
    2. Другий параметр визначає номер розмірності для зміни (для динамічних масивів можна змінювати тільки першу розмірність, для статичних будь-яку, але в заданих межах). У нашому випадку це 1.
    3. Третій параметр задає верхню межу масиву. У нас ця межа визначається значенням, занесеним в цілочисельне поле (dfMasEnd). Потрібно пам'ятати, що реальний розмір масиву, що встановлюється програмно, буде більше на одиницю, так як нумерація елементів динамічного масиву починається з нуля.

    При роботі з масивами можна динамічно контролювати їх розмірність для задаються індексів. Це, як показано на прикладі фрагмента тексту, наведеного нижче, робиться за допомогою стандартних функцій: SalArrayGetLowerBound, Для отримання нижньої межі масиву (dfMasBeg) І SalArrayGetUpperBound, Для отримання верхньої межі масиву (dfMasEnd).

    Рис. 28. Вибір елемента масиву з контролем кордонів


    Далі в програмі перевіряються межі масиву. При невідповідності індексу кордонів видається повідомлення про невірний індексі.


    Нарощування масивів


    У програмі SAL передбачено динамічне нарощування масиву. Для цієї операції використовується також знайома Вам функція SalArraySetUpperBound. У прикладі (див. нижче) кількість елементів масиву нарощується (вихідне число – dfMasEnd) На величину dfAddNum, Яка задається вручну в поле введення. Зазначимо, що після додавання нових елементів у динамічний масив існуючі елементи не змінюють своє значення, тому такі масиви можна використовувати в алгоритмах з невизначеними граничними значеннями. У цьому випадку масив можна нарощувати поелементно. Зазначимо також, що в TD забезпечується автоматичне нарощування при використанні нового значення індексу поза поточних меж масиву.

    Рис. 29. Динамічна зміна верхньої межі масиву (dfMasEnd)


    Робота з динамічними масивами аналогічна роботі зі статичними масивами. Вікно для вивчення динамічних режимів в режимі роботи з динамічними масивами представлено нижче. Нагадаємо, що нумерація динамічних масивів завжди починається з 0.

    Рис. 30. Вікно вивчення масивів у режимі "Динамічний" масив


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

    Рис. 31. Читання розмірності динамічного масиву (dfMasEnd, dfMasBeg)


    Зазначимо, що тут для заповнення та обчислення суми масиву використовується механізм повідомлень. До кнопкам pbFillArr і pbSumm за допомогою функції SalSendMsg надсилається повідомлення SAM_Click, Що імітує натиснення кнопки.


    В результаті роботи над масивами Ви отримаєте додаток step3_array.app, Яке для перевірки засвоєння матеріалу можна скачати

    Рис. 32. Вікно програми для вивчення лінійок прокрутки


    Режимні кнопки забезпечують завдання перемикачів з фіксованими значеннями. Ці об'єкти, по суті, схожі на перемикачі, але мають інше візуальне представлення та більш гнучкі можливості для побудови програмного інтерфейсу. Нижче представлено вікно для вивчення лінійок прокручування та режимних кнопок у вихідному варіанті. Для вивчення лінійок прокрутки використовується горизонтальна лінійка (можна використовувати і вертикальні), у вікно вбудована індикація кордонів і поточного положення лінійки, передбачені операції зміни діапазону прокрутки ("Встановити Range") І центрування положення ("Встановити центр"). Вивчаються також операції установки позиції ("Установити позицію") Та опитування позиції ("Читати позицію"). Режими кнопки представлені трьома пов'язаними кнопками, одна з яких "Режим 2" спеціально має інший колір, що дозволяє наочно ілюструвати позицію перемикача в спеціальному полі (див. нижче в прикладах). На малюнку нижче показано основні об'єкти вікна для вивчення даних об'єктів.

    Рис. 33. Об'єкти вікна програми для вивчення лінійок прокрутки


    Кнопки і їх назви відповідають тестуємим операціях (pbClose, pbSetSbRange, pbSetSbCenter, pbSetPos, pbGetPos). Горизонтальна лінійка прокручування названа hScrollBar1 (Об'єкт типу Horizontal Scroll Bar). Поля для індикації кордонів прокручування: нижньої (dfMinSB, dfMin), Верхньої (dfMaxSB, dfMax) І поточної (dfCurentSB). Спеціальні поля для установки позиції (dfPos) І читання позиції (dfCurrPos). Три кнопки режимів: obReg1, obReg2 і obReg3. Для індикації поточного режиму використовується незмінне поле (Data Field) – dfIndicator.


    Після виконання таких дій, які ми розглянемо в даному підрозділі вікно видозмінитися. Змінений стан показано на малюнку нижче. Тут встановлена ​​позиція "33" в лінійці прокрутки (натиснута кнопка "Установити позицію",), Отримано значення після опитування позиції після натискання кнопки "Читати позицію". Також натиснута кнопка "Режим 2", Причому індикатор "Обрано" не тільки змінив своє значення, але і колір.

    Рис. 34. Зміна позиції, опитування позиції лінійки і установка "Режиму 2"


    Розглянемо тепер, як забезпечити виконання цих операцій програмно.


    Лінійки прокрутки


    Початкові установки лінійки прокрутки при запуску вікна показані на малюнку нижче. Початкові кордону прокрутки встановлюються в програмі рівними одиниця і сто (1 і 100), а поточне положення задається рівним одиниці (1). Установка діапазону прокрутки виконується функцією SalScrollSetRange, Яка викликається за п'ятьма такими параметрами:



    1. Назва об'єкта прокрутки hScrollBar1,
    2. Мінімальна і максимальна значення прокрутки – dfMin і dfMax відповідно,
    3. Крок переміщення при прокрутці на "рядок" (натискання кнопок крайніх прокрутки). У нашому випадку ми встановлюємо рівним 1.
    4. Крок переміщення при прокрутці на "сторiнку" (натискання на зони між центральною кнопкою "движком" і крайніми кнопками прокрутки). Ми встановимо його рівним 10 (dfMax/10).

    Рис. 35. Фрагмент тексту початкових налаштувань лінійки прокрутки


    У програмі, при натисканні кнопки "Встановити Range", Можна змінити діапазон прокручування. Фрагмент програми, наведений нижче, це ілюструє.

    Рис. 36. Фрагмент тексту зміни діапазону прокрутки


    Поточне значення встановлюється рівним мінімального значення (dfCurentSB), Потім задається новий діапазон, і потім за допомогою функції SalScrollSetPos встановлюється нова початкова позиція. Зазначимо, що ця позиція не обов'язково повинна бути рівна 1.


    Для установки центральної позиції виконується нижченаведений фрагмент програми. Спочатку розраховується значення нового поточного становища (середнє), а потім проводиться установка.

    Рис. 37. Фрагмент тексту установки середньої позиції лінійки


    Для отримання позиції прокручування використовується функція SalScrollGetPos, Поточне значення заноситься в переменнуюполу введення dfCurrPos (Фрагмент нижче на малюнку).

    Рис. 38. Фрагмент тексту установки заданої позиції прокрутки (dfCurrPos)


    Для установки заданої позиції виконуються дії показані нижче. Попередньо зчитуються граничні значення кордонів. Це виконується функцією SalScrollGetRange, Параметри якої аналогічні функції встановлення нових кордонів.

    Рис. 39. Фрагмент тексту програмної установки
    заданої позиції прокрутки з контролем кордонів


    Далі виконується контроль і установка нової позиції. При невірно заданої нової позиції видається діагностичне повідомлення (SalMessageBox).


    Для того щоб при маніпулюванні з лінійкою прокрутки інформація про переміщення оперативно відображалася на екрані, необхідно обробити повідомлення SAM_ScrollBar, Для даного об'єкта. Це повідомлення надсилається об'єкту hScrollBar1 при будь-яких маніпуляціях з об'єктом. Код виконуваної операції надсилається в першому параметрі повідомлення (wParam), Додаткова інформація, наприклад нова позиція, задається в другому параметрі повідомлення (lParam). Зазначу, попутно, що при обробці будь-яких доступних повідомлень, у тому числі і WM автоматично ці параметри завжди стають доступними в спеціальних, локалізованих, системних змінних (wParam, lParam). При обробці повідомлення доступні наступні події з лінійкою прокрутки (виконавча операція визначається константою типу-SB_ *):



    1. Константи SB_Bottom, SB_Top – операція переміщення в початок і кінець лінійки.
    2. Константи SB_LineDown, SB_LineUp – переміщення на "рядок" вгору і вниз.
    3. Константи SB_PageDown, SB_PageUp – переміщення на "сторінку" вгору і вниз.
    4. Константи SB_ThumbPosition, SB_ThumbTrack – переміщення движка прокручування.

      Примітка: 1. Для констант SB_ThumbPosition, SB_ThumbTrack в стандартних бібліотеках зазначено невірне значення замість 4 та 5 відповідно потрібно використовувати значення 276 (експериментально встановлено).


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

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


    Якщо переміщається "движок", то положення поточної позиції (dfCurentSB) Змінюється на нове згідно з параметром lParam. За будь-яких інших операціях з лінійкою прокрутки поле dfCurentSB заповнюється опитуванням лінійки з використанням знайомої нам функції SalScrollGetPos.


    Режими кнопки


    Робота з кнопками режимів досить проста. Після натискання на кнопку вона змінює свою стану ("втиснуті" стан), а пов'язані з нею інші кнопки режиму свій стан відновлюють. Для такого ефекту дані об'єкти повинні бути розташовані поряд у тексті OUTLINE. У нашому прикладі, три кнопки (obReg1 – "Режим 1", obReg2 – "Режим 2", obReg3 – "Режим 3"), призначені для вибору одного з трьох режимів (це дуже схоже на застосування радіокнопок). При натисканні на кнопку "Режим 2" окрім цього змінюється і колір тексту в поле індикатора – dfIndicator. Якщо режим включений то змінна, що відповідає його імені, приймає булевський тип TRUE, В іншому випадку – FALSE. Спочатку в поле індикатора передається текст на кнопці обраного режиму за допомогою функції SalGetWindowText, А потім встановлюється колір тексту (за замовчуванням або червоний для другого режиму).

    Рис. 40. Фрагмент тексту маніпулювання режимами з індикацією кольором


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


    В результаті вивчення лінійок прокручування та режимів Ви отримаєте додаток step3_scroll.app, Яке для перевірки успішності засвоєння матеріалу можна скачати Частина 4

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


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

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

    Ваш отзыв

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

    *

    *