powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фрейм на fsMDIForm
14 сообщений из 14, страница 1 из 1
Фрейм на fsMDIForm
    #39735204
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Было обычное приложение с несколькими модальными формами. На главной форме размещались разные фреймы, в зависимости от условий, так:
Код: pascal
1.
2.
    Frame := TfrCalendar.Create(Self);
    Frame.Parent := Self;


Юзеры попросили MDI интерфейс. Переделал. Теперь если фрейм показан, то формы с fsMDIChild при их показе не видны. Убираешь фрейм - все ок. Как можно подружить фрейм с MDI формой - чтобы оба показывались?
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735223
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверно никак. Это особенность МДИ.
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735275
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYingЮзеры попросили MDI интерфейс. Переделал. Теперь если фрейм показан, то формы с fsMDIChild при их показе не видны. Убираешь фрейм - все ок. Как можно подружить фрейм с MDI формой - чтобы оба показывались? Вопрос задан сумбурно. Приходится гадать. Предполагаю, что надо создавать фреймы для каждого своего местоположения отдельно.

L_argoНаверно никак. Это особенность МДИ. Какая особенность MDI?
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735278
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimonkaВопрос задан сумбурно. Приходится гадать. Предполагаю, что надо создавать фреймы для каждого своего местоположения отдельно.
Уточняю - фрейм создается с родителем = главной форме и выравниваем = alClient.
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735281
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYingDimonkaВопрос задан сумбурно. Приходится гадать. Предполагаю, что надо создавать фреймы для каждого своего местоположения отдельно.
Уточняю - фрейм создается с родителем = главной форме и выравниваем = alClient.А потом ты меняешь Parent у фрейма на MDIWindow? Проблем не должно быть.
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735286
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimonkaА потом ты меняешь Parent у фрейма на MDIWindow? Проблем не должно быть.
Ничего не меняю. По шагам, если:
1. сначала на гл.форме создать фрейм (как в 1м посте)
2. создаем/показываем fsMDIChild форму так FMDIJourPutevki := TFJournal.Create(Application);
То fsMDIChild форма не видна.
Если сделать наоборот, то форма видна, а после создания фрейма опять не видна. Надеюсь, не запутал окончательно :)
В общем, видно что-либо одно - или фрейм, или мди-форма.
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735296
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYingНичего не меняю. По шагам, если:
1. сначала на гл.форме создать фрейм (как в 1м посте)
2. создаем/показываем fsMDIChild форму так FMDIJourPutevki := TFJournal.Create(Application);
То fsMDIChild форма не видна.
Если сделать наоборот, то форма видна, а после создания фрейма опять не видна. Надеюсь, не запутал окончательно :)
В общем, видно что-либо одно - или фрейм, или мди-форма. А-а-а, допёрло. Фрейм и MDI-окно делят одно и тоже пространство на форме. Ты видишь только тот контрол, который был создан последним с Align = client. Сделай нужному компоненту BringToFront и увидишь его вместо остальных. :-)
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735430
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimonka,

В том-то и дело, что BringToFront не помогает, не становится видимой форма с fsMDIChild...
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735445
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYing, Без танцев с бубном ClientHandle заменить у основной формы не получится. Придется много что переписывать в VCL.
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735450
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создавайте фрейм на отдельной fsMDIChild-форме :)
Правда тогда непонятно, зачем нужен фрейм.
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735488
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё ясно - подружить нельзя. Всем спасибо :)
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735586
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYing,

Контролы, находящиеся на форме уменьшают пространство для MDI-окон. Просто помести свой фрейм в другое MDI-окно и будет тебе счастье.
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735656
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaПросто помести свой фрейм в другое MDI-окно и будет тебе счастье.А смысл в фрейме ? :)
...
Рейтинг: 0 / 0
Фрейм на fsMDIForm
    #39735667
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoDimonkaПросто помести свой фрейм в другое MDI-окно и будет тебе счастье.А смысл в фрейме ? :) Я так понял, что у тебя фреймы уже готовы. Просто создаёшь типовые MDI окна и кидаешь в них свои фреймы:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
type
  TFormMDIChild = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    FFrame: TFrameBase;
    procedure SetFrame(const Value: TFrameBase);
    { Private declarations }
  public
    property Frame: TFrameBase read FFrame write SetFrame;
    { Public declarations }
  end;

implementation

{$R *.dfm}

{ TFormMDIChild }

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

procedure TFormMDIChild.SetFrame(const Value: TFrameBase);
begin
  FFrame := Value;
  if FFrame <> nil then
  begin
    FFrame.Parent := Self;
    FFrame.Align := alClient;
  end;
end;

....
  // А потом что-то вроде
  TFormMDIChild.Create(Self).Frame := TMyFrame.Create(Self);
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фрейм на fsMDIForm
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]