Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Оцените компонент   Найти похожие ветки 

 
Gero ©   (2005-10-28 22:10) [0]

Оцените компонент

Прошу посмотерть и дать оценку следующему компоненту:

TGrMDIBar — панель с кнопками для переключения между MDI-окнами.
Обладает довольно большим количеством настроек.
Компонент достачтоно кинуть на форму, все остальное он делает сам.

Вот демо-приложение, демонстрирующее его возможности:
http://dmclient.fatal.ru/_files/grmdidemo.zip

Кроме всего прочего полностью поддерживаются XP-темы, присутствует OwnerDraw.

Соавтором компонента является Ашот Товмасян, более известный вам как Kaif.

Любая критика приветствуется.


 
Eraser ©   (2005-10-28 22:19) [1]


> Gero ©   (28.10.05 22:10)

Интересная весч, на сколько знаю, конкурентов нету (по крайней мере заслуживающих внимания).


 
Piter ©   (2005-10-28 22:34) [2]

Конкуренты точно есть.

Надо только на torry.net зайти и набрать что-нибудь типа TTabControl, MDI...


 
Eraser ©   (2005-10-28 22:44) [3]


> Piter ©   (28.10.05 22:34) [2]

Таб контролов полно, а полноценных taskbar"ов не видел.


 
Джо ©   (2005-10-28 22:52) [4]

Похоже, хорошая штука.


 
Kolan ©   (2005-10-28 22:56) [5]

Понравилось. Так исходники не дашь, на продажу готовишь?


 
Kolan ©   (2005-10-28 22:58) [6]

А кнопочку закрытия у FierFox позаимствовал? :)))


 
Piter ©   (2005-10-28 23:02) [7]

Kolan ©   (28.10.05 22:56) [5]
Так исходники не дашь


не даст :)


 
Gero ©   (2005-10-28 23:15) [8]


> Так исходники не дашь, на продажу готовишь?

Угу, хотелось бы )
Впереди самый страшный этап — написание документации :)

> А кнопочку закрытия у FierFox позаимствовал? :)))

;)


 
Умник   (2005-10-28 23:17) [9]

Не смотрел, потому что такое не надо. Ни бесплатно, ни за деньги.


 
Gero ©   (2005-10-28 23:32) [10]

Вот пара скриншотов демки со включенными темами:

http://dmclient.fatal.ru/_files/grmdi1.png — XP Blue

http://dmclient.fatal.ru/_files/grmdi1.png — XP Silver (много открытых окон)


 
Gero ©   (2005-10-28 23:34) [11]


> http://dmclient.fatal.ru/_files/grmdi1.png — XP Silver (много
> открытых окон)

http://dmclient.fatal.ru/_files/grmdi2.png — XP Silver (много открытых окон)


 
Kerk ©   (2005-10-28 23:37) [12]

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


 
Gero ©   (2005-10-28 23:44) [13]


> И без стилей тоже, если можно, выложи :)

Конечно, пожалуйста:

http://dmclient.fatal.ru/_files/grmdi3.png
http://dmclient.fatal.ru/_files/grmdi4.png
http://dmclient.fatal.ru/_files/grmdi5.png


 
Zeqfreed ©   (2005-10-29 00:07) [14]

Gero ©   (28.10.05 22:10)
Создал два новых дочерних окна (кнопка New). Главное и одно из дочерних окон развернул. При переключении с развернутого дочернего на нормальное через кнопки на панели заметно мерцание кнопок в заголовке днормального дочернего окна, да и вообще не понятно - оно активизируется или нет. Настройки не трогал. Тема XP Silver.

Так должно быть? Или глючит кого-то из нас двоих? (компонент/меня)
=)


 
Zeqfreed ©   (2005-10-29 00:19) [15]

Zeqfreed ©   (29.10.05 0:07) [14]
От количества дочерних окон вроде ничего не меняется, от изменения настроек вроде тоже. Я так полагаю, что я первый у кого такое безобразие, но наверно я такой не единственный :)

Ещё было бы неплохо при перетаскивании кнопок как-то указывать позицию в которую они будут вставлены, а то не удобно так.

Ну а в целом, свою, правда достаточно узкую, задачу хорошо выполняет.


 
Gero ©   (2005-10-29 01:00) [16]


