Доработка стандартного контрола DataGrid

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Доработка стандартного контрола DataGrid

Сообщение ger_kar » 21.08.2012 (Вт) 8:32

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

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

Для решения этих задач есть такие варианты (как мне думается):
1) Реагировать на какое либо готовое стандартное событие контрола и посылать в обработке этого события нужные оконные сообщения.
При всей простоте способ очень не надежный и не универсальный и если для решения самой первой задачи я думаю его приспособить будет возможно, то для всего остального вряд ли.
2) Универсальный для таких случаев - сабклассинг.

А теперь собственно сам вопрос. При реализации сабклассинга на какие оконные сообщения реагировать для решения указанных задач и соответственно какие оконные сообщения посылать окну для реализации задуманного? А может и вообще не сообщения, а вызовы WInAPI необходимы или комбинация и того и другого.
Конечно есть утилита Spy++ и я уже посмотрел, какие сообщения приходят окну, но их настолько много, что изучения всей этой каши потребует (для меня по крайней мере) просто огромную уйму времени. Я конечно так и буду делать, но вопрос задаю в надежде на то, что кто-то подобное уже делал для этого контрола или аналогичного и может буквально в нескольких словах, а точнее указав на нужные оконные сообщения сильно облегчить мне задачу.
Бороться и искать, найти и перепрятать

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Доработка стандартного контрола DataGrid

Сообщение ark » 21.08.2012 (Вт) 9:08

ger_kar писал(а):Универсальный для таких случаев - сабклассинг
Не знаю, как для DataGrid, но для CommonControls - нет. Дело в том, что 6-е CommonControl'ы - вещь в себе, болезненно реагируют на субклассинг и со 'стандартными' виндовскими сообщениями не всегда дружат. Во всяком случае, отрисовывются они самостоятельно, если только WM_PAINT не перехватывать и все врукопашную рисовать. Есть подозрение, что 6-я грида из той же серии.
Теперь вопрос - для чего это нужно? Если для конкретной текущей задачи (серии похожих задач) - может, лучше поискать альтернативу? На диске 6-го васика, если мне память не изменяет, даже был соответствующий контрол от Infragistic'а. Да и всети можно поискать (условно) бесплатные. Как вариант - свой контрол на базе WebBrowser'a с подключением mshtml

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

Re: Доработка стандартного контрола DataGrid

Сообщение Хакер » 21.08.2012 (Вт) 9:47

ark писал(а):Дело в том, что 6-е CommonControl'ы - вещь в себе, болезненно реагируют на субклассинг и со 'стандартными' виндовскими сообщениями не всегда дружат. Во всяком случае, отрисовывются они самостоятельно, если только WM_PAINT не перехватывать и все врукопашную рисовать. Есть подозрение, что 6-я грида из той же серии.

Кому они сдались, 6-ые суррогатные контролы? Есть 5-ые контролы, которые используют стандартные контролы из comctl32.dll.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Доработка стандартного контрола DataGrid

Сообщение ark » 21.08.2012 (Вт) 10:25

Хакер писал(а):Есть 5-ые контролы
Ну, так и я их использую. Я просто подозреваю, что DataGrid из той же серии. 6-я FlexGrid тоже получает массу WM_USER+фиг_знает_что

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Доработка стандартного контрола DataGrid

Сообщение ger_kar » 21.08.2012 (Вт) 11:20

Хакер писал(а):Кому они сдались, 6-ые суррогатные контролы?
Что значит суррогатные? В чем их основное отличие от 5-х контролов. И вообще 5-е для VB5 создавались? И что все контролы от MS, где есть 6 лучше не юзать?
Бороться и искать, найти и перепрятать

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

Re: Доработка стандартного контрола DataGrid

Сообщение Хакер » 21.08.2012 (Вт) 11:43

ger_kar писал(а):Что значит суррогатные?

Значит что comctl32.ocx (5-ая версия) является переходником-обёрткой к контролам из comctl32.dll.
А mscomctl.ocx (6-ая версия) не является*, там все контролы реализованы вручную с нуля.

* — есть исключения. Ребар и по-моему что-то ещё взято всё-таки из comctl32.ocx.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Доработка стандартного контрола DataGrid

Сообщение ger_kar » 21.08.2012 (Вт) 12:01

В результате стили XP поддерживаться не будут как я понимаю. Видимо из за этого контролы MSforms2.0 стили не поддерживают?
Бороться и искать, найти и перепрятать

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Доработка стандартного контрола DataGrid

Сообщение ger_kar » 24.08.2012 (Пт) 6:27

ark писал(а):На диске 6-го васика, если мне память не изменяет, даже был соответствующий контрол от Infragistic'а.
Не знаю кто такой Infragistic :) , но на просторах интернета нашел таки альтернативный контрол грида с хорошим функционалом от ComponentOne - True DBGrid Pro 7.0 который пока удовлетворяет всем моим потребностям. Пока осваиваю его. Грид от Infragistic'а я не нашел, но вообще интересно было узнать он сопоставим с TDBGrid по возможностям. Может кто-то юзал и знает?
Бороться и искать, найти и перепрятать

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: Доработка стандартного контрола DataGrid

Сообщение VBTerminator » 24.08.2012 (Пт) 18:47

ark писал(а):На диске 6-го васика, если мне память не изменяет, даже был соответствующий контрол от Infragistic'а.

Ark, уж не это ты имел в виду?

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Доработка стандартного контрола DataGrid

Сообщение ger_kar » 24.08.2012 (Пт) 20:32

"Это" - на вид оказалось вполне симпатичным :)
А вот про другие аспекты хотелось услышать отзывы, тек кто его уже поюзал.
Бороться и искать, найти и перепрятать

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Доработка стандартного контрола DataGrid

Сообщение ark » 09.09.2012 (Вс) 10:32

VBTerminator писал(а):Ark, уж не это ты имел в виду?

Не помню точно уже - может, это был и ComponentOne - помню, там папка была PowerPack с разными плюшками.

vice4
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 31.05.2011 (Вт) 7:01

Re: Доработка стандартного контрола DataGrid

Сообщение vice4 » 14.09.2012 (Пт) 10:37

Я насчет цен не понял они (контролы) идут не по отдельности, а составе пекета и стоят порядка 1000$ ?


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 48

    TopList