![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Vladimir_K |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 2.12.2006 Репутация: нет Всего: 1 |
Пожалуйста, помогите разобраться с созданием многооконного приложения.
Идея такая: имеется главная форма приложения, из которой можно вызывать несколько дочерних форм с графиками. Свойство FormStyle главной формы я установил в fsMDIForm, свойство FormStyle дочерней формы - в fsMDIChild. На гл.форме есть кнопка "График", по щелчку на которой открывается форма с графиком; если щелкнуть еще раз - открывается еще одна форма и т.д. Дочерние формы можно упорядочивать каскадом, по вертикали и по горизонтали. Проблема вот в чем. 1. Как сделать, чтобы главная форма при запуске разворачивалась на весь экран? WindowState устанавливал в wsMaximized - форма хоть и развернута полностью, но смещена немного вниз (нижний скрол почти не виден). 2. Когда запускается дочерняя форма, то сквозь нее видно все, что расположено на главной форме. Элементы гл. формы даже перекрывают элементы дочерней. Как этого избежать? 3. Как закрывать дочерние формы? 4. При перемещении дочерней формы по главной, на главной появляются скролы, но они мне не нужны. Как их убрать? 5. Если дочернюю форму развернуть на весь экран, то потом ее невозможно восстановить. Есть и еще кое-какие непонятки, но с ними я попробую разобраться сам, а вот эти вопросы я сам не могу решить. Помогите кто чем может. Это сообщение отредактировал(а) Vladimir_K - 13.12.2006, 18:46 --------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 6 Всего: 78 |
Модератор: Пожалуйста, один топик - один вопрос.
1) wsMaximized 2) покажи код 3) В FormClose дочерней формы напиши Action := caFree; 4) Отлавливай сообщения создания скроллов 5) Возможно. Покажи код. -------------------- Ll 2 |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: нет Всего: 22 |
1. либо поставить Align=alClient, либо в OnCreate руками задать Top, Left, Width и Height.
2. а почему так происходит? это не стандартное поведение, смотрите, что вы ещё накрутили в дочерней форме помимо свойства FormStyle. обычно таких проблем нет 3. в OnClose дочерней формы надо написать Action := caFree; 4. у главной формы убрать AutoScroll := FALSE; 5. так будет происходить, пока вы не зададите для главной формы главное меню Добавлено @ 18:48 Guedda, я думаю, там и есть wsMaximized, и что это у автора очепютка. а я ещё я думаю, что у него стоит Position = poScreenCenter. именно в этом случае размер формы высчитывается корректно, с учётом высоты панели задач, а центрируется она - криво, залезая на эту самую панель задач. и здесь два выхода, либо отключить центрирование (и всё станет хорошо), либо отключить wsMaximized и юзать другие способы. тогда всё тоже будет хорошо, но центрирование при этом всё равно потеряет смысл -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Vladimir_K |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 2.12.2006 Репутация: нет Всего: 1 |
wsMaximized - разворачивает окно, но смещает немного вниз, передвинуть нельзя.
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: нет Всего: 22 |
Vladimir_K, и не путай людей, плз. в твоём первом посту стояло wsMinimized. если ты меняешь текст своего начального вопроса после того, как тебе на него ответили, то хотя бы предупреждай остальных об этом.
Добавлено @ 18:52 Vladimir_K, чему равен Position? -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Vladimir_K |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 2.12.2006 Репутация: нет Всего: 1 |
Извините, но я подумал, что эти вопросы достаточно тесно связаны, чтобы их можно было объединить под одной темой.
Я просто не успел - настолько быстро пришли ответы. Извиняюсь. Это сообщение отредактировал(а) Vladimir_K - 13.12.2006, 19:05 --------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: нет Всего: 22 |
так извинятся не за что, вам же хуже, если из-за путаницы вам неправильно ответят ;) -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Vladimir_K |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 2.12.2006 Репутация: нет Всего: 1 |
wsMaximized в Win'98 работает нормально, пробовал в 'XP - там окно сдвинуто вниз. Action := caFree; - помогло, спасибо. Код выложу. --------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: нет Всего: 22 |
Vladimir_K, дубль три, чему равно свойство Position у главной формы?
wsMaximized нормально работает везде. и только если Position = poScreenCenter - то окно будет сдвинуто вниз на панель задач, причём передвинуть его будет невозможно. и это, в принципе, не глюк. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Vladimir_K |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 2.12.2006 Репутация: нет Всего: 1 |
poDesktopCenter --------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: нет Всего: 22 |
Vladimir_K, если у вас один монитор - то это тоже самое
теперь смотрите. с одной стороны вы говорите форме WindowState = wsMaximized (что означает, что размер формы должен быть равен всему экрану, кроме панели задач - и форма это делает!), с другой стороны, вы говорите Position = poDesktopCenter (что заставляет форму центрироваться посередине экрана). а куда она может центрироваться? правильно, спуститься вниз, заехав ровно на половину "незанятой" панели задач. проще всего просто отключить центрирование, т.е. поставить Position = poDesigned. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Vladimir_K |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 2.12.2006 Репутация: нет Всего: 1 |
У главной формы установил AutoScroll := FALSE; не помогает - скролы появляются.
На главной форме пока всего одна кнопка. Код:
Код дочерней формы:
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть |
||||
|
|||||
| Vladimir_K |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 2.12.2006 Репутация: нет Всего: 1 |
Главная форма:
Action ActiveControl Align alNone AlphaBlend False AlphaBlendValue 255 Anchors [akLeft,akTop] AutoScroll False AutoSize False BiDiMode bdLeftToRight BorderIcons [biSystemMenu,biMinimize,biMaximize] BorderStyle bsSizeable BorderWidth 0 Caption Myprog ClientHeight 471 ClientWidth 647 Color clBtnFace Constraints (TSizeConstraints) Ctl3D True Cursor crDefault DefaultMonitor dmActiveForm DockSite False DragKind dkDrag DragMode dmManual Enabled True Font (TFont) FormStyle fsMDIForm Height 498 HelpContext 0 HelpFile HelpKeyword HelpType htContext Hint HorzScrollBar (TControlScrollBar) Icon (None) KeyPreview False Left 363 Menu Name Glavnaya ObjectMenuItem OldCreateOrder False ParentBiDiMode True ParentFont False PixelsPerInch 96 PopupMenu Position poDesigned PrintScale poProportional Scaled True ScreenSnap False ShowHint False SnapBuffer 10 Tag 0 Top 104 TransparentColor False TransparentColorValue clBlack UseDockManager False VertScrollBar (TControlScrollBar) Visible True Width 655 WindowMenu WindowState wsMaximized Дочерняя форма: Action ActiveControl Align alNone AlphaBlend False AlphaBlendValue 255 Anchors [akLeft,akTop] AutoScroll True AutoSize False BiDiMode bdLeftToRight BorderIcons [biSystemMenu,biMinimize,biMaximize] BorderStyle bsSizeable BorderWidth 0 Caption Гpaфики ClientHeight 306 ClientWidth 688 Color clBtnFace Constraints (TSizeConstraints) Ctl3D True Cursor crDefault DefaultMonitor dmActiveForm DockSite False DragKind dkDrag DragMode dmManual Enabled True Font (TFont) FormStyle fsMDIChild Height 333 HelpContext 0 HelpFile HelpKeyword HelpType htContext Hint HorzScrollBar (TControlScrollBar) Icon None KeyPreview False Left 199 Menu Name Graph ObjectMenuItem OldCreateOrder False ParentBiDiMode True ParentFont False PixelsPerInch 96 PopupMenu Position poDesktopCenter PrintScale poProportional Scaled True ScreenSnap False ShowHint False SnapBuffer 10 Tag 0 Top 246 TransparentColor False TransparentColorValue clBlack UseDockManager False VertScrollBar (TControlScrollBar) Visible True Width 696 WindowMenu WindowState wsNormal --------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть |
|||
|
||||
| Vladimir_K |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 2.12.2006 Репутация: нет Всего: 1 |
Как отлавливать сообщения скроллов? А отловив их, нужно как-то запрещать появление скроллов? Это сообщение отредактировал(а) Vladimir_K - 14.12.2006, 08:25 --------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть |
|||
|
||||
| Vladimir_K |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 2.12.2006 Репутация: нет Всего: 1 |
Если развернуть полностью одно дочернее окно, то разворачиваются все. После этого пробую первое окно закрыть - закрывается, но остается следующее полностью развернутое окно. Непонятно.
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |