Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];

Вниз

MDI   Найти похожие ветки 

 
tsarevep   (2002-06-12 10:16) [0]

Доброе время суток всем!
Подскажите пожалуйста если кто сталкивался. У меня 9 Childform в MDI, каждая форма это отдельный редактор со своим меню и toolbar"ом. Все формы - "auto-create" и их закрытие или сворачивание не должно быть возможно. Все они должны быть в "Maximized", без системного меню. Я установил флаги "BorderStyle в bsNone" и "biSystemMenu в False". А проблема получается в том что при переключение между формами их WindowState становится wsNormal.Если это возможно подскажите пожалуйста.
С уважением.


 
McSimm   (2002-06-12 10:34) [1]

Может для такого приложения лучше подойдет не MDI, а форма с TPageControl?


 
McSimm   (2002-06-12 10:44) [2]

А по вопросу -
procedure TMDIChild.FormActivate(Sender: TObject);
begin
WindowState := wsMaximized
end;


 
tsarevep   (2002-06-12 11:07) [3]

Там каждая форма со свом TabControl. И имеет возможность редактирования нескольких документов. А один PageControl мне бы ничего не дал. У меня только на одной Child-форме Toolbar чуть больше чем в Dеlphi(22 вкладки на PageControle и 270 кнопок), и причем формы отличаются по направлению. Например Undo-buffer для
звуков и картинок отличается от текстового и еще штук 500 таких загвоздок. А девять разных программ уже делал 28 Mb получились
вот и объеденяю невозможное.
А за ответ огромная благодарность. Я просто никогда с MDI не сталкивался. Еще раз спасибо.
С уважением.


 
tsarevep   (2002-06-12 11:28) [4]

Тут новый вопрос родился. Чего то перирисовка такая долгая получается при переключении между формами. Может как то можно её устранить?.
С уважением.


 
McSimm   (2002-06-12 11:58) [5]

Это происходит потому, что форма при активации сначала отрисовывается в "нормальном" состоянии, а затем максимизируется.

Можно сделать иначе.
Верните формам biSystemMenu = true.
Уберите из события OnActivate то что я предложил ранее
в описании форм перекройте
protected
procedure CreateParams(var Params: TCreateParams); override;
...
procedure TMDIChild.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style and not WS_SYSMENU
end;
После этого у форм исчезнут кнопки и системное меню, но при переключении они не будут менять состояние

Хотя я бы все же сделал на основе PageControl. Объясню почему.

- Внешний вид будет тот-же, что и в вашем случае. (закладочки можно скрыть)

- Формы Autocreate, поэтому все созданы и открыты.

- Все MDI формы разные, т.е. не являются экземплярами какого-то одного типа.

Все это позволяет использовать PageControl без какого-либо ущерба как ресурсам, так и внешнему виду.


 
tsarevep   (2002-06-12 12:14) [6]

Огромное спасибо!

А PageControl интересно конечно же и выгоднее было бы.
Но куда я дену меню( у одного Find-пункта разные направления) и toolbar"ищи а запихать их под вкладки не симпотично. Или я не так понял?.
С уважением.


 
McSimm   (2002-06-12 12:33) [7]

Согласен, что-то из механизма MDI пришлось бы делать самому - слияние меню, список окон...

Если мой совет помог справиться с проблемой, то можно и так.


 
tsarevep   (2002-06-12 16:04) [8]

Конечно помог, СПАСИБО!
А с PageControl"ом я пытался сначала. Не хотел с MDI связываться.
И вот чего получилось...
Один из редакторов это Html редактор почти один в один как Homesite 5.0 , то есть сверху идет меню, потом два toolbara слева поверху, справа Pagecontrol c кучей вкладок. Вообщем как в Делфи.
Дальше ниже идет PageControl для переключения между редакторами
еще ниже PageControl с вкладками "Browse и Html "дальше "Мемо"
со split разделителем еще ниже "minibrowser при редактировании"
потом опять "pagecontrol" с названиями файлов.А потом еще окно вывода. Вот и получилось PageControl один на одном. Клиентской области почти не осталось. Да и еще с горячими клавишами проблема, их просто не хватает для такого объема кнопок. Например в одном редакторе по сочитанию Ctrl + J всплывает "listbox" с набором функций, а в других редакторах другой "listbox" например c атрибутами, и делать if else и Visible туда сюда я пробывал - ничего хорошего из этого не получается. Поэтому и пытаюсь MDI.
Еще раз спасибо.
С уважением.



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

Форум: "Основная";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
14-77584
Мальфет
2002-05-21 07:45
2002.06.24
Хто знает, что за байда?


1-77339
Samvel
2002-06-12 23:24
2002.06.24
memo


14-77563
cyborg
2002-05-19 19:18
2002.06.24
CoolTrayIcon, ver. 4.0.1- Delphi вылетает!


1-77369
Yuri Btr
2002-06-13 13:03
2002.06.24
CreateProcessWithLogonW


14-77568
vajo
2002-05-21 09:14
2002.06.24
Метеориты с Марса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский