Common controls своими руками - вторая версия

Здесь можно найти готовые «кирпичики» — части кода, пригодные для построения более крупных проектов, а также решения различных типовых и не очень задач на VB.

Модератор: Brickgroup

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Common controls своими руками - вторая версия

Сообщение Antonariy » 16.05.2008 (Пт) 16:40

С историей развития можно ознакомиться здесь.

Рефакторинг наконец-то произошел, теперь не очень стыдно и кирпич сделать. :) Все дефиниции разложены по соответствующим модулям, можно подключать и отключать нужные контролы по отдельности. Добавлен новый контрол - TabStrip. В старых контролах добавилось событий, все процедуры инициализаций попрятаны внутрь (кроме ImgList'ов), все, что можно, сохраняется в пропертибэгах, кое-что переименовалось и унифицировалось. Поэтому версия подросла на единичку и совсем не совместима с первой. Старые известные глюки и баги никуда не делись, возможно появились новые. :)
Вложения
ucComCtl2.rar
(121.97 Кб) Скачиваний: 312
Лучший способ понять что-то самому — объяснить это другому.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 16.05.2008 (Пт) 21:53

Не найдено:
Код: Выделить всё
MISSING: Ole Guid and interface definitions 3.0
...\OleGuids3.tlb


Доставьте пожалуйста? :roll:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 17.05.2008 (Сб) 9:28

Он есть в этом архиве.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.05.2008 (Сб) 10:35

[Хакер] :: "Правило производства строиметериалов" гласит, что кирпич должен быть максимально автономным. Т.е. всё, что требуется для использования кирпича должно быть вместе с этим кирпичём.

А у тебя получается, для того чтобы воспользоваться кирпичем надо посетить ещё некоторые топики и скачать там некоторые архивы.

Поэтому, советую включить эту TLB-шку в архив или хотя бы убрать два эти поста и поместить ссылку на TLB-шку в первый постинг.


Посмотрел код, но пока не пробовал юзать. Могу сказать, что всё будет намного лучше и быстрее, если все объявления констант и API-функций вынести в TLB.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Сообщение arthur2 » 19.05.2008 (Пн) 16:28

В общем-то, здорово, но
можно подключать и отключать нужные контролы по отдельности
чтобы действительн разделить, приходится несколько повозиться. Не то, чтобы сильно - но нужно же мне к чему-то придраться :lol:

Отделил себе тулбар. Энум для borderstyle используется во всех контролах, а объявлен в листвьере. В структуре IPAOHookStruct Ctl объявлен, опять же, как листвью. По мере отделения я уронил бейсик раза четыре :?

Может, дабы действительно можно было взять и посмотреть на все по-отдельности, завести под каждый контрол свой тестовый проект? Было бы удобней. Наглядней - точно.
Артур
 
   

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 19.05.2008 (Пн) 17:31

Тип для borderstyle должен быть определен только в одном публичном модуле. Либо наплодить аналогичных типов везде, где используется borderstyle. Модуль mIOleInPlaceActivate со структурой IPAOHookStruct нужен лишь для TreeView и ListView.
Лучший способ понять что-то самому — объяснить это другому.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Сообщение arthur2 » 19.05.2008 (Пн) 18:23

в одном публичном модуле

А почему именно в контроле, не в обычном модуле?

mIOleInPlaceActivate

Уже понял.

И всё-таки, по отдельности было бы наглядней.
Артур
 
   

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 19.05.2008 (Пн) 18:44

А почему именно в контроле, не в обычном модуле?

Обычный модуль не может быть публичным. Либо класс либо контрол.

Я преследовал цель сделать компактней, а не наглядней. Для наглядности они все и так есть по отдельности в нете. Вот дойдут руки до переноса всего, что можно в tlb - будет совсем компактно и автономно.
Лучший способ понять что-то самому — объяснить это другому.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 20.05.2008 (Вт) 12:21

Antonariy
Действительно, лучше как можно больше различного барахла вынести в TLB. В том числе внутренние константы и enum-ы
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.05.2008 (Вт) 13:40

Ну константы и энумы - лишь дело вкуса, при компиляции они одинаково скомпилируются, а вот вызовы функций - настоятельно рекомендуется.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 20.05.2008 (Вт) 16:14

Хакер
Эио чтобы они по модулям не болтались как неприкаянные.
Изображение


Вернуться в Кирпичный завод

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

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

    TopList