Разместить форму на панели?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
CynicRus
постоялец
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Разместить форму на панели?

Сообщение CynicRus »

Приветствую уважаемых форумчан. У приложения - 2 формы, необходимо вторую форму разместить на компоненте TPanel первой. Каким образом я могу это сделать?
Пробовал указать в OnCreate второй формы - Form1.panel, пробовал создавать форму 2 из формы 1 указывая в качестве владельца необходимый компонент - все без толку. Вылетает сегфолт и все.
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Сообщение stikriz »

Попробовал у себя в проекте:

Код: Выделить всё

var F: TfAbout;
begin
 F:=TfAbout.Create(Panel8);
 F.Parent:=Panel8;
 F.Visible:=true;
end;


Даже двигается за капшн :-)
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

можно TFrame использовать
CynicRus
постоялец
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Сообщение CynicRus »

Спасибо за ответы, выкрутился так:

Код: Выделить всё

procedure TDsgnForm.FormShow(Sender: TObject);
begin
  self.Parent:=CompForm.Panel1;
end;                 
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

stikriz может я чет не понимаю, но у меня на данный момент, данный код вообще не приносит результата (формочки нет вообще). Хотя стандартное решение...

Когда мне нужно было вывести какую то форму в другую я перепробывал разное и пришел к выводу фреймам легче (в лазаре). А единственное что нормально работает когда на вторую форму добавляю панель и потом Form2.Panel2.Parent:=Panel1; и в Pane1.ChildSizing настроил. Только все эт кривовато выглядит...

Вин7,хп, лазарь 1.1 фпс 2.6
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Сообщение stikriz »

amateur писал(а):stikriz может я чет не понимаю

Visible:=true;
У меня этот код работает.
CynicRus
постоялец
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Сообщение CynicRus »

Ну у меня ещё заработал вот такой вариант:
глобальная переменная:

Код: Выделить всё

var
f: TDsgnForm;

затем в OnCreate основной формы:

Код: Выделить всё

f:=TDsgnForm.Create(self);
  f.Parent:=CompForm.Panel1;
  f.Show;             

И все замечательно.
PS: Win 7, lazarus 9.30.4, fpc 2.6.0
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Сообщение stikriz »

Постивьте, на всякий случай Left:=0; Top:=0;Видимо, она далеко от видимой части панели. Ну, это мне мой локатор дальнего действия подсказывает.
CynicRus
постоялец
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Сообщение CynicRus »

Спасибо, так стало значительно лучше-)
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Сообщение stikriz »

Вот:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

а вместо MDI такое использовать можно? ^_^
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Сообщение stikriz »

В принципе, да. Окошко не выходит за рамки панели. Надо будет только распахивать и сворачивать правильно.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Brainenjii писал(а):а вместо MDI такое использовать можно? ^_^

ХМ. Теоретически можно (сейчас попробовал. по крайней мере винда). Только нужно кое какие действия самому реализовать.

з.ы. Как я сам раньше не додумался ... :oops:
Ответить