> При переключении с развернутого дочернего на нормальное
> через кнопки на панели заметно мерцание кнопок в заголовке
> днормального дочернего окна

Это глюк MDI. Проявляется при включенных темах. Мой компонент частично его нейтрализует (без него кроме кнопок мерцает еще и рамка окна, можешь проверить на любом другом приложении, использующем MDI).

> да и вообще не понятно - оно активизируется или нет

Это потому что окна одинаковые )

> Ещё было бы неплохо при перетаскивании кнопок как-то указывать
> позицию в которую они будут вставлены, а то не удобно так.

Да, это планируется.

Спасибо за критику!


 
Gero ©   (2005-10-29 01:00) [17]

Удалено модератором


 
Defunct ©   (2005-10-29 01:37) [18]

> Gero ©  
> Оцените компонент
хм.. весьма не дурно.

> Любая критика приветствуется.
Хочешь критики - дай хоть dcu. А так - нечего критиковать, то что ты выложил смотрится очень хорошо и функционально пОлно.


 
jack128 ©   (2005-10-29 01:51) [19]

От TBX, видимо, унаследовал глюк. При клике на Open Document появляется диалог открытия файла. Поводи этим диалогом над формой..


 
GuAV ©   (2005-10-29 02:11) [20]

Я бы требовал:
- Опция: умение принять фокус для клавиатурного переключения (влево-вправо, PgDn,PgUp)
- MDI или нет, при клике по окну, в т.ч. для показа системного меню, окно должно становится активным. Т.е. при показ сист. меню без переключения к выбранному окну мне совершенно не нравится.

Существует ли предок, который реализует ту же визуальность, но без MDI окон ?

 procedure ScrollBottom;
 procedure ScrollTop;

это что ?

Не хватает объявления TGrBarButton в Component info


 
Gero ©   (2005-10-29 11:10) [21]


Defunct ©   (29.10.05 01:37)
> Хочешь критики - дай хоть dcu.

Пожалуйста:
http://dmclient.fatal.ru/_files/grmdi.zip

В архиве dcu для Delphi6 и Delphi7 и демо-программа.

Если нужны dcu без вылезающих сообщений, могу выслать на мыло.

jack128 ©   (29.10.05 01:51)
> От TBX, видимо, унаследовал глюк.

Хм. А TBX здесь причем?

> При клике на Open Document появляется диалог открытия файла.

У меня в демке нет OpenDocument. И диалог нигде не появляется...
Короче, ничего не понял.

GuAV ©   (29.10.05 02:11)
> - Опция: умение принять фокус для клавиатурного переключения
> (влево-вправо, PgDn,PgUp)

Именно фокус? А чем недостаточен функционал наподобии Ctrl+Tab?

> - MDI или нет, при клике по окну, в т.ч. для показа системного
> меню, окно должно становится активным. Т.е. при показ сист.
> меню без переключения к выбранному окну мне совершенно не
> нравится.

OK, сделаем опционально.

> Существует ли предок, который реализует ту же визуальность,
> но без MDI окон ?

Нет, все завязано на окнах.

>  procedure ScrollBottom;
>  procedure ScrollTop;
>
> это что ?

Если ScrollType = stPage, то переключение происходит не влево-вправо, а вверх-вниз.

> Не хватает объявления TGrBarButton в Component info

Declaration:
 TGrMDIBar = class(TToolWindow)

?


 
lookin ©   (2005-10-29 11:17) [22]

А нельзя ли переключатели на таскбаре еще опционально заменять на пункты меню во вкладке типа Window? И добавить туда же пункты подменю "Скрыть/показать все" и пр. Лично у меня похожая схема управления окнами, но у меня еще задействован Toolbar, и я не хочу его дополнять кнопками с именами окон, зато хочу управлять окнами через главное меню...


 
Gero ©   (2005-10-29 11:39) [23]


> lookin ©   (29.10.05 11:17)

Ну здесь же вся суть компонента в кнопках на таскбаре. Ну будет кнопок — не будет и компонента.


 
Anatoly Podgoretsky ©   (2005-10-29 12:14) [24]

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


 
lookin ©   (2005-10-29 12:18) [25]

[23] Gero ©   (29.10.05 11:39)

Так ведь кнопки/меню можно сделать опциями. По умолчанию - кнопки, по желанию - меню... Компонент никуда ведь от этого не денется, зато будет все же более функциональным...


 
Gero ©   (2005-10-29 12:25) [26]


> не похоже на таскбар, а если он еще только на верху, совсем
> не нравится.

Я старался сделать схожесть с оперой.
А почему не похоже? Вы имеете ввиду с включенными темами?
Да, наверное, имеет смысл сделать опционально и такую прорисовку.

> а если еще только на верху, совсем не нравится.

Ну наверху он потому что стоит Align = alTop. Где его разместить — дело программиста.

> Насчет конкурентов они есть и сильные.

Можете навскидку назвать кого-нибудь сильного?


 
Gero ©   (2005-10-29 12:26) [27]


> lookin ©   (29.10.05 12:18)

А WindowMenu чем не устраивает?


 
lookin ©   (2005-10-29 12:27) [28]

[27] Gero ©   (29.10.05 12:26)

А у WindowMenu нет возможностей таскбара?


 
Anatoly Podgoretsky ©   (2005-10-29 12:28) [29]

Gero ©   (29.10.05 12:25) [26]
А ты делай схожим не с оперой, а с Виндоус. Или тогда не называй это таскбар или делай похожим, как по внешнему виду, так и по поведению, остальное как альтернатива. Ведь не для своего же удовлетворения, а для конечных пользователей.

Не назову, поскольку постороннии компоненты не использую, а информация случайная из конференций. Попробуй сам поискать у лидеров и на файловых архивах, начиная с Торри.


 
Question   (2005-10-29 12:29) [30]

2 Gero
расскажите о вкладе соавтора


 
Gero ©   (2005-10-29 12:35) [31]


Anatoly Podgoretsky ©   (29.10.05 12:28)
> делай похожим, как по внешнему виду, так и по поведению,
> остальное как альтернатива.

Да, вероятно так и будет. Спасибо.

> Попробуй сам поискать у лидеров и на файловых архивах, начиная
> с Торри.

На торри видел пару подобных комопнентов, скачивал демки — сама убогость.


 
Gero ©   (2005-10-29 12:36) [32]


> Question   (29.10.05 12:29)
> расскажите о вкладе соавтора

Если соавтор захочет, он сам расскажет.


 
jack128 ©   (2005-10-29 12:44) [33]

Gero ©   (29.10.05 11:10) [21]
Хм. А TBX здесь причем?

У меня в демке нет OpenDocument. И диалог нигде не появляется...
Короче, ничего не понял.

lol. извени, просто я скачал твою, а потом запустил tbx"овскую(в одной папке лежали), которая тоже кнопки для mdi окон в bar пихает, поэтому и спутал :-)

Gero ©   (29.10.05 11:10) [21]
> Не хватает объявления TGrBarButton в Component info

Declaration:
TGrMDIBar = class(TToolWindow)
?

нет, все новые свойства BAR"a ты указал, народ интересуется какие есть свойства у кнопок на баре? Например, меняется ли название кнопки при смене заголовка соответствующего окна?  Если изменяеся, то можно ли этот функционал отключить и тд и тп..


 
Ломброзо ©   (2005-10-29 12:47) [34]

Кстати, есть смежный вопрос. Пусть мы имеем, к примеру, приложение для работы с базой данных, исполненное в MDI. Из каждой корневой MDI-формы может вызываться множество дочерних форм, а из тех в свою очередь - множество внучатых и так далее. Каким образом инициализировать эти дочерние формы, передавая им контекст родителя (например, идентификатор текущей записи)? Самое простое решение - в лоб - это передавать дочерним формам некие параметры в конструкторе или при помощи свойств. Однакож по опыту - это очень кропотливый и трудоёмкий процесс. Я подумал вот что: ведь каждое "дерево" иерархически связанных форм - это некое подобие apartment`a в COM (другая аналогия - нить, thread, поток, который может получать доступ к TLS), обладающее своим контекстом. Отчего бы не реализовать некий класс, являющийся контейнером для параметров контекста каждой иерархии форм? Таким образом, каждая создаваемая в иерархии родительская форма при инициализации может записывать в контекст любые данные, причём должна быть гарантия, что дочерняя форма, обращаясь к этому контексту, получит доступ к данным именно родителя (а также данным других форм этой же иерархии), а не другой одноуровневой формы этого же приложения.
Как бы вот реализовать эту идею программно?


 
Anatoly Podgoretsky ©   (2005-10-29 12:47) [35]

Gero ©   (29.10.05 12:35) [31]
Мое участие ограничено просмотром и анализом скриншотов.
Жаль что не могу подсказать лидеров, память у меня короткая.


 
Gero ©   (2005-10-29 12:50) [36]


jack128 ©   (29.10.05 12:44)
> нет, все новые свойства BAR"a ты указал, народ интересуется
> какие есть свойства у кнопок на баре?

Сорри, был невнимателен. Да, нужно будет включить. Спасибо.

> меняется ли название кнопки при смене заголовка соответствующего
> окна?  Если изменяеся, то можно ли этот функционал отключить

Меняется. Думаешь, есть надобность в отключении?


 
GuAV ©   (2005-10-29 12:58) [37]


>> Не хватает объявления TGrBarButton в Component info
>
>Declaration:
> TGrMDIBar = class(TToolWindow)
> ?


Не это, я про   property Buttons[Index: Integer]: TGrBarButton read; - что можно получить из TGrBarButton ?

>   function  ButtonRect(Index: Integer): TRect;
ИМХО лучше GetButtonRect .

>  function  Dragged: Boolean;
У TControl есть function  Dragged: Boolean; ?

>   function  ButtonCount: Integer;
А это - public property ButtonCount: Integer read ;


> > - Опция: умение принять фокус для клавиатурного
>переключения
>> (влево-вправо, PgDn,PgUp)
>
> Именно фокус? А чем недостаточен функционал наподобии
> Ctrl+Tab?


Тем, что неочевидно, кто следующий.

Идея ещё такая - заместо апдауна если не помешается - шеврон ( >> ), как в панелях инструмента IE. Хотя не знаю надо ли, это совсем другое будет.


 
Gero ©   (2005-10-29 13:27) [38]

> lookin ©   (29.10.05 12:27)
> А у WindowMenu нет возможностей таскбара?

Что-то не очень тебя понимаю. WindowMenu это одно, таскбар — другое. Использовать и то и то никто ведь не мешает.

GuAV ©   (29.10.05 12:58)
> Не это, я про   property Buttons[Index: Integer]: TGrBarButton
> read; - что можно получить из TGrBarButton ?

Да я понял. Но вобще-то получить немного можно:

property MDIBar: TGrMDIBar read FMDIBar;
property State: TGrButtonStates read FState;
property Form: TForm read FForm;
property Index: Integer read GetIndex write SetIndex;
function Active: Boolean;

Вот и все.

> У TControl есть function  Dragged: Boolean; ?

У TControl? Нет вроде.

> ИМХО лучше GetButtonRect .

Согласен.

> >   function  ButtonCount: Integer;
> А это - public property ButtonCount: Integer read ;

Можно и так, хотя особой разницы не вижу.

> Тем, что неочевидно, кто следующий.

SwitchMode = smBar и кнопки переключаются в порядке расположения на панели.

> Идея ещё такая - заместо апдауна если не помешается - шеврон
> ( >> ), как в панелях инструмента IE.

Я подумаю на этим. Возможно, сделаю.

Благодарю за критику.


 
Zeqfreed ©   (2005-10-29 13:32) [39]

Gero ©   (29.10.05 1:00) [16]

> Это глюк MDI. Проявляется при включенных темах. Мой
> компонент частично его нейтрализует (без него кроме
> кнопок мерцает еще и рамка окна, можешь проверить на
> любом другом приложении, использующем MDI).

Да, вроде везде такой эффект. Только вот если переключать через Ctrl-Tab то никакого мерцания нет, в чем эти способы переключения отличаются?


 
jack128 ©   (2005-10-29 13:38) [40]

Gero ©   (29.10.05 12:50) [36]
Думаешь, есть надобность в отключении?

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


 
GuAV ©   (2005-10-29 13:46) [41]


> SwitchMode = smBar и кнопки переключаются в порядке
> расположения на панели.

Ну ладно, уговорил.


> > Идея ещё такая - заместо апдауна если не помешается
>- шеврон
>> ( >> ), как в панелях инструмента IE.
>
> Я подумаю на этим. Возможно, сделаю.


Кстати, глянь на палитру компонентов, на которой они не умещаются, например Indy Servers. Там есть и скроллер и шеврон, и, надо же, не ссорятся ;)


> Можно и так, хотя особой разницы не вижу.

За небольшим исключением, вроде IndexOf, методы - глаголы, свойства (кроме событий) - существительные.


 
SPeller ©   (2005-10-29 13:53) [42]

В плоском режиме при таскании драгом кнопок, коряво отрисовываются границы кнопок, над которыми водишь.


 
SPeller ©   (2005-10-29 13:55) [43]

И не только граница, но и фон у нажатых кнопок, и полупрозрачный образ таскаемой кнопки.

ЗЫ: на ХР со стандартной темой.


 
lookin ©   (2005-10-29 13:59) [44]

[38] Gero ©   (29.10.05 13:27)
>>WindowMenu это одно, таскбар — другое. Использовать и то и то никто
>>ведь не мешает.

Ну, все рекламные ходы типа N в одном потому и имеют преимущество, что не надо "и того, и другого". А впрочем, я согласен...


 
LordOfRock ©   (2005-10-29 14:03) [45]

Неплохо было-бы сделать кнопку закрытия на каждой кнопе/вкладке на твоём компоненте. Как Опере 8.5


 
Gero ©   (2005-10-30 00:37) [46]


> Zeqfreed ©   (29.10.05 13:32)
> Только вот если переключать
> через Ctrl-Tab то никакого мерцания нет, в чем эти способы
> переключения отличаются?

Почему-то в случае отсылки WM_MDINEXT переключается нормально. Буду думать над этим.

GuAV ©   (29.10.05 13:46)
> Кстати, глянь на палитру компонентов, на которой они не
> умещаются, например Indy Servers. Там есть и скроллер и
> шеврон, и, надо же, не ссорятся ;)

А где там шеврон?

SPeller ©   (29.10.05 13:53)
> В плоском режиме при таскании драгом кнопок, коряво отрисовываются
> границы кнопок, над которыми водишь.

Да, есть такой глюк, спасибо.

> LordOfRock ©   (29.10.05 14:03)
> Неплохо было-бы сделать кнопку закрытия на каждой кнопе/вкладке
> на твоём компоненте. Как Опере 8.5

Да, наверное сделаю такое, хоть лично мне такая фича кажется очень неудобной.


 
LordOfRock ©   (2005-10-30 00:45) [47]

>хоть лично мне такая фича кажется очень неудобной.

Добавь параметр изменения фичи.


 
Piter ©   (2005-10-30 01:11) [48]

Gero ©   (30.10.05 0:37) [46]
Да, наверное сделаю такое, хоть лично мне такая фича кажется очень неудобной


согласен. Ибо промахнуться очень легко.

Гораздо удобнее, когда вкладку закрывает двойной клик.


 
Loginov Dmitry ©   (2005-10-30 10:33) [49]

Неплохой компонентик... Глючит однако свойство MinimizeAction при значениях maPrevious (принцип работы не совсем понятен) и при значении maHide (в данном случае вылетает ошибка с текстом List index out of boundx (-1) при попытке закрыть "спрятанное" окошко кнопочкой "Закрыть" в том случае, если все кнопки-переключатели потрели фокус.


 
GuAV ©   (2005-10-30 12:27) [50]


> А где там шеврон?

В мыло ответил.


 
Piter ©   (2005-10-30 12:44) [51]

GuAV ©   (30.10.05 12:27) [50]
> А где там шеврон?

В мыло ответил.


ни фига себе... ТАКАЯ СЕКРЕТНАЯ ИТНФОРМАЦИЯ? :))


 
Gero ©   (2005-10-30 14:34) [52]


> Loginov Dmitry ©   (30.10.05 10:33)

Спасибо, будем исправлять.



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

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.62 MB
Время: 0.029 c
14-1130225479
Антоний
2005-10-25 11:31
2005.11.20
В силу одной из веток ниже...


14-1130523052
Gero
2005-10-28 22:10
2005.11.20
Оцените компонент


1-1130499343
Шурик Ш
2005-10-28 15:35
2005.11.20
Вопрос про события TValueListEditor


2-1131090450
dreamse
2005-11-04 10:47
2005.11.20
Как определить есть ли у программы доступ в каталог ?


2-1131219516
gans1
2005-11-05 22:38
2005.11.20
delphi