многодокументное окно в Lazarus
Модератор: Модераторы
- wofs
- постоялец
- Сообщения: 379
- Зарегистрирован: 05.10.2009 10:16:55
- Откуда: Астрахань
- Контактная информация:
многодокументное окно в Lazarus
Добрый день!
Не разобрался, возможно ли в лазарус создать многодокументное окно (аналог MIDI в Delphi ) ?
Помогите пожалуйста.
Не разобрался, возможно ли в лазарус создать многодокументное окно (аналог MIDI в Delphi ) ?
Помогите пожалуйста.
Нет. Поддержка MDI в Lazarus пока (будем надеяться) не реализована.
Есть правда компонент MultiDoc, но он очень сырой...
Есть правда компонент MultiDoc, но он очень сырой...
а чем Tab-ы не устраивают?! =)
скалогрыз писал(а):а чем Tab-ы не устраивают?! =)
Табы конечно хорошо, но не для всех целей они годятся ИМХО
например?
не совсем понятно зачем тут MDI нужно, потому что на одной форме (табе/панельке) это легко делается:
Два списка (TListView или TStringGrid), разделённых сплиттером.
Два списка (TListView или TStringGrid), разделённых сплиттером.
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
скалогрыз писал(а):на одной форме (табе/панельке) это легко делается:
+1 насоздавай себе понелек и кидай их себе по форме как хочешь. можно даже к ним кнопочки свернуть\закрыть прикрутить.
Multidoc + LMDI вполне пригоден к применению в мирных целях.
http://br.geocities.com/hipernetjr/lmdi/index_en.html
http://br.geocities.com/hipernetjr/lmdi/index_en.html
- wofs
- постоялец
- Сообщения: 379
- Зарегистрирован: 05.10.2009 10:16:55
- Откуда: Астрахань
- Контактная информация:
т.е. вы хотите сказать, что табами и панельками можно реализовать нечто подобное?

Добавлено спустя 2 минуты 40 секунд:
спасибо, посмотрим что за зверь

Добавлено спустя 2 минуты 40 секунд:
svk12 писал(а):Multidoc + LMDI вполне пригоден к применению в мирных целях.
http://br.geocities.com/hipernetjr/lmdi/index_en.html
спасибо, посмотрим что за зверь
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
ну может конечно это дело привычки, но ИМХО данной картинкой только попонтоваться можно, так как работать в таком многообразии не возможно.
хотя, да можно, за пару дней можно доработать панельку так чтобы она это все выполняла. и Х дней на тестирование
хотя, да можно, за пару дней можно доработать панельку так чтобы она это все выполняла. и Х дней на тестирование
wofs писал(а):т.е. вы хотите сказать, что табами и панельками можно реализовать нечто подобное?
нет конечно! =) табы и панельки это же не MDI!
я к чему! скриншот, конечно скриншот, но об идиеологии (интерфейса) программы они ничего не говорит!
на скриншоте:
* есть оторванное окошко с TreeView. зачем оно? если я выберу пункт в нём, содержимое другого окна поменяется? если да, то почему бы их не объединить в одно окно.
* плавающая "панелька" могла быть присоединена к верхнему меню с кнопками. Так ещё проще найти, потому что она не затеряется среди других окошек, и её координаты всегда точно находятся относительно верхнего-левого угла экрана. Допустим нужно чтобы оно было плавающим: не вопрос - fsStayOnTop для окошек никто не отменял!
* почему "О программе" тоже сделано MDI - загадка. Неписанный стандард - About делать отдельным окном, возможно даже модальным.
* ну и в "основном окне" (то которое с таблицами, заголовок нечитаемый), так содержимое окна сделано табами!
Вообще, данный скриншот, хорошо символизирует почему MDI не нужно использовать.
Что такое MDI - это возможность ограничивать область N-количества окон программы, некой областью. При работе с MDI программами, обычно возникает желание раскинуть всю это область на весь экран, потому что места не хватает.
В итоге MDI программа превращается в обычное "много оконное" приложение, как, например, Лазарус.
Так вот: зачем делать MDI, вместо многооконного приложения?! Чтобы одной кнопочкой сворачивать "все окна программы"? так они и так сворачиваются, а если нет, то никто не мешает у Main-form-ы сделать обработчик:
Код: Выделить всё
procedure ГлавнаяФорма.OnMinimize;
begin
for себя to последнее_окошко do
окно.свернись();
end;
Даже MS уже давно отказалось от MDI интерфейсов (см Offic-ы, MS Studio) в пользу табов и многооконности.
под Ubuntu наблюдал такую картину (хотел добится чтобы в гноме на таскбаре всегда отображалось только одно окно программы)
проверить негде поэтому пишу по памяти
в контексте главной формы:
и в итоге дочернее окно выводилось в области родительского
только уж очень неудобно - пришлось отказаться
проверить негде поэтому пишу по памяти
в контексте главной формы:
Код: Выделить всё
Application.CreateForm(TChildForm, ChildForm);
ChildForm.Parant:=Self;
ChildForm.Show;
и в итоге дочернее окно выводилось в области родительского
только уж очень неудобно - пришлось отказаться
wofs писал(а):т.е. вы хотите сказать, что табами и панельками можно реализовать нечто подобное?
Естественно можно, можно и удобнее.
Можно формы ставить на любой TWinControl что удобнее чем MDI Child.
Код: Выделить всё
frm := TForm.Create(Self);
frm.Parent := ScrollBox1;
frm.Show;
Только наверное придется для них самому рамочки и заголовки делать. (Можно сделать потомка TForm который будет включать свою рамку автоматически если есть Parent)
Но как для меня - было-бы на много удобнее сделать его разными окнами.
