многодокументное окно в Lazarus

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

многодокументное окно в Lazarus

Сообщение wofs » 05.10.2009 10:28:07

Добрый день!
Не разобрался, возможно ли в лазарус создать многодокументное окно (аналог MIDI в Delphi ) ?
Помогите пожалуйста.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: многодокументное окно в Lazarus

Сообщение Mr.Smart » 05.10.2009 10:52:01

Нет. Поддержка MDI в Lazarus пока (будем надеяться) не реализована.
Есть правда компонент MultiDoc, но он очень сырой...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: многодокументное окно в Lazarus

Сообщение скалогрыз » 05.10.2009 10:56:05

а чем Tab-ы не устраивают?! =)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: многодокументное окно в Lazarus

Сообщение Mr.Smart » 05.10.2009 11:10:18

скалогрыз писал(а):а чем Tab-ы не устраивают?! =)

Табы конечно хорошо, но не для всех целей они годятся ИМХО :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: многодокументное окно в Lazarus

Сообщение скалогрыз » 05.10.2009 11:28:58

например?
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: многодокументное окно в Lazarus

Сообщение wofs » 05.10.2009 11:39:41

табами щас и реализовано за неимением лучшего, но это не очень удобно.
например - расположить 2 окна рядом (к примеру список банковских выписок и список накладных)
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: многодокументное окно в Lazarus

Сообщение скалогрыз » 05.10.2009 13:38:08

не совсем понятно зачем тут MDI нужно, потому что на одной форме (табе/панельке) это легко делается:
Два списка (TListView или TStringGrid), разделённых сплиттером.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: многодокументное окно в Lazarus

Сообщение Attid » 05.10.2009 14:42:18

скалогрыз писал(а):на одной форме (табе/панельке) это легко делается:

+1 насоздавай себе понелек и кидай их себе по форме как хочешь. можно даже к ним кнопочки свернуть\закрыть прикрутить.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: многодокументное окно в Lazarus

Сообщение svk12 » 05.10.2009 16:18:47

Multidoc + LMDI вполне пригоден к применению в мирных целях.

http://br.geocities.com/hipernetjr/lmdi/index_en.html
svk12
постоялец
 
Сообщения: 408
Зарегистрирован: 09.06.2008 18:42:47

Re: многодокументное окно в Lazarus

Сообщение wofs » 06.10.2009 09:59:05

т.е. вы хотите сказать, что табами и панельками можно реализовать нечто подобное?
Изображение

Добавлено спустя 2 минуты 40 секунд:
svk12 писал(а):Multidoc + LMDI вполне пригоден к применению в мирных целях.

http://br.geocities.com/hipernetjr/lmdi/index_en.html

спасибо, посмотрим что за зверь :)
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: многодокументное окно в Lazarus

Сообщение Attid » 06.10.2009 10:15:04

ну может конечно это дело привычки, но ИМХО данной картинкой только попонтоваться можно, так как работать в таком многообразии не возможно.

хотя, да можно, за пару дней можно доработать панельку так чтобы она это все выполняла. и Х дней на тестирование :lol:
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: многодокументное окно в Lazarus

Сообщение wofs » 06.10.2009 10:23:27

я не понтуюсь, я представил пример необходимого интерфейса :)
за пару дней можно доработать панельку так чтобы она это все выполняла

пример не подкинешь?
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: многодокументное окно в Lazarus

Сообщение скалогрыз » 06.10.2009 14:06:34

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) в пользу табов и многооконности.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: многодокументное окно в Lazarus

Сообщение Light13 » 06.10.2009 14:26:20

под Ubuntu наблюдал такую картину (хотел добится чтобы в гноме на таскбаре всегда отображалось только одно окно программы)
проверить негде поэтому пишу по памяти ;)

в контексте главной формы:
Код: Выделить всё
  Application.CreateForm(TChildForm, ChildForm);
  ChildForm.Parant:=Self;
  ChildForm.Show;


и в итоге дочернее окно выводилось в области родительского
только уж очень неудобно - пришлось отказаться :)
Аватара пользователя
Light13
постоялец
 
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Re: многодокументное окно в Lazarus

Сообщение carrots » 06.10.2009 15:33:02

wofs писал(а):т.е. вы хотите сказать, что табами и панельками можно реализовать нечто подобное?

Естественно можно, можно и удобнее.
Можно формы ставить на любой TWinControl что удобнее чем MDI Child.
Код: Выделить всё
 
  frm := TForm.Create(Self);
  frm.Parent := ScrollBox1;
  frm.Show; 

Только наверное придется для них самому рамочки и заголовки делать. (Можно сделать потомка TForm который будет включать свою рамку автоматически если есть Parent)

Но как для меня - было-бы на много удобнее сделать его разными окнами. :roll: В таком случае их будет легко переключать на панели задач, можно будет размещать на разных рабочих столах (в линухе) и на разных мониторах, думаю не стоит от такого отказываться.
Аватара пользователя
carrots
постоялец
 
Сообщения: 138
Зарегистрирован: 28.03.2008 02:13:02

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36

Рейтинг@Mail.ru