Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.6 MB
Время: 0.084 c
9-1120306753
ProGamer
2005-07-02 16:19
2005.11.20
проблема с установкой гл сцены


4-1127286555
IceBeerg
2005-09-21 11:09
2005.11.20
Hook из приложения


14-1130596651
raiks
2005-10-29 18:37
2005.11.20
Статическое связывание *.exe, написанного на С++, и DLL, написанн


2-1130435828
Yus
2005-10-27 21:57
2005.11.20
Классы


3-1128617563
Michael5
2005-10-06 20:52
2005.11.20
Скролл "колесиком" в DBGrid работает только в видимой части грида





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский