Ошибка: Failed to parse the Currency Converter XML document.
$29 193.50


Ошибка: Failed to parse the Currency Converter XML document.
$2 772.29


Ошибка: Failed to parse the Currency Converter XML document.
$26 203.91


Разработка SDI и MDI приложений

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

На полученной форме размещены следующие компоненты: op endialog, imagelist, actionlist.

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


uses childwin, about;

procedure tmain form.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 tmain form.filenew1execute(s ender: tobject);
begin
createmdichild(«noname» + inttostr(mdichildcount + 1));

end;

procedure tmain form.fileopen1execute(s ender: tobject);
begin
if op endialog.execute then
createmdichild(op endialog. filename);
end;

procedure tmain form.helpabout1 execute(s ender: tobject);
begin
aboutbox.showmodal;
end;

procedure tmain form.fileexit1execute(s ender: tobject);
begin
close;
end;

end.

Программный код для дочерней формы:
implementation

{$r *.dfm}

procedure tmdichild. formclose (s ender: 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. Этот шаблон уже снабжен набором компонентов визуальных и не визуальных, сконфигурированных так, чтобы у вас имелся исходный пункт для разработки приложения. По умолчанию на шаблоне приложения устанавливается меню, компонент op endialog, savedialog, imagelist, actionlist. В шаблоне организована строка состояния и окно about.

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

procedure tsdiapp form.filenew1 execute(s ender: tobject);
begin
{ do nothing }
end;

procedure tsdiapp form.fileopen1 execute(s ender: tobject);
begin
op endialog.execute;
end;

procedure tsdiapp form.filesave1 execute(s ender: tobject);
begin
savedialog.execute;
end;

procedure tsdiapp form.fileexit1 execute(s ender: tobject);
begin
close;
end;

procedure tsdiapp form.helpabout1 execute(s ender: tobject);
begin
aboutbox.showmodal;
end;

end.

 

Интересное

Сомневаетесь в Windows...
Windows Vista в виртуальной машинеВ последнее время внимание всего околокомпьютерного сообщества было приковано к готовящемуся окончательному релизу операционной системы Windows Vista. И вот,...
Подробнее...
Расширяем возможности...
Пример показывает, как сделать кнопку с тремя состояниями. В обычном состоянии она сливается с формой. При наведении на такую кнопку курсором мышки, она становится выпуклой. Ну и, соотвественно,...
Подробнее...
Утилиты Windows XP
Локальные параметры безопасностиПолитика паролей, учетных записей пользователей, назначение прав пользователей, параметры безопасности и другое.Оснастка консоли secpol.mscГрупповая политика...
Подробнее...
Создание маршрутизатора на...
Есть две сети которые необходимо соединить роутером. Обе сети полностью сделаны на Windows 2000, с использованием ActiveDirectory. В принципе можно было поднять роутер на Windows, но использовать...
Подробнее...
Криптография: палка о двух...
В первой части статьи мы обсудили основные понятия криптовирологии. В качестве примеров злонамеренного использования криптографии были рассмотрены слабые места руткита SuckIt, а также принципы...
Подробнее...
Delphi - начало
В данной статье я постараюсь дать некоторые основы языка программирования Delphi, сразу же скажу, что изучить язык программирования невозможно изучить по одной статье, и даже по одной книге, для...
Подробнее...
Удаление и отключение...
Иногда требуется обновить или удалить драйвер какого-либо устройства, поскольку он уже не нужен либо не работает должным образом под Windows Server 2003. В этой статье будет описан процесс...
Подробнее...
«Продвинутость» в Сети....
Для начала немного статистики. Даже если вы «уже в танке», не мешает лишний раз задуматься над приведенными ниже цифрами. Итак, по данным исследовательской компании «Ромир», во втором квартале...
Подробнее...
"Грабим" странички
С аудиограбберами знакомы все. Нам предстоит сделать свой собственный граббер информации из Интернета. Нам понадобится подопытный кролик, на роль которого я предлагаю выбрать сайт...
Подробнее...
Перьевые ручки Parker....
Элегантный корпус, перо из качественного металла, заправленный жидкими чернилами контейнер внутри – перьевая ручка не нуждается в особом представлении. Принцип работы ее прост: при небольшом...
Подробнее...