Другие языки программирования и технологии

Delphi. Как сделать так, чтобы в моей программе окошки появлялись внутри главной формы (Как в 1С) ?

В Делфи существует два подхода к созданию MDI приложений - первый - посредством шаблонов, второй - с нуля и своими ручонками =) Если вы лентяй и у вас стоит Borland Delphi 5 или выше, вы можете воспользоваться первым подходом. Вот как это можно сделать - запустите делфи, создайте "свежий проект", выбрав в меню File | New | Other, затем выберите в появившемся окне вкладку Projects и в ней MDI Application. В результате у вас появится готовый проект - шаблон, единственное, что для вас остается - немного пофантазировать и добавить необходимый вам код.

Второй путь более трудоемкий. Вначале вы должны спроектировать главную форму. Делаете это, как если бы вы делали обычный проект, обычное приложение. Сохраняете, запускаете и пока что все. Главное условие, чтобы на форме было свободное место, место для дочерних окон, поэтому на форму обычно перекидывают из видимых компонентов только три (обязательных) : TMainMenu, TToolBar и TStatusBar. Далее - самое интересное. Изменим свойство FormStyle главного окна на fsMDIForm и создадим одну кнопку в компоненте TToolBar (для открытия дочерних окон) . На этом работа с главным окном временно закончена. Теперь создадим новый unit с новой формой и свяжем его с нашим проектом (прописав Uses unit2 к примеру) . Для вновь созданной формы изменим свойство FormStyle на fsMDIChild и обязательно опишем для нее событие OnClose:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

Это необходимо для того, чтобы наша дочерняя форма исчезала при закрытии, иначе она просто свернется и ее снова можно будет восстановить (она закроется только при закрытии всего приложения) . Работа со второй формой завершена, возвращаемся к первой (в исходном проекте) . Итак, все, что нам осталось здесь сделать - описать событие OnClick для кнопки TToolButton, которую мы создали на компоненте TToolBar:

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
TForm2.Create(application);
end;

Обязательно пишите перед именем дочерней формы букву "Т" (TForm2), иначе получите ошибку при нажатии на кнопку. Теперь наше простое MDI приложение готово - сохраняйтесь, компилируйте и запускайте приложение.
NZ
Nusrat_Pac96 Zeynalli
4 444
Лучший ответ
внутри главной формы:
1. Окно не выходит за пределы формы. . Обработай OnMove сравнивай позиции главной и текущей. .
2. Посмотри технологию Drag&Dock
мышкой их подвинь там где хочешь чтоб они появлялись и скопилируй exe заново
так же в инспекторе объектов есть параметры где будет появляться окно