конуються досить довго операції (типу звернень до баз даних) від основної програми. Асинхронні скрипти не можуть повертати результати. Тому в якості скриптів Quick Functions, використовуваних у виразах (Expression) для визначення динамічних властивостей об'єктів, слід застосовувати тільки синхронні скрипти.
Створення скриптів Quick Functions здійснюється в діалоговому вікні редактора Quick Functions. Виклик цього діалогу на екран у вікні WindowMaker виробляється в командою Special/Scripts з наступним натисканням на рядку Quick Functions.
Список Name містить імена всіх визначених до даного моменту скриптів Quick Functions. Клацання по імені скрипта виводить його текст в робоче поле діалогу.
Команда Scripts/New призначена для створення нового скрипта і викликає на екран діалог для введення його імені. Після клацання по Ok нове ім'я буде включено в список імен Name.
Наступний етап - визначення аргументів нового скрипта в таблиці Arguments діалогу Quick Function. У ліву колонку таблиці вводять ім'я аргументу (до 31 символу), в праву - його тип (Integer, Real, Discrete, Message). В одному скрипті допускається до 16 аргументів.
Після визначення типів аргументів можна приступати до написання тексту скрипта Quick Function в робочому полі (під таблицею Arguments).
Розробка графопостроителя в системі InTouch
Даний розділ присвячений розробці чотирьохканального графопостроителя візуалізуються дані, вступники DDE каналу з DDE сервера. У програмі передбачена можливість масштабування по кожному з каналів.
Малюнок 19. - Вікно DDE-сервера на стадії проектування в Delphi. Примітка: [складено автором]
Розробка DDE-сервера
Додаток, яка отримує дані з іншої програми по DDE і/або керуюче іншим додатком за допомогою команд через DDE є DDE-клієнтом. У цьому випадку другий додаток є DDE-сервером. Розглянемо проект DDE-сервера, виконаного на мові програмування Borland Delphi 6.
На малюнку представлено вікно DDE-сервера під час дизайну в середовищі Delphi
Для побудові DDE-сервера в Delphi є два об'єкти, розташовані на сторінці System Палітри Компонент - TDdeServerConv і TDdeServerItem. Зазвичай в проекті використовується один об'єкт TDdeServerConv і один або більше TDdeServerItem. Для отримання доступу до сервісу DDE-сервера, клієнту потрібно знати кілька параметрів: ім'я сервісу (Service Name) - це назва програми (зазвичай - ім'я виконуваного файлу без розширення EXE, можливо з повним шляхом); Topic Name - в Delphi це ім'я компоненти TDdeServerConv; Item Name - в Delphi це ім'я потрібної компоненти TDdeServerItem. Призначення об'єкта TDdeServerConv - загальне управління DDE і обробка запитів від клієнтів на виконання макросу.
Об'єкт TDdeServerItem зв'язується з TDdeServerConv і визначає, що, власне, буде пересилатися по DDE. Для цього у нього є властивості Text і Lines. (Text має те ж значення, що і Lines [0].) При зміні значення цих властивостей автоматично відбувається пересилання оновлених даних у всі програми-клієнти, які встановили зв'язок з сервером.
При запуску програми відбувається виконання процедури TDDEServe.FormActivate:
procedure TDDEServe.FormActivate (Sender: TObject); nidata: TNotifyIconData; .ShowMainForm:=False; (Application.Handle, SW_HIDE); (Application.MainForm.Handle, SW_HIDE); nidata do:= SizeOf (TNotifyIconData);:=Self.Handle;:=1;:=NIF_ICON or NIF_MESSAGE or NIF_TIP;:=WM_MYICONNOTIFY;:=Application.Icon.Handle; (szTip, Application.Title) ;; _ NotifyIcon (NIM_ADD,nidata );:=10;
end;
У цій процедурі додаток згортається в системний Tray, а форма стає невидимою. Закінчення роботи DDE-сервера викликається шляхом натискання лівої або правою кнопкою миші на іконці програми в області системного Tray. Обробка цієї події виконується у процедурі TDDEServe.WMICON:
procedure TDDEServe.WMICON (var msg: TMessage); msg.LParam of_RBUTTONDOWN, WM_LBUTTONDOWN: close;
end ;;
При цьому, при закритті вікна програми викликається процедура TDDEServe.FormDestroy, в якій відбувається видалення іконки з системного Tray:
procedure TDDEServe.FormDestroy (Sender: TObject); nidata: TNotifyIconData; nidata do:=SizeOf (TNotifyIconData);:=Self.Handle;:=1 ;; _ NotifyIcon (NIM_DELETE,nidata); ;
Робота програми в цілому будується за допомогою виклику процедури TDDEServe.Timer1Timer по перериванню таймера.
implementation
{$ R * .DFM} ComObj, activex,...