THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму

Стаття написана за результатами розборів програм, написаних молодими розробниками нашої групи.

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

Багато користувачів, особливо ті, хто раніше працював в ДОС, мають звичку переключатися між полями вводити не мишкою, а за допомогою клавіатури клавішею Tab. До того ж, це набагато швидше, ніж виділяти кожне поле мишею. Тому порядок перемикання компонентів повинен бути виставлений правильно. Це стосується як компонентів всередині всіх компонентів-контейнерів (панелей, GroupBox-ів і їм подібних), так і самих компонентів-контейнерів, якщо їх на формі кілька.

Порядок перемикання компонентів всередині контейнера задається властивістю TabOrder. Першим стає активним компонент, у якого TabOrder дорівнює 0, другим з 1 і т.д., поки не будуть перебрані всі компоненти. Крім цього, у компонента є властивість TabStop, яке показує, чи буде компонент отримувати фокус при перемиканні клавішею Tab. Якщо потрібно заборонити перемикання на будь-який компонент, поставте в нього TabStop \u003d false. В цьому випадку переключитися на даний компонент можна буде тільки за допомогою миші.

Бувають випадки, коли користувачі, які звикли перемикатися певної клавішею в одній програмі, за звичкою продовжують користуватися їй і в інших. Часто це відбувається з користувачами 1С, де для переходу по полях введення може використовуватися клавіша Enter. Що ж, дамо їм таку можливість в наших програмах, якщо вони про це просять. Встановлюємо у форми властивість KeyPreview в true і пишемо обробник події OnKeyPress:

Procedure TForm1.FormKeyPress (Sender: TObject; var Key: Char);
begin
if ord (key) \u003d vk_Return then
Form1.SelectNext (PriemForm.ActiveControl, true, true);
end;

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

Кнопки за замовчуванням

Всі ті ж користувачі досить швидко звикають, що в діалогових вікнах додатків, як правило, клавішею Enter можна підтвердити свій вибір, а клавішею Esc - скасувати. Давайте не будемо їх розчаровувати в наших програмах, тим більше що зробити це дуже просто. Для кнопки, що реагує на Enter, встановлюємо властивість Default в true. Для кнопки, що реагує на Esc, встановлюємо властивість Cancel в true. І все.

Так чи ні

Всі діалогові вікна, що запитують дії користувача, повинні мати, принаймні, дві кнопки: підтвердження дії і відмови від дії (Так / Ні, Зберегти / Скасувати і т.п.). Відмова від дії може здійснюватися закриттям вікна кнопкою [X] в заголовку вікна. Неприпустимо, якщо є тільки одна кнопка для підтвердження дії, а для відмови передбачається закривати вікно кнопкою [X] в заголовку, або можливість відмови взагалі відсутня. Це плутає користувача, викликаючи логічне запитання: а як відмовитися?

Також не забуваємо про те, що було сказано вище в пункті "Кнопки за замовчуванням".

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

По центру, а не там, де вони були створені в режимі проектування. По-перше, це наочніше, а по-друге, автоматично усуває проблему різного дозволу екрану у різних користувачів.

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

Розміри вікон не повинні перевищувати розмірів екрану

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

Коректна зміна розмірів віконних елементів

Віконні елементи повинні коректно змінювати свої розміри або переміщатися при зміні розмірів вікна, при максимізації вікна і при відновленні вікна після максимізації.

Все завжди видно

Зменшення розмірів вікна не повинно призводити до зникнення віконних елементів і бажано не повинно призводити до появи смуг прокрутки (scroller-ів) самого вікна. Можна обмежувати мінімальні розміри вікна таким чином, щоб всі елементи були видні і доступні. Якщо немає можливості розмістити компоненти таким чином, щоб всі були видні у вікні, можна використовувати закладки (типу PageControl) для розбиття компонентів на групи. Відмовки з приводу дозволу екрану теж не пропускаємо.

Хинти всюди, хинти завжди

