Форум: "Начинающим";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.006 c