Вверх ↑
Администрация
Ответов: 15295
Рейтинг: 1519
#1: 2008-08-04 20:49:58 ЛС | профиль | цитата
nesco писал(а):
я добавил менеджеров на SVN. Посмотри.

Посмотрел(запустить к сожалению смогу только дома). Только одно замечания по оформлению:
- IndexManager как я понял сопоставляет индекс пункта элемента индексу иконки - не очень нравится такой подход. Получается, что для использования иконок в элементе одного менеджера не достаточно. Код не смотрел могу и ошибаться.

Дополнений несколько:
- думаю все интерфейсы нужно разместить в отдельном юните с их полным описанием. Т.е. в комментариях указать значение каждого метода и их параметры.
- по поводу привязок итомов элементов к иконкам. Один из вариантов это перевести инициализацию элемента данными так же на менеджер. Тогда можно бы было скажем в качестве данных посылать элементу таблицу, в которой один столбик - это имена(или индексы) иконок из менеджера, другой - данные, отображаемые в элементе, а все остальные то, что выдается элементом при выборе соответствующего итема в нем. Например для ListBox будут такие св-ва, осуществляющие этот интерфейс:

- DataManager=Источник данных
- IconField=Имя поля с данными об иконке(если не задано, иконки не используются)
- CaptionField=Имя поля с данными, отображаемыми в элементе
- DataField=Имена(через запятую) колонок, данные из которых выдаются элементом в поток при выборе соответствующего пункта.
эта модель применима для всех списковых и табличных элементов(а других у нас вроде и нет). Ну и кроме того она позволит в будущем легко писать DataSource для различных баз данных.

------------ Дoбавленo:

Такая модель скажем в будущем позволит написать DataSource, который выдает информацию о файловой системе и IconManager, который умеет выдавать иконки файлов. Тогда очень просто и легко можно на основе любого элемента сделать обозреватель файловой системы с именами файлов и их иконками. Только для этого нужно идентификацию иконок делать не по числу, а по строке. Или лучше в интерфейс добавить метод: GetIndexByName.
------------ Дoбавленo:

Запустил, посмотрел подробнее. Такие вопросы:
- почему без MODE_XXX не обойтись? В идеале сервер ничего о клиентах знать не должен. Т.е. хотелось бы интерфейс, который без явных заточек модно было применить к любому элементу
- без менеджера отрисовки элемент не выводит указанные для него иконки. Как тут поступать - пока не знаю, но вижу два варианта:
a) если уж одно без другого не работает, то иконки логичнее присоединять к менеджеру отрисовки, а не к самому элементу. В этом есть как минимум один минус - есть элементы, у которых можно задать иконки без реализации CustomDraw(TreeView к примеру). Т.е. может быть стоит присоединять менеджер туда, где он реально используется
b) если оставить как это сделано сейчас(и что все таки выглядит более логичным), то наверно надо дать элементу возможность самостоятельно рисовать иконки даже если нет DrawManager


В целом, если не обращать внимания на некоторые глюки отрисовки первой версии - выглядит все достаточно красиво и логично
карма: 27
0