![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| jimbo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.6.2009 Где: Южно-Сахалинск Репутация: нет Всего: нет |
Привет всем!
MSVS08 На диалог кидаю листвью. репорт вью ставлю. Заполняю колонки и 3 айтема кидаю ручками. Хочу, чтобы у меня первая колонка выглядела как комбобокс. (все сабайтемы) возникли трудности 1) Как сделать, чтобы при нажатии на комбик - он раскрывался. я так понял я просто жму не на комбобокс а на лист.Что сделать, чтобы лист не перехватывал нажатие и комбик открывался? может его вручную открыть? я пока проверяю. может кто логичнее решение предложит) 2) как фиксировать ширину столбца или столбцов --------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 5 Всего: 64 |
1. создайте один комбобокс. при клике по айтему заполняйте комбобокс нужными значениями и отображайте его в нужном месте. А раскроете его "вручную".
Добавлено через 2 минуты и 35 секунд не забудьте листвиев сделать родителем комбобокса -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Вообще-то комбобокс выглядит в таблице ужасающе. Но есть приемчик, подсмотренный мною у BCGP: комбобокс создается и позиционируется, но НЕВИДИМЫМ. Позиционируется так, чтобы низ совпал с ячейкой. По нажатию на итем (или можно свою кнопочку нарисовать), просто посылаем CB_SHOWDROPDOWN. Дальше - стандартно: ловите в лист-вью уведомление CBN_SELCHANGE или CBN_SELENDOK и принимаете значение. По уведомлению CBN_CLOESUP комбобокс можно удалить...
Первая колонка умеет создавать эдит. Если нужно ограничить выбор списком значений, то редактирование лучше отключить. -------------------- ... |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 5 Всего: 64 |
Ну я это и имел ввиду. Видать не точно выразился Может вы имели ввиду скрыть, а не удалить? -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Есть разные методы: можно создавать окно только на время, когда оно нужно, а потом удалять. А можно просто прятать (т.е. чего прятать, оно и так невидимо...). В втором случае при клике нужно поле передвинуть, перезаполнить (вдруг что-то изменилось). в общем, разница с созданием заново ничтожна. По большей части, это дело вкуса. -------------------- ... |
|||
|
||||
| jimbo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.6.2009 Где: Южно-Сахалинск Репутация: нет Всего: нет |
а что делать со скролллингом?
и такой момент. есть в таблице колонки, допустим имя - время - значение у колонки значение может быть несколько значений. если одно - оно сразу вписывается в таблицу. если несколько - я хотел ставить комбобокс. у меня возникли сложности со скроллингом - рисуется много комбиков и не сразу все удаляются. плюс при нажатии на самый последний комбик - вылазиет не он а другоу. потом когда все рисуется - нормально. ваш метод с удалением - решает вопрос с рисовкой, я так полагаю. но не понятно тогда становится а можно ли сделать выбор? т.е. постоянно мы видим заполнееную таблицу. а где можно делать выбор - мы не видим, т.к. комбика нет:( --------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
jimbo, ты читаешь, что тебе пишут? У меня такое ощущение, что нет.
Комбик вообще один на всю таблицу и не виден. Используется только когда пользователь на итем кликнет. Какие могут проблемы со скроллингом? Насчет того, как показать пользователю, что возможен выбор, могут быть варианты. Например, рисовать кнопку в итеме самому (через OwnerDraw или CustomDraw). И не создавать кнопку а именно рисовать (фигнюшку, похожую на кнопку). А можно и не париться. Если по клику на итем не начинать редактирование, а вывешивать список, пользователь наверняка догадается, что надо выбирать. -------------------- ... |
|||
|
||||
| jimbo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.6.2009 Где: Южно-Сахалинск Репутация: нет Всего: нет |
я не тупой - я все понимаю.
я создавал комбик на каждый айтем, где надо делать выбор, чтобы пользователь видел где он возможен а где нет. Вот допустим, вы все выбрали, а потом решили изменить - а куда тыркать ? не видно!! Вот вариант с подсветкой мне больше нравится. только не пойму, как нарисовать в уголке сабайтема треугольник, чтобы дать пользователю понять что там список может быть, и одновременно не мешать видеть всю таблицу. Про то, что комбик можно один иметь я догадался, решаю вопрос с уведомлением пользователя. про скролинг я написал - может кто знает как решить проблему, тогда и вопрос с уведомлением пропадает, так как комбиков много. про рисование кнопки- ну это не эстетично мне кажется, надо что-то маленькое и не мешающее --------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 5 Всего: 64 |
Earnest, понял вас
Ну так это и хорошо. Представьте если в каждой ячейке будет Комбик - это же будет выглядеть ужасно. Поэтому обрабатывайте клик по Итему и потом создавайте (или отображайте, как вам удобнее) Комбик по тем же координатам что и Итем и автоматом разворачивайте список. Если вы хотите показать пользователю, что в "этой" ячейке расположен список - рисуйте что-нибудь, что будет об этом говорить (стрелочку вниз или треугольник в уголке (как в Excel), например). Где это сделать написал Earnest: Ещё напишите обработчик для Комбика OnExit, в котором скрывайте Комбик (также его нужно скрывать после того как пользователь выбрал значение). Это будет гарантировать, что Комбик скроется если пользователь начнёт прокручивать список ListView или переключится на другой контрол. Это должно решить вашу проблему с кашей из Комбиков. Это сообщение отредактировал(а) artsb - 10.2.2010, 10:55 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Если сам комбобокс не виден, то его выпадающий список прекрасно сам скроется, когда выбор сделан или ESCAPE или переключение фокуса. В том то и смысл, что париться особо не надо. CBN_CLOSEUP дает возможность узнать, что список закрылся, и можно что-то дополнительно сделать - но не в смысле скрытия, комобокс прекрасно сам с этим справится.. jimbo, никто и не говорит, что ты тупой. Просто обсуждая с кем-то свою проблему, не надо предполагать, что твой собеседник только о ней и думает, и может понимать тебя с полуслова. Старайся четче излагать свои мысли, сообщая необходимые и достаточные сведения, вот и все. Что касается рисования треугольника, есть функция DrawFrameControl, которая тебе поможет, с type=DFC_SCROLL и state=DFCS_SCROLLDOWN. Писать ради этого полный OnwerDraw обидно и муторно, но можно, по-моему, обойтись CustomDraw - обработать что-то вроде PostPaintItem (точных слов не помню, читай про NM_CUSTOMDRAW для лист-вью). Добавлено через 3 минуты и 19 секунд Если все же хочешь париться с тысячей комбобоксjs - ну вдруг... Лови WM_HSCROLL и WM_VSCROLL на листконтроле, вызывай стандартную обработку, а потом вычисляй, куда уехали итемы и перемещай комбики. Вполне реально... но я бы не стала... -------------------- ... |
|||
|
||||
| jimbo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.6.2009 Где: Южно-Сахалинск Репутация: нет Всего: нет |
Всем спасибо за ответы!
Earnest, я извиняюсь. да я много чего не написал, моя ошибка, признаю. Много комбобоксов - это конечно круто - но муторно. решил таскать один по всей таблице. вопрос с уведомлением пользователя решил осветлением текста сабайтема. стрелочка вниз конечно прикольно, но мозолит глаза(мне так показалось
готов не согласиться. комбобоксы во всю колонку - очень даже нормально. интуитивно понятнее, что в этой колонке надо выбрать значения. что это не просто текстовое поле, а то, что можно или нужно задать. это как чек-боксы во всю колонку - сразу понятно, что надо делать выборку или установить значение - да/нет. тема закрыта --------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Тебе так нужно сделать ?
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| jimbo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.6.2009 Где: Южно-Сахалинск Репутация: нет Всего: нет |
да, именно так надо было. уже сделал. всем спасибо
или у тебя есть несколько другая модель реализации? Пожалуйста - расскажи идею, будет очень познавательно) --------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Это сообщение отредактировал(а) Dem_max - 12.2.2010, 11:35 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| jimbo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.6.2009 Где: Южно-Сахалинск Репутация: нет Всего: нет |
интересно, вы читали что было в ветке этой? собственно тоже самое тут и описывается
ничего нового - но надеюсь поможет след поколению все равно спасибо за код) --------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |