Страница 1 из 1
Опрос о новой компоненте для псевдо MDI
Добавлено: 29.09.2012 00:05:10
alexs
В текущей версии FBManager-а
http://w7site.ru/fpc/fbm/ использую своеобразное MDI - что-то среднее между закладками и классическим MDI.
Во время разработки это ничем не отличается от дельфёвого MDI - те же стандартные окна.
А во время работы - автоматом окна прикрепляются к главной форме и управляются кнопками - закладками.
Сейчас эту технологию уже использую в нескольких своих рабочих проектах. В итоге практически готовы 3 визуальных компонент
1. MDI-панель - главная панель, на которой распологаются окна во время работы
2. MDI-закладки - закладки окон
3. MDI-копка закрытия окон.
Вопрос - включать эти компоненты в RxFPC. Будет ли это кому интересно?
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 29.09.2012 00:20:11
Ichthyander
Включай, IMHO очень полезно. Объединяет преимущества MDI и SDI
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 29.09.2012 00:42:18
B4rr4cuda
Интересно.
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 09.10.2012 14:42:37
alexs
Добавил компоненты в ревизии 2545.
Также добавлена демка на работу с компонентами.
Обзор:
На форму ложится 3 новых компоненты
TRxMDICloseButton - кнопка закрытия дочернего окна. Я её обычно ложу на паенель интрументов главного окна - прижимаю к правой стороне. Когда активно дочернее окно данная кнопка также отображает название дочернего окна.
TRxMDIPanel - панель, на которой находятся дочерние окна. Также через панель добавляются новые окна. Пример - в демке.
TRxMDITasks - панель навигации по открытым окнам. После открытия дочерних окон в данной панели появляются кнопки для каждого окна. Каждая кнопка имеет своё контекстное меню.
TRxMDIPanel имеет свойства для привязки панели навигации по открытым окнам (TRxMDITasks) и кнопки закрытия окна (TRxMDICloseButton). Перед начало работы необходимоустановить эти свойства.
Эти 3 компоненты позволяют настраивать интерфейс достаточно гибко.
Принимаю конструктивную критику и пожелания по доработке.
Добавлено спустя 1 минуту 13 секунд:
Если кто нарисует иконки для данных компонент - буду очень рад.
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 17.10.2012 00:50:50
alexs
Небольшое обновление компонента.
Перевёл ресурсы на русскй язык.
Добавил у TRxMDIPanel метод CloseAll.
Также работают пункты контекстных меню кнопоко дочерных оконо - "Закрыть Всё" и "Закрыть всё, кроме этого"
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 14.06.2013 23:25:57
alexs
Доработки компоненты.
Исправил ошибку с не верной передачей нажатий клавиш. Теперь когда форма не видна - она прячется через метод Form.Hide.
Также исправил ошибки с востановлением фокуса после переключения между окнами. Ранее текущий фокус не востанавливался.
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 15.06.2013 13:33:14
ronin
Принимаю конструктивную критику и пожелания по доработке.
потыкал посидел, то что сделал под себя:
1. У форм убрал F.BorderStyle:=bsNone F.Align:=alClient, чтобы режим работы повторял MDI режим, чтоб окна можно было таскать и менять размер
2. TRxMDIPanel унаследовал от TScrollBox, таким образом режим работы повторяет стандартный MDI (есть полосы прокрутки), пришлось убрать свойства BevelInner BevelOuter панели
3. Добавил пункт меню кнопки "восстановить", который в случае если форма уползла за видимые границы панели, восстанавливает его в дефолтном месте с дефолтным размером, чтоб не скроллить до окна
таким образом получается вроде как стандартный MDI режим но с плюшками rxMDI, а вообще идея понравилась

Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 15.06.2013 14:06:26
Kemet
Да, это то,чего мне не хватало, спасибо, alexs
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 15.06.2013 22:48:33
alexs
ronin
Ну а результатом поделиться?
PS
Я принципиально для себя не стал делать возможность изменения размера внутреннего окна - от этого только лишние проблемы. Да и работать это будет только в винде. В линухе во вложенном окне не отрисовывается заголовок окна. Надо самому его эмулировать.
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 17.06.2013 22:43:18
ronin
в общем пришлось пока отказаться от форм с границами, F.BorderStyle:=bsNone вернул, проблема в сохранении/загрузке размеров форм, при прикреплении формы к RxMDIPanel её размер хаотично увеличивается, гугл сказал что это старая проблема, решить не получилось по быстрому
ещё возникла необходимость не уничтожать форму при закрытии, пришлось тоже городить костыли, в некоторых случаях access violation вылетает, изредка, пока тоже не разобрался
какой адрес svn библиотеки? а то на
https://lazarus-ccr.svn.sourceforge.net ... ponents/rx последний коммит в апреле
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 17.06.2013 22:53:13
alexs
URL:
https://svn.code.sf.net/p/lazarus-ccr/svn/components/rxRepository Root:
https://svn.code.sf.net/p/lazarus-ccr/svnНасчёт уничтожения - я специально сдел так. Если есть небходимость - то можно подумать. В принципе надо перед вызовом обработчика OnClose устанавливать флаг уничтожения формы. Тода ты в своём обработчике OnClose можешь именить флаг на Hide. Надо подумать.
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 23.10.2014 11:20:02
sign
alexs писал(а): TRxMDITasks - панель навигации по открытым окнам. После открытия дочерних окон в данной панели появляются кнопки для каждого окна. Каждая кнопка имеет своё контекстное меню.
Не появляется контекстное меню.
Что не так у меня?
Лазарус 1.2.6.
FPS 2.6.4
{$DEFINE OLD_EDITBUTTON}
Поскольку с
{.$DEFINE OLD_EDITBUTTON}
не компилируется.
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 23.10.2014 16:32:53
alexs
Всё штатно
Правой кнопкой мышки на кнопке окна
Re: Опрос о новой компоненте для псевдо MDI
Добавлено: 24.10.2014 05:45:56
sign
Я ступил.
Подумал о контекстном меню в режиме csDesigning in ComponentState.