Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.18;
Скачать: CL | DM;

Вниз

MDI-интерфейс   Найти похожие ветки 

 
BornInUSSR   (2009-08-13 11:47) [0]

Здравствуйте. Вопрос по MDI. В приложении MDI, если открывать окошко как Maximized, то все ранее открытые окошки становятся Maximized. Соответственно та же ситуация и с Restore, открыто Maximized окшко, открываем следующии как нормальное, и окошко, которое ранее было Maximized ресторится.
Можно ли как-нибудь этого избежать, т.е. чтобы для каждого окошка в отдельности был определен его тип? Посмотрел дельфевый пример с MDI текстового редактора там такой-же геморрой с окнами :-(


 
Юрий Зотов ©   (2009-08-13 12:02) [1]

Это стандартное поведение MDI в Windows. Delphi тут ни при чем.


 
Anatoly Podgoretsky ©   (2009-08-13 12:10) [2]

> BornInUSSR  (13.08.2009 11:47:00)  [0]

Можно, если сделать свою реализацию, но по определению это будет уже не MDI - даже Микрософт в своей эмуляции не рискнул пойти на это


 
BornInUSSR   (2009-08-13 12:17) [3]


> Это стандартное поведение MDI в Windows. Delphi тут ни при
> чем.

И что, ничего сделать нельзя? Как-то некрасиво получается. Показывается новая форма, и все остальные формы меняют свой размер.


 
Inovet ©   (2009-08-13 12:21) [4]

> [3] BornInUSSR   (13.08.09 12:17)
>
> > Это стандартное поведение MDI в Windows. Delphi тут ни
> при
> > чем.
>
> И что, ничего сделать нельзя? Как-то некрасиво получается.
> Показывается новая форма, и все остальные формы меняют свой
> размер.

Размер-то с чего?


 
Медвежонок Пятачок ©   (2009-08-13 12:23) [5]

Показывается новая форма, и все остальные формы меняют свой размер.

Они все равно не видны


 
BornInUSSR   (2009-08-13 13:41) [6]


> > [3] BornInUSSR   (13.08.09 12:17)
> >
> > > Это стандартное поведение MDI в Windows. Delphi тут
> ни
> > при
> > > чем.
> >
> > И что, ничего сделать нельзя? Как-то некрасиво получается.
>  
> > Показывается новая форма, и все остальные формы меняют
> свой
> > размер.
>
> Размер-то с чего?

В смысле если все формы были максимизированны, то при попытке показать следующую в нормальном виде то все максимизированные сворачиваются до нормального размера.


 
BornInUSSR   (2009-08-13 13:46) [7]


> Показывается новая форма, и все остальные формы меняют свой
> размер.
>
> Они все равно не видны

с чего это они не видны?


 
Inovet ©   (2009-08-13 13:50) [8]

> [6] BornInUSSR   (13.08.09 13:41)
> > Размер-то с чего?
>
> В смысле если все формы были максимизированны, то при попытке
> показать следующую в нормальном виде то все максимизированные
> сворачиваются до нормального размера.

Не размер, а состояние. И не сворачиваются они, а новая максимизируется.


 
BornInUSSR   (2009-08-14 14:11) [9]

Я о состоянии и говорил. Про сворачиваться я имел ввиду что они приобретают первоначальный размер, те есть ресторятся. Если я новую форму принудительно открываю как не максимизированную, то все формы ресторятся. так наверное понятнее.


 
Медвежонок Пятачок ©   (2009-08-14 14:12) [10]

с чего это они не видны?

Потому что активная максимизирована


 
Медвежонок Пятачок ©   (2009-08-14 14:26) [11]

а вообще надо либо понять и принять что все так и должно быть в mdi приложении, либо менять сам тип приложения.


 
Inovet ©   (2009-08-14 14:27) [12]

> [9] BornInUSSR   (14.08.09 14:11)
> Я о состоянии и говорил. Про сворачиваться я имел ввиду
> что они приобретают первоначальный размер, те есть ресторятся.
> Если я новую форму принудительно открываю как не максимизированную,
> то все формы ресторятся. так наверное понятнее.

Создаём новую форму с FormStyle = fsMDIChild и WindowState = wsNormal, при том на главной у же есть формы с WindowState = wsMaximized, новая становится WindowState = wsMaximized, т.е. она как остальные, а не наоборот. Это нормальное поведение MDI. Почему у тебя не так?


 
BornInUSSR   (2009-08-14 14:33) [13]


> с чего это они не видны?
>
> Потому что активная максимизирована

А если я ее принудительно открывю как не максимизированную? :-)


 
sniknik ©   (2009-08-14 14:34) [14]

> даже Микрософт в своей эмуляции не рискнул пойти на это
1С пошла.

> Почему у тебя не так?
у него так, и именно это ему не нравится.


 
Медвежонок Пятачок ©   (2009-08-14 14:38) [15]

А если я ее принудительно открывю как не максимизированную? :-)
Ну открываешь. Активаная она все равно одна. При этом не все ли равно в каком состоянии остальные?


 
Inovet ©   (2009-08-14 14:40) [16]

> [14] sniknik ©   (14.08.09 14:34)
> > даже Микрософт в своей эмуляции не рискнул пойти на это
> 1С пошла.

Наверно автор этого и хочет.

> > Почему у тебя не так?
> у него так, и именно это ему не нравится.

Нет. автор пишет

> [9] BornInUSSR   (14.08.09 14:11)
> Если я новую форму принудительно открываю как не максимизированную,
> то все формы ресторятся.


 
BornInUSSR   (2009-08-14 14:47) [17]


> Создаём новую форму с FormStyle = fsMDIChild и WindowState
> = wsNormal, при том на главной у же есть формы с WindowState
> = wsMaximized, новая становится WindowState = wsMaximized,
>  т.е. она как остальные, а не наоборот. Это нормальное поведение
> MDI. Почему у тебя не так?

Если новую создавать как wsNormal то новая будет wsNormal, а остальные как она становятся wsNormal. Можете проверить. В Дельфи есть пример MDI приложения, какой-то текстовый редактор. Вот собственно код создания:

 Child := TMDIChild.Create(Application);
 Child.WindowState := wsNormal;


 
Inovet ©   (2009-08-14 15:06) [18]

> [17] BornInUSSR   (14.08.09 14:47)
> Child := TMDIChild.Create(Application);
> Child.WindowState := wsNormal;

В дизайнтайм поставь WindowState = wsNormal


 
Медвежонок Пятачок ©   (2009-08-14 15:07) [19]

чего же ты хочешь?
все так и должно быть как и происходит у тебя


 
Inovet ©   (2009-08-14 15:09) [20]

> [18] Inovet ©   (14.08.09 15:06)
> > [17] BornInUSSR   (14.08.09 14:47)
> > Child := TMDIChild.Create(Application);

Application замени на Self


 
Anatoly Podgoretsky ©   (2009-08-14 15:20) [21]

> sniknik  (14.08.2009 14:34:14)  [14]

ОдноЭсу Микрософт не писан


 
BornInUSSR   (2009-08-14 15:38) [22]


> В дизайнтайм поставь WindowState = wsNormal


> Application замени на Self

И что это даст? Новая форма будет максимизированна, а мне нужно не это, мне нужно чтобы остальные формы не ресторились.

Собственно всем. Можно ли сделать так чтобы остальные формы не ресторились?


 
Inovet ©   (2009-08-14 15:41) [23]

> [22] BornInUSSR   (14.08.09 15:38)
>
> > В дизайнтайм поставь WindowState = wsNormal
> > Application замени на Self
>
> И что это даст? Новая форма будет максимизированна, а мне
> нужно не это, мне нужно чтобы остальные формы не ресторились.
>
> Собственно всем. Можно ли сделать так чтобы остальные формы
> не ресторились?

Ты уже сделал?
Убери ещё строку
Child := TMDIChild.Create(Application);


 
Медвежонок Пятачок ©   (2009-08-14 15:42) [24]

мне нужно чтобы остальные формы не ресторились.

Главная форма - fsNormal
все остальные  - fsNormal

И все. Конец сказке про белого бычка.


 
Inovet ©   (2009-08-14 15:47) [25]

> [24] Медвежонок Пятачок ©   (14.08.09 15:42)
> Главная форма - fsNormal
> все остальные  - fsNormal

Главная-то зачем, там по барабану что.


 
Медвежонок Пятачок ©   (2009-08-14 15:48) [26]

чтобы лишних недоразумений с ерайзбэкграуном не было


 
Inovet ©   (2009-08-14 15:51) [27]

> [26] Медвежонок Пятачок ©   (14.08.09 15:48)
> чтобы лишних недоразумений с ерайзбэкграуном не было

А какие бывают?


 
BornInUSSR   (2009-08-14 15:58) [28]


> Ты уже сделал?
> Убери ещё строку
> Child := TMDIChild.Create(Application);

Это шутка?


 
Inovet ©   (2009-08-14 16:00) [29]

> [28] BornInUSSR   (14.08.09 15:58)
>
> > Ты уже сделал?
> > Убери ещё строку
> > Child := TMDIChild.Create(Application);
>
> Это шутка?

Это не то скопировал.:)
вот эту:
Child.WindowState := wsNormal;


 
BornInUSSR   (2009-08-14 16:04) [30]


> Главная форма - fsNormal
> все остальные  - fsNormal
>
> И все. Конец сказке про белого бычка.

Вот Вы попробуйте. Просто ради Вашего же интереса. Возьмите стандартный пример дельфевого MDI приложения, поставьте там свойства так как Вы говорите и посмотрите. Создайте несколько окошек, максимизируйте их, потом ресторьте одно и посмотрите, ресторятся ли все остальные или нет?


 
BornInUSSR   (2009-08-14 16:05) [31]


> Это не то скопировал.:)
> вот эту:
> Child.WindowState := wsNormal;

Так это я уже сам ставил, чтобы новое окно принудительно создавалось ресторенным.


 
Медвежонок Пятачок ©   (2009-08-14 16:08) [32]

Вот Вы попробуйте. Просто ради Вашего же интереса. Возьмите стандартный пример дельфевого MDI приложения,

Ты тупой?
Это не будет MDI приложением.
Обычная главная форма и обычные немодальные остальные формы.


 
Inovet ©   (2009-08-14 16:09) [33]

> [31] BornInUSSR   (14.08.09 16:05)
> > Child.WindowState := wsNormal;
>
> Так это я уже сам ставил, чтобы новое окно принудительно
> создавалось ресторенным.

Потому и поведение такое. Ты сделал что я советовал?


 
BornInUSSR   (2009-08-14 16:38) [34]


> Потому и поведение такое. Ты сделал что я советовал?

Делал, получается обычное поведение MDI, а мне нужно это поведение чутка подкорректировать. Вот собсно про это я и спрашивал, можно ли вобще так?


 
Inovet ©   (2009-08-14 16:41) [35]

> [34] BornInUSSR   (14.08.09 16:38)
>
> > Потому и поведение такое. Ты сделал что я советовал?
>
> Делал, получается обычное поведение MDI, а мне нужно это
> поведение чутка подкорректировать. Вот собсно про это я
> и спрашивал, можно ли вобще так?

См

> [1] Юрий Зотов ©   (13.08.09 12:02)


 
BornInUSSR   (2009-08-14 16:50) [36]

Ясно, спасибо всем.
Inovet, отдельное спасибо.
Медвежонок Пятачок, на будующее, не оскорбляйте человека если не знаете его.


 
Медвежонок Пятачок ©   (2009-08-14 16:55) [37]

А что если я был оскорблен тем, что после того как трижды сказал, что мдиай здеь не нужен, а нужен fsNormal, незнакомый мне человек снова повторяет как попугай "откройте делфийский демос для mdi приложения"?



Страницы: 1 вся ветка

Текущий архив: 2009.10.18;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.013 c
15-1245585239
Кто б сомневался
2009-06-21 15:53
2009.10.18
Автозапуск на Vista и цифровая подпись


15-1250510423
Художник
2009-08-17 16:00
2009.10.18
Изменить толщину пера при растривании вектора


1-1219636871
checkmate-maker
2008-08-25 08:01
2009.10.18
TRxRichEdit


2-1250081231
Dmitry1987
2009-08-12 16:47
2009.10.18
TADOTable


4-1219747063
Deltas
2008-08-26 14:37
2009.10.18
Сообщения, обрабатываемые компонентами TRichView, TRichViewEdit