powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Форма как MDI так и модальная
12 сообщений из 12, страница 1 из 1
Форма как MDI так и модальная
    #32356416
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вопрос. Была у меня в проге форма MDI Child. Хочу сделать вывод этой формы и как модальной. Ставлю когда это нужно свойство FormStyle. Но тут загвоздка. Положение и размеры окна я выставляю в OnShow. А здесь делаю проверку if Form.FormStyle=... then. Но при выполнении программы в этом месте ошибка. Почему? И вообще какие будут предложения, как лучше организовать работу одной формы в двух ипостасях.
...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32356499
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Visible помоему тоже нужно менять
...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32356501
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка то какая?

-- Tygra's --
...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32356526
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка типа Access VIolation. Похоже, что при обработке OnShow некоторые свойства формы еще недоступны. Я сейчас вынес задание позиции и размеров из OnShow в то место, откуда происходит вызов. Но интересно, как бы это все сделать правильно.
...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32356535
pima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня вообще было интересное кино. Просто голая форма MDIChild, никакого кода. Так вот, когда я меняю FormStyle c MDIChild на fsNormal, где-то глубоко в недрах дельфей что-то делает "хрясь", и форма умирает: на ShowModal она говорит: "Cannot make a window visible modal". Спасение - только убить старую и нарисовать новую.
...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32356549
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю у меня работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    FrmStocksTrebovanie:=TFrmStocksTrebovanie.Create(Application);
    FrmStocksTrebovanie.PanelCopyToNacladna.Visible:=True;
    FrmStocksTrebovanie.FormStyle:=fsNormal;
    FrmStocksTrebovanie.Position:=poScreenCenter;
    FrmStocksTrebovanie.Visible:=False;
    FrmStocksTrebovanie.ShowModal();

...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32356558
pima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дык правильно, вы ж ее как создали в рантайме, так первый же стиль, который ей присвоили, - и есть fsNormal. А у меня форма в дизайн-тайме сначала была fsNormal, потом MDIChild, потом опять fsNormal, и вот такой свистопляски дельфя и не выдержала.
...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32356574
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ан нет, она у меня изначально чилд (свойство класса TFrmStocksTrebovanie.FormStyle = чилд задано на этапе разработки а когда объект уже создан, то меняю его свойства)
...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32356606
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При изменении FormStyle, Delphi фактически полностью уничтожает старое и создает новое окно. Поэтому лучше вообще его не менять. В случае осторой необходимости желательнее строить окно как модальное, а уж потом назначать ему fsMDIChild

Nobody faults but mine... (LZ)
...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32356725
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> aag
погляди исходники - ничего не уничтожаеца.
Visible := False и потом меняем людые флаги - а если у чела виолейшен - пусть глядит в дебугерре - где сабака парылась.
...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32356889
qqqqq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KirillovA

procedure TCustomForm.SetFormStyle(Value: TFormStyle);
var
OldStyle: TFormStyle;
begin
if FFormStyle <> Value then
begin
if (Value = fsMDIChild) and (Position = poDesigned) then
Position := poDefault;
if not (csDesigning in ComponentState) then DestroyHandle ;
...
и это по-вашему "ничего не уничтожается"? ;-)
...
Рейтинг: 0 / 0
Форма как MDI так и модальная
    #32357200
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поскольку qqqqq уже ответил, могу лишь дополнить - разница во времени пересоздания сложного окна (с гридом, со множеством конпочек и пр.), между модальным и дочерним, может быть ооочень большой.

Nobody faults but mine... (LZ)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Форма как MDI так и модальная
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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