Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1250510423
Художник
2009-08-17 16:00
2009.10.18
Изменить толщину пера при растривании вектора


11-1206427258
Петровичъ
2008-03-25 09:40
2009.10.18
MCK для BDS2005-2007


2-1250845434
Priest
2009-08-21 13:03
2009.10.18
RS-232 возвращает данные в формате float. Как перевести?


2-1250413824
hinst
2009-08-16 13:10
2009.10.18
Synchronize


2-1250065979
Grant
2009-08-12 12:32
2009.10.18
Пакеты в Делфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский