У розглянутому прикладі ми додали в DLL функції. Тепер подивимося, як можна ввести в DLL якісь форми. Це має сенс, якщо в серії ваших додатків використовуються деякі стандартизовані вами форми діалогів, наприклад, форма введення пароля. Недоцільно вводити таку форму в кожний додаток. Більш ощадливо помістити її в DLL і викликати із усіх додатків, у яких вона буде потрібно. До того ж, якщо із часом ви вирішили змінити цю форму, вам достатньо буде змінити тільки DLL, а всі додатки можуть залишатися незмінними.
Давайте введемо в нашу DLL просту форму діалогу, що запитує ім'я користувача. Виконайте команду File - New - Form, яка включить у вашу DLL нову форму. Перенесіть на форму компонент Label (Standard), вікно редагування Edit (Standard) і кнопку Button (Standard). Збережемо форму у файл під ім'ям frmlogin.
Збережіть модуль форми. У модулі форми для форми напишемо команду:
close;
У коді DLL потрібно підключити модуль створеної форми (після додавання форми в проект DLL її модуль буде підключений автоматично).
Також потрібно створити строкову функцію, яка запам'ятовує введений пароль.
function parol:string; stdcall;
//описуємо змінну для роботи з формою
var form:tform1;
begin
//створюємо екземпляр форми в пам'яті
form:=tform1.create(nil);
//відображаємо форму як модальну
form.showmodal;
//функції привласнюємо введений пароль
parol:=form.edit1.text;
//видаляємо форму з пам'яті
form.free;
end;
Після створення функції не забудьте додати ім'я цієї функції в розділ exports.
Якщо всі дії виконані, то за допомогою команди Project-Build... перекомпілюйте текст бібліотеки у файл DLL.
Подібним чином можна створити декілька форм і розмістити їх у бібліотеках DLL. При цьому форми можуть мати свій власний код, необхідний для їхньої роботи.