Розробка SDI і MDI додатків (исходники, документація), Документація, Програмування, статті

В delphi реалізований шаблон mdi application, що дозволяє швидко побудувати початковий код програми mdi. Розглянемо основні функції цього інструментального засобу.

Щоб використовувати шаблон mdi application, застосуйте команду file / new меню delphi, з розкрився діалогового вікна виберіть сторінку projects, а потім mdi application. Визначте каталог для проекту, і delphi справить копіювання файлів, які вам необхідні для простого додатка mdi з інструментальною лінійкою, рядком стану і меню. При формуванні цих складових частин шаблону будуть проводитися запити.

На отриманій формі розміщені наступні компоненти: opendialog, imagelist, actionlist.

Форма, породжена шаблоном, містить стандартні елементи: головне меню, панель, яка використовується як інструментальна лінійка, компонент statusbar1 і деякі системні діалогові панелі. Програмний код головної форми має такий зміст:

uses childwin, about;

procedure tmainform.createmdi child(const name: string);
var
child: tmdichild;
begin
{ create a new mdi child window }
child:= tmdichild.create(application);
child.caption:= name;
if fileexists(name) then child. memo1.lines.loadfromfile(name);
end;

procedure tmainform.filenew1execute(sender: tobject);
begin
createmdichild(“noname” + inttostr(mdichildcount + 1));
end;

procedure tmainform.fileopen1execute(sender: tobject);
begin
if opendialog.execute then
createmdichild(opendialog. filename);
end;

procedure tmainform.helpabout1 execute(sender: tobject);
begin
aboutbox.showmodal;
end;

procedure tmainform.fileexit1execute(sender: tobject);
begin
close;
end;

end.
Програмний код для дочірньої форми:
implementation

{$r *.dfm}

procedure tmdichild.formclose (sender: tobject; var action: tcloseaction);
begin
action:= cafree;
end;

end.

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

Програми sdi


Назва інтерфейсу одного документа (sdi) має на увазі, що ці програми складаються з єдиного вікна. Багатовіконний програми sdi можуть виглядати дуже схожими на додатки mdi, але вимагають великих зусиль при програмуванні в залежності від ступеня складності, що реалізується в управлінні вікнами.

Прикладом складного sdi-додатки є середа delphi. Воно допускає існування багатьох вікон, які прив’язані до області клієнта батьківського вікна. Додаток sdi зазвичай має вікно, що вважається головним і складається часто з лінійки меню.

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

Багатовіконний програми sdi вимагають деяких зусиль, якщо від них очікуються дії подібні поведінки mdi-додатків. Прикладом може служити підтримка меню головного вікна у всьому додатку, навіть коли фокус уведення знаходиться в іншій формі. Наприклад, головне вікно може містити меню file, яке ви хочете зробити доступним свого сімейства вікон sdi. У додатку mdi батьківське меню доступно завжди, це не потребує жодних програмних витрат, оскільки є властивістю батьківського меню за визначенням. У додатку sdi за замовчуванням меню – це просто меню поточного вікна sdi. Якщо в поточному вікні sdi немає меню (як, наприклад, в інспектора об’єкта), то за замовчуванням, натискання alt + f для виклику меню file не робить ніякого дії. В даному випадку повинен бути написаний додатковий програмний код, щоб процес головного вікна обробляв запитаний вибір меню.

Управління сімейством вікон sdi


Управління вікном sdi відрізняється від управління вікном mdi. В sdi немає специфічних властивостей, таких як activemdichild, що допомагають керувати вікнами. Тут необхідно розробляти власні засоби управління.

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

Ключем до управління вікнами sdi є підтримка змінних – дескрипторів форм (form – Handle) для тих вікон sdi, які є керованими.
Маніпуляція об’єктами головного вікна sdi з боку членів сімейства досягається виконанням наступних дій: головне вікно sdi зазвичай створює вікна членів сімейства під час виконання програми; для цього необхідно включати посилання на модуль вікна – члена сімейства в секцію uses головного вікна, ця посилання повинне бути присутнім як в mdi, так і в sdi для управління відповідно дочірніми вікнами і членами сімейства.

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

В Репозиторії є основна скелетна структура sdi. Цей шаблон вже забезпечений набором компонентів візуальних і не візуальних, сконфігурованих так, щоб у вас був вихідний пункт для розробки програми. За замовчуванням на шаблоні програми встановлюється меню, компонент opendialog, savedialog, imagelist, actionlist. В шаблоні організована рядок стану і вікно about.

Програмний код шаблону показаний нижче:

procedure tsdiappform.filenew1 execute(sender: tobject);
begin
{ do nothing }
end;

procedure tsdiappform.fileopen1 execute(sender: tobject);
begin
opendialog.execute;
end;

procedure tsdiappform.filesave1 execute(sender: tobject);
begin
savedialog.execute;
end;

procedure tsdiappform.fileexit1 execute(sender: tobject);
begin
close;
end;

procedure tsdiappform.helpabout1 execute(sender: tobject);
begin
aboutbox.showmodal;
end;

end.

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


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

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

Ваш отзыв

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

*

*