Для кнопок, особливо на панелях інструментів (типу ToolBar) повинні бути задані підказки (hint), щоб завжди було зрозуміло, навіщо потрібна та чи інша кнопка.

Кольорова гама

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

висновок

Є дуже хороший метод, який дозволяє знайти недоліки програми взагалі і інтерфейсу зокрема. Він простий: уявіть себе на місці користувача і протягом півгодини спробуйте працювати так, як працює він. Ще краще, якщо ваш користувач в межах досяжності (наприклад, працює в тій же організації). В такому випадку сядьте поруч з ним, а краще замість нього, і спробуйте зробити його роботу. Вносити дані, змінювати їх, виводити звіти і т.д. Якщо ви не знаєте, як зробити правильно, запитайте у свого користувача. Зробіть не одну-дві однотипні операції, як в отладочном режимі, а 20-30, а то і більше різних операцій, в різному порядку. Забудьте що-небудь ввести або введіть неправильно і подивіться, як програма на це відреагує. Ви досить швидко побачите слабкі місця вашої програми.

Автор статті автоматизував роботу приймальної комісії у ВНЗ, і в перший рік впровадження програми по 3-4 години в день проводив у приймальні комісії, реєструючи абітурієнтів, заповнюючи їх персональні дані і видаючи їм звіти про здачу іспитів. А в час, що залишився робочий час виправляв помилки і недоліки. Повірте, на наступний рік проблем практично не залишилося. Аналогічно було і при впровадженні кадрового модуля.

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

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

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

  1. Програма повинна допомагати виконати завдання, а не ставати цим завданням.
  2. При роботі з програмою користувач не повинен відчувати себе дурнем.
  3. Програма повинна працювати так, щоб користувач не вважав комп'ютер дурнем.
перший принцип - це так звана "прозорість" інтерфейсу. Інтерфейс користувача повинен бути інтуїтивно зрозумілим, простим для освоєння, і не створювати для користувача проблем, які він змушений буде долати в процесі роботи. Використовуйте стандартні, без зайвого прикрашення компоненти, застосовуйте звичні, використовувані аналогічними програмами прийоми управління, і Ви досягнете критеріїв виконання першого принципу.

другий принцип полягає в нехтуванні інтелектуальними здібностями користувачів. На власному досвіді мені відомо, що часто користувачі не тільки не вміють працювати за комп'ютером, але і просто бояться зробити що-небудь самостійно. Тому інтерфейс користувача повинен бути максимально дружнім.
Тим більше, що побоювання користувачів часто виправдані, адже вартість програми, та й самого комп'ютера не йде ні в яке порівняння з вартістю, наприклад, створеної багаторічними зусиллями бази даних. Саме тому програміст при створенні інтерфейсу користувача повинен завжди вбудовувати в програму "захист від дурня" - від неправильних дій і введення користувачем невірних даних. Але деякі програмісти надто захоплюються таким захистом, роблять її занадто настирливої, і в результаті робота програми нагадує знамените "крок вліво, крок вправо вважається втечею"! І те, що програміст створює як вирішення проблеми, що починає створювати проблеми.
для дотримання другого принципу не потрібно дозволяти програмі "виправляти" дії користувача і вказувати, що як саме йому діяти, заганяючи у вузькі рамки. Також не слід надмірно захоплюватися виведенням інформаційних повідомлень-підказок, особливо діалогових, це відволікає користувача від роботи. А краще взагалі передбачити можливість відключення підказок.

третій принцип полягає в тому, щоб створювати програму з максимально можливими "розумовими" здібностями. Незважаючи на швидкий розвиток комп'ютерної техніки, Навіть широко поширені програми лише вельми умовно можна назвати мають штучний інтелект. Вони заважають роботі користувача, виводячи на екран діалогові вікна з дурними питаннями, що викликають подив навіть у найпростіших ситуаціях. В результаті користувачі в серцях вигукують: "Ну і тупа ж ця машина"!
У мене особисто викликають роздратування постійні питання практично всіх текстових редакторів про те, чи не зберегти чи змінений текст, хоча первісний і нинішній текст не відрізняються ні символом. Так, я щось набирав, але потім повернув все назад, невже не можна збагнути! Доводиться перевіряти, чи не зіпсував я все-таки що-небудь.

Намагайтеся дотримуватися наступних правил:

Стандартні елементи інтерфейсу
Використовуйте стандартні для даного елемента інтерфейсу компоненти. Зустрівши Вашу програму, користувач не буде втрачати час на знайомство, а відразу приступить до роботи - це одна з ознак професійно зробленої програми.
Невелика палітра інструментів
Намагайтеся використовувати не дуже велика кількість різноманітних компонентів. І природно, використавши десь в одному місці один зі стандартних компонентів, в аналогічному випадку також застосовуйте саме його.
Однакову відстань між елементами управління
Розташовуйте елементи інтерфейсу на однаковій відстані між собою. Розкидані як попало компоненти створюють відчуття непрофесійно зробленого продукту. І навпаки, ретельно вивірене розміщення на Формі кнопок, перемикачів, прапорців та інших компонентів, що складають інтерфейс - ознака якісної роботи.
TabOrder. "Правильний" порядок
TabOrder - це порядок переміщення екранного курсора за елементами управління при натисканні клавіші Tab. В правильно написаної програмі курсор переміщається, йдучи за логікою роботи користувача з програмою. При створенні ж програми програміст часто змінює компоненти, одні видаляє, інші додає в міру необхідності. В результаті в готовій програмі курсор хаотично скаче по Формі. Завершивши програму, не забувайте налаштувати TabOrder.
вибір шрифтів
Шрифти просто залиште в спокої. Задані за замовчуванням самої Delphi шрифти підійдуть для будь-якої системи, на якій може працювати Ваша програма. Напівжирний шрифт використовуйте тільки для виділення важливих елементів. застосування ж курсиву і особливо підкреслення, Яке користувач може прийняти за гіперпосилання - поганий тон.
вибір квітів
Що стосується кольорів елементів інтерфейсу, то також, як і у випадку зі шрифтами, краще залиште їх стандартними, за замовчуванням. Delphi використовує системну палітру Windows, і користувач, змінивши її, легко налаштує кольору під себе.
альтернативне управління
Професійно зроблена програма повинна мати можливість керуватися не тільки мишкою, але і з клавіатури. Не повинно бути функцій, доступних виконання тільки мишею (малювання в графічних редакторах не зараховується!). Для найбільш використовуваних функцій слід передбачити "гарячі клавіші" для швидкого доступу до них.
цеглинки інтерфейсу
Що стосується конкретних елементів інтефейс користувача, то якість взаємодії користувача з програмою залежить від: А зараз хочу показати, які інструменти пропонує Delphi для управління компонентами на Формі, їх взаємним розташуванням і поведінкою курсору при натисканні клавіші Tab.

Для того, щоб розташувати відносно один одного компоненти в правильному порядку, спочатку необхідно їх виділити. Можна просто обвести мишкою область на Формі, в якій містяться обрані компоненти. Або, утримуючи " Shift", Вказати тієї ж мишкою кожен підлягає виділенню компонент. Повторне клацання мишкою по виділеному компоненту (при натиснутому" Shift") Знімає з нього виділення.

Виділеними компонентами можна керувати як єдиним цілим - пересувати по Формі, привласнити значення однаковим властивостям, скопіювати (для установки, наприклад, на іншу Форму), навіть видалити.

тепер клацніть правою кнопкою по одному з компонентів, і з "спливаючого" меню виберіть Position -\u003e Align ... З'явиться діалогове віконце, що дозволяє налаштувати положення компонентів в групі по горизонталі і вертикалі. Наприклад, нам потрібно вирівняти наші чотири кнопки по лівому краю і зробити так, щоб між ними була однакова відстань по вертикалі. Для цього виділимо радиокнопки Horizontal: Left sides і Vertikal: Space equally.

вибравши пункт Center, Ми розташуємо компоненти так, що їх центри будуть розташовуватися на одній лінії по горизонталі або вертикалі, а пункт Center in window переміщує компоненти в центр вікна, також по горизонталі або вертикалі.

В цьому ж меню рядок Tab Order ... викликає поява діалогового вікна, керуючого переміщенням курсора за елементами інтерфейсу при натисканні клавіші Tab. У момент появи Форми на екрані курсор буде знаходитися, природно, на компоненті, розташованому на першому рядку діалогового вікна. І далі буде переміщатися вниз по списку. На діалоговому вікні дві сині стрілочки "вгору" і "вниз" керують положенням виділеного компонента. Виділяйте потрібний компонент, стрілками переміщайте на потрібну строчку в списку, і так далі.

При виборі пункту меню Control -\u003e з'являється підменю, що складається з двех пунктів:

  • Bring to Front
  • Send to Back
Це методи компонента, доступні також програмно. Button1.SendToBack переміщує кнопку на "задній план", а Button1.BringToFront - на "передній план". Тобто, якщо один компонент розташовується над іншим, ці методи змінюють їх місцями. Випадки, в яких це може застосовуватися, досить очевидні.

тільки за результат

жорстке дотримання термінів

прозорість

виконання проекту

техпідтримки в подарунок

Програмування, доопрацювання консультації по 1С

Як ми працюємо

1. Обговорюємо проблему по телефону. При наявності віддаленого доступу - показуєте на екрані вашого комп'ютера.

2. Ми оцінюємо роботу в рублях, якщо проект великий, якщо немає - приблизна кількість годин.

3. Ми виконуємо роботу.

4. Ви приймаєте роботу у вашій програмі, якщо є недоліки ми їх виправляємо.

5. Ми виставляємо рахунок, ви оплачуєте.

Вартість робіт

1. Всі роботи поділяються на 3 категорії: консультація, оновлення типової конфігурації, Розробка або програмування нового звіту, обробки, кнопки і т.п.

3. На роботи більше 10 годин попередньо складається технічне завдання з описом і вартістю робіт. Роботи починаються після узгодження ТЗ з вами.

Технічна підтримка

1. Якщо ви виявляєте якісь помилки, в раніше прийнятих роботах, протягом 3х місяців, ми виправляємо їх безкоштовно.

2. постійним клієнтам будь-які недоліки, допущені в наших роботах, виправляємо безкоштовно протягом року.

Програми для управління вашим бізнесом.

Купити 1С: Підприємство

Ми є офіційним дилером фірми 1С, ви можете придбати у нас різні програмні продукти та ліцензії. Крім покупки "коробки" ми допоможемо вам налаштувати програму, проконсультуємо і зробимо базові настройки.

  • Бухгалтерський облік
  • Автоматизація магазину
  • Оптові продажі
  • Допомога в установці і початковому налаштуванні включена в пакет!
  • Тонка настройка конфігурацій під потреби замовника, розробка нових модулів при відсутності необхідних функцій в стандартній конфігурації.
1с Бухгалтерія 1С: Управління торгівлею 1С: Роздріб 1С: Зарплата і Управління Персоналом
Від 3300 руб. Від 6700 руб. Від 3300 руб. Від 7400 руб.

Надання сервера.

Миттєва настройка сервер + 1С.

Ні сервера? Не біда, підберемо і швидко налаштуємо сервер в "хмарі". за невелику плату ви отримуєте дуже надійне рішення.

  • Доступність 24 \\ 7
  • Немає необхідності тримати власного системного адміністратора (Економія покриє витрати на ваш сервер).
  • Швидка настройка і установка 1С на сервер, через 3 дня у вас вже буде повністю робоча система.
  • У будь-який момент можна переїхати на локальний сервер, Якщо рішення не влаштує.

SMS з вашої 1С

Хочете щоб клієнти під час дізнавалися про акції, знижки? Клієнти не повертаються? Налаштуйте відправку SMS прямо з 1С!

Наша компанія зможе в короткі терміни налаштувати відправку SMS Вашим клієнтам безпосередньо з 1С. Приклади подій які можна автоматизувати:

  • Подяка за покупку і нарахування бонусів відразу після чергової покупки.
  • Нарахування бонусів на карту в подарунок на день народження \\ до іншого знаменної або святкового дня.
  • Повідомлення про надходження товару на склад.
  • Закінчення строку подарункових бонусів.
  • Повідомлення про надходження передоплати і резервування товару.
  • Адреса з уточненнями проїзду до магазину \\ офісу, номери телефонів.
  • І т.п.

Налаштування в 1С можна зробити силами наших фахівців або своїх співробітників. Ознайомитися з тарифами можна на сторінці SMS-тарифів.

  • Гарантія доставки SMS, гроші знімаються тільки за доставлені SMS.
  • Окрема тарифікація кожного SMS.
  • Поповнення балансу різними способами.
  • Перегляд історії всіх відправлених SMS в будь-який момент.
  • Ім'я відправника замість цифрового номера в телефоні одержувача повідомлення.

Однією і найбільш сильних сторін середовища програмування Delphi є її відкрита архітектура, завдяки якій Delphi допускає свого роду метапрограмування, дозволяючи "програмувати середу програмування". Такий підхід переводить Delphi на якісно новий рівень систем розробки додатків і дозволяє вбудовувати в цей продукт додаткові інструментальні засоби, що підтримують практично всі етапи створення прикладних систем. Настільки широкий спектр можливостей відкривається завдяки реалізованої в Delphi концепції так званих відкритих інтерфейсів, є сполучною ланкою між IDE (Integrated Development Environment) і зовнішніми інструментами.

Дана стаття присвячена відкритим інтерфейсів Delphi і являє собою огляд представляються ними можливостей. У Delphi визначено шість відкритих інтерфейсів: Tool Interface, Design Interface, Expert Interface, File Interface, Edit Interface і Version Control Interface. Навряд чи в рамках даної статті нам вдалося б детально висвітлити і проілюструвати можливості кожного з них. Більш ґрунтовно розібратися в розглянутих питаннях вам допоможуть вихідні тексти Delphi, благо розробники забезпечили їх розгорнутими коментарями. Оголошення класів, що представляють відкриті інтерфейси, містяться у відповідних модулях в каталозі ... \\ Delphi \\ Source \\ ToolsAPI. Design Interface (модуль DsgnIntf.pas) надає кошти для створення редакторів властивостей і редакторів компонентів.

Редактори властивостей і компонентів - це тема, гідна окремої розмови, тому нагадаємо лише, що редактор властивості контролює поведінка Інспектори Об'єктів при спробі змінити значення відповідного властивості, а редактор компонента активізується при подвійному натисканні лівої кнопки миші на зображенні вміщеного на форму компонента. Version Control Interface (модуль VCSIntf.pas) призначений для створення систем контролю версій. Починаючи з версії 2.0, Delphi підтримує інтегровану систему контролю версій Intersolv PVCS, тому в більшості випадків в розробці власної системи немає необхідності. З цієї причини розгляд Version Control Interface ми також опустимо. File Interface (модуль FileIntf.pas) дозволяє перевизначити робочу файлову систему IDE, що дає можливість вибору власного способу зберігання файлів (в Memo-полях на сервері БД, наприклад). Edit Interface (модуль EditIntf.pas) надає доступ до буферу вихідних текстів, що дозволяє проводити аналіз коду і виконувати його генерацію, визначати і змінювати позицію курсора у вікні редактора коду, а також управляти синтаксичним виділенням вихідного тексту.

Спеціальні класи надають інтерфейси до вміщеним на форму компонентів (визначення типу компонента, отримання посилань на батьківський і дочірні компоненти, доступ до властивостей, передача фокусу, видалення і т.д.), до самої форми і до ресурсному файлу проекту. Також Edit Interface дозволяє ідентифікувати так звані модульні нотіфікатор, що визначають реакцію на такі події, як зміна вихідного тексту модуля, модифікація форми, перейменування компонента, збереження, перейменування або видалення модуля, зміна ресурсного файла проекту і т. Д. Tool Interface (модуль ToolIntf. pas) надає розробникам кошти для отримання загальної інформації про стан IDE і виконання таких дій, як відкриття, збереження і закриття проектів і окремих файлів, Створення модуля, отримання інформації про поточний проект (число модулів і форм, їх імена і т. Д.), Реєстрація файлової системи, Організація інтерфейсів до окремих модулів і т.д. На додаток до модульних нотіфікатор Tool Interface визначає add-in нотіфікатор, що повідомляють про такі події, як відкриття / закриття файлів і проектів, завантаження і збереження desktop-файлу проекту, додавання / виключення модулів проекту, інсталяція / деінсталяція пакетів, компіляція проекту, причому в відміну від модульних нотіфікатор add-in нотіфікатор дозволяють скасувати виконання деяких подій.

Крім того, Tool Interface надає кошти доступу до головного меню IDE Delphi, дозволяючи вбудовувати в нього додаткові пункти. Expert Interface (модуль ExptIntf.pas) являє собою основу для створення експертів - програмних модулів, вбудованих в IDE c метою розширення її функціональності. Як приклад експерта можна навести входить в Delphi Database Form Wizard, виконує генерацію форми для перегляду та зміни вмісту таблиці БД. Визначивши клас експерта, необхідно подбати про те, щоб Delphi "дізналася" про наш експерта. Для цього його потрібно зареєструвати у вигляді виклику процедури RegisterLibraryExpert, передавши їй як параметр екземпляр класу експерта. В якості ілюстрації створимо простий експерт в стилі esStandard, який при виборі відповідного йому пункту меню Delphi виводить повідомлення про те, що він запущений. Як видно з вищенаведеної таблиці, стиль esStandard зобов'язує перекрити шість методів:

Для того щоб експерт був "приведено в дію", необхідно вибрати пункт меню Component / Install Component ..., вибрати в діалозі Browse модуль, що містить експерт (в нашому випадку exmpl_01.pas), натиснути ОК, і після компіляції пакета dclusr30.dpk в головному меню Delphi в розділі Help має з'явитися пункт Simple Expert 1, при виборі якого з'являється інформаційне повідомлення "Standard Expert started!". Чому Delphi поміщає пункт меню експерта в розділ Help, залишається загадкою. Якщо вам не подобається те, що пункт меню з'являється там, де завгодно Delphi, а не там, де хочете ви, можливий наступний варіант: створити експерт в стилі add-in, що виключає автоматичне створення пункту меню, а пункт меню додати "вручну", використовуючи кошти Tool Interface. Це дозволить ввести інформацію про розташування нового пункту в головному меню довільним чином.

Для додавання пункту меню використовується клас TIToolServices - основа Tool Interface - і класи TIMainMenuIntf, TIMenuItemIntf, що реалізують інтерфейси до головного меню IDE і його пунктам. Примірник ToolServices класу TIToolServices створюється самої IDE при її ініціалізації. Зверніть увагу на те, що відповідальність за звільнення інтерфейсів до головного меню Delphi і його пунктам цілком лягає на розробника. Попутно трохи ускладнити функціональне навантаження експерта: при активізації свого пункту меню він буде видавати довідку про ім'я проекту, відкритого в наразі в середовищі: У цьому прикладі центральне місце займає функція AddIDEMenuItem, що здійснює додавання пункту меню в головне меню IDE Delphi. Як параметри їй передаються текст нового пункту меню, його ідентифікатор, ідентифікатор пункту, перед яким вставляється новий пункт, символьне уявлення клавіші, яка разом з клавішею Ctrl може використовуватися для швидкого доступу до нового пункту, і обробник події, відповідного вибору нового пункту. Ми додали новий пункт меню в розділ View перед пунктом Watches.

Тепер познайомимося з нотіфікатор. Визначимо add-in нотіфікатор, що відслідковує моменти закриття / відкриття проектів і коригувальний відповідним чином поле, що зберігає ім'я активного проекту (реалізацію методів, що не зазнали змін в порівнянні з тпредидущім прикладом, для стислості опустимо): Для реалізації нотіфікатор ми визначили клас TAddInNotifier, що є нащадком TIAddInNotifier, і перекрили метод FileNotification. IDE викликатиме цей метод кожен раз, коли відбувається подія, на яке здатний зреагувати add-in нотіфікатор (кожна така подія позначається відповідної константою типу TFileNotification). Поле Expert в класі TAddInNotifier служить для зворотнього зв'язку з експертом (метод TAddInNotifier.FileNotification). У деструкції експерта реєстрація нотіфікатор знімається, і нотіфікатор знищується. А тепер проілюструємо використання модульних нотіфікатор. Створимо add-in експерт, видає повідомлення про кожному акті збереження проектного файлу (реалізацію вже знайомих нам методів для стислості не наводимо): У даному прикладі add-in експерт відстежує події, відповідні відкриття / закриття проектів.

При кожному відкритті проекту реєструється модульний нотіфікатор, відповідний файлу проекту. У плані реалізації модульні нотіфікатор схожі з add-in нотіфікатор: ми визначаємо клас TModuleNotifier, що є нащадком TIModuleNotifier і перекриваємо його методи Notify і ComponentRenamed. IDE викликає метод Notify при виникненні певних подій, що мають відношення до даного модулю; всередині цього методу і визначається реакція на ту чи іншу подію. Метод ComponentRenamed викликається при зміні імені компонента, лежачого на формі модуля. Зверніть увагу на те, що ми не використовуємо цей метод, але зобов'язані його перекрити, інакше при зміні імені компонента буде відбуватися виклик абстрактного методу базового класу, що призводить до непередбачуваних наслідків.

Реєстрація модульного нотіфікатор є кілька більш складним процесом в порівнянні з реєстрацією add-in нотіфікатор: спочатку ми отримуємо інтерфейс модуля (TIModuleInterface), а потім за допомогою інтерфейсу модуля реєструємо нотіфікатор. При закритті проекту реєстрація модульного нотіфікатор знімається (знову з використанням TIModuleInterface), і нотіфікатор знищується. На закінчення покажемо, як можна визначати позицію курсору у вікні редактора коду. Створимо експерт, який при виборі відповідного пункту меню видавав б повідомлення, що містить ім'я активного файлу і позицію курсору в ньому (приведена реалізація тільки істотних для даного прикладу методів): Для визначення позиції курсору ми повинні отримати наступну послідовність інтерфейсів: модульний інтерфейс (TIModuleInterface); інтерфейс редактора коду (TIEditorInterface); інтерфейс уявлення модуля у вікні редактора (TIEditView).

Якщо при виборі пункту меню експерта активним є файл з вихідним текстом (* .pas), то видається повідомлення, що містить ім'я активного файлу і поточну позицію курсора в ньому. Якщо активним є не pas-файл, то повідомлення не видається. Для отримання імені активного файла використовується метод GetCurrentFile класу TIToolServices. На цьому завершимо розгляд способів використання відкритих інтерфейсів. CD-ROM містить вихідні тексти всіх наведених прикладів. На CD-ROM також міститься більш складний і розгорнутий приклад, що містить add-in експерт, що дозволяє користувачеві робити закладки в початковому тексті Delphi-модулів. Короткий посібник по установці і використанню Експерта Закладок міститься у файлі bkmrks97.htm. Отже, в даній статті в загальних рисах розглянуті відкриті інтерфейси і наведені приклади їх використання. Ще раз повторимо: завдяки наявності вихідних текстів відкритих інтерфейсів ви легко зможете розібратися в цікавлять вас деталях. Сподіваємося, що різноманіття можливостей, що надаються відкритими інтерфейсами, породить у вас не одну сміливу і корисну ідею.

THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму