Форум: "Основная";
Текущий архив: 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.46 MB
Время: 0.008 c