Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые обзорные » Розробка програми для автоматизації роботи кардіоцентру

Реферат Розробка програми для автоматизації роботи кардіоцентру





Обидва описаних вище способу виклику немодального форм не вимагають створення спеціальної процедури для їх руйнування. Ресурси будуть коректно звільнені при закритті програми, так як програма є власником форм. Код додатку для тестування цих методів виглядає наступним чином:


procedure ShowNonModalForm (AppHandle: THandle); stdcall; 'NMStat.dll' name 'ShowNonModalForm'; ShowSingleNonModalForm (AppHandle: THandle); stdcall; 'NMStat.dll' name 'ShowSingleNonModalForm';

TForm1.Button1Click (Sender: TObject); (Application.Handle);;

TForm1.Button2Click (Sender: TObject); (Application.Handle);;


Іноді виникає необхідність показу немодального форм з динамічно завантажуваних DLL, наприклад при рідкісному використанні в додатку немодального форм для економії ресурсів. Якщо реалізувати код так само, як і при показі модальних діалогів, то форма буде створена і, може бути, навіть показана на екрані. Але після цього відбудеться вивантаження DLL, а потім негайно послідують винятку, оскільки в пам'яті комп'ютера буде відсутній код для роботи з елементами управління форми. Традиційне рішення цієї проблеми виглядає наступним чином: завантажується динамічна бібліотека, в якості одного з параметрів передається адреса методу головного додатки, який буде викликаний при закритті немодального форми - звичайно в обробнику події OnDestroy. Цей метод повинен інформувати головне додаток про необхідність вивантаження DLL з пам'яті комп'ютера, але DLL повинна вивантажуватися після завершення його роботи (і, отже, після завершення роботи деструктора форми) - інакше можливе виключення через відсутність коду в пам'яті комп'ютера. Вивантаження DLL після завершення роботи програми [U7] досягається з використанням асинхронної розв'язки - посилки повідомлення методом PostMessage якомусь вікна програми, зазвичай головній формі. Наведемо код реалізації даної технології в DLL:

= procedure; stdcall;


TForm1 = class (TForm): TMemo; FormDestroy (Sender: TObject); FormClose (Sender: TObject; var Action: TCloseAction);

{Private declarations}

{Public declarations}: TNotifyClose;;

: TForm1;



{$ R *. DFM}

TForm1.FormDestroy (Sender: TObject); Assigned (FNC) then FNC;;

DynNonmodal (AppHandle: THandle; NC: pointer); stdcall; export;. Handle: = AppHandle; Assigned (Form1) then Form1.Show else begin: = TForm1.Create (Application);. FNC : = TNotifyClose (NC);

Form1.Show;;;

Додаток, що використовує цю DLL, має наступний код (WM_DLLUNLOAD визначена як константа в секції interface модуля):

type = procedure (AppHandle: THandle; NC: pointer); ...


Назад | сторінка 10 з 12 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Мій комп'ютер: призначення та порядок використання. Головне меню ОС Wi ...
  • Реферат на тему: Розробка програми і методики сертифікаційних випробувань промислового комп& ...
  • Реферат на тему: Розробка комп'ютерної програми для роботи з фотографіями людей
  • Реферат на тему: Урок-Дослідження з елементами групових форм роботи
  • Реферат на тему: Розробка програми для автоматизації роботи магазину спортивного одягу