Re: combobox
От: Кодт Россия  
Дата: 11.09.06 16:50
Оценка: +1 :))
Здравствуйте, teran2000, Вы писали:

T>как сделать чтобы строки в выпадающем списке combobox были видимыми и невидимыми (или доступными для выбора

T>и недоступными)? т.е. мне есть 10 строк, мне нужно исключить из выбора 4 штуки...

T>или всегда придется все удалять и добавлять заново через addstring?


Launching RSDN Telepathy Service.....
Service running.

MFC? WinAPI?

Во-первых, есть такая штука, как Owner Draw. То есть, рисовать элементы вручную.
И тут уже можно хоть делать их нулевой высоты, хоть выводить "неактивным" цветом.

Во-вторых, при попытке выбрать недопустимый элемент (событие CBN_SELENDOK) можно прыгать к следующему (или предыдущему) допустимому. Или просто игнорировать его.

В-третьих, похоже, что тебе не комбобокс нужен, а popup menu (раз по результату выбора запускается некое действие).
Ну так и сделай меню. Его можно не только в ресурсе, но и руками в программе создавать (CreatePopupMenu и т.д.) А показывать — по нажатии на кнопку.
Не слишком эстетично, но зато правдиво. Потому что меню — это действие, а комбобокс — это состояние.

Stopping RSDN Telepathy Service..
Service stopped.

Если я угадал, то кликни на бомбочку и выбери "Перенести в форум WinAPI | MFC | та платформа, с которой имеешь дело". Потому что дальнейшие технические детали относятся не к "проектированию UI вообще", а к решению конкретной задачи на конкретной платформе.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
combobox
От: teran2000  
Дата: 11.09.06 09:30
Оценка:
Привет всем,

как сделать чтобы строки в выпадающем списке combobox были видимыми и невидимыми (или доступными для выбора
и недоступными)? т.е. мне есть 10 строк, мне нужно исключить из выбора 4 штуки...

или всегда придется все удалять и добавлять заново через addstring?

03.10.06 18:49: Перенесено модератором из 'Пользовательский интерфейс: проектирование, usability' — Хитрик Денис
Re: combobox
От: wildwind Россия  
Дата: 11.09.06 10:52
Оценка:
Здравствуйте, teran2000, Вы писали:

T>как сделать чтобы строки в выпадающем списке combobox были видимыми и невидимыми (или доступными для выбора

T>и недоступными)? т.е. мне есть 10 строк, мне нужно исключить из выбора 4 штуки...

По какой причине они недоступны для выбора?
Re[2]: combobox
От: teran2000  
Дата: 11.09.06 12:05
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, teran2000, Вы писали:


T>>как сделать чтобы строки в выпадающем списке combobox были видимыми и невидимыми (или доступными для выбора

T>>и недоступными)? т.е. мне есть 10 строк, мне нужно исключить из выбора 4 штуки...

W>По какой причине они недоступны для выбора?



я загнал в комбокс 20 строк...каждая строка имеет имя и запускает какое то событие
различие этих событий идет через номер строки, т.е. я не читаю что написано в строке.
просто получаю номер выбранной строки и поехало....

но иногда нужно сделать так чтобы пользователь не смог запустить событие т.е.
событие по строке № такой то, должно быть не доступно и соответственно показывать эту
сроку тож не нужно.
.
есть два пути:
1) удалять строку из списка вообще,..
но тогда чтобы различать что за строка была выбрана придется ее читать т.е. просто
так по номеру строки не получится...а если она снова будет нужна, опять добавлять...
геморой, придется все переделывать...
2) просто как бы скрыть эту строку для пользователя...она есть! у нее есть номер, но выбрать
он ее не может....а когда она будет нужна, снова сделать видимой...

я что то потобное делал уже для выбора последовательного порта...но там то всего 4 строки
при загрузке приложения высвечивались только доступные порты и можно было делать
сканирование...я перезаписывал дроплист и читал значение в строке
а здесь у меня строк 25 будет..что то совсем не хочется каждый раз перезаписывать
дроплист комбокса...коряво как то

есть ли какая нить процедура типа hide item №2 в таком то comboxe?
Re[3]: combobox
От: Сергей  
Дата: 11.09.06 13:06
Оценка:
Здравствуйте, teran2000, Вы писали:

T>я загнал в комбокс 20 строк...каждая строка имеет имя и запускает какое то событие

T>различие этих событий идет через номер строки, т.е. я не читаю что написано в строке.
T>просто получаю номер выбранной строки и поехало....

Каждому пункту списка комбобокса можно ассоциировать какие-то собственные данные (одно 32-битное значение). Для этого нужно использовать сообщения CB_GETITEMDATA/CB_SETITEMDATA
Re: combobox
От: kero Россия  
Дата: 11.09.06 18:55
Оценка:
Здравствуйте, teran2000, Вы писали:

T>как сделать чтобы строки в выпадающем списке combobox были видимыми и невидимыми (или доступными для выбора

T>и недоступными)? т.е. мне есть 10 строк, мне нужно исключить из выбора 4 штуки...

T>или всегда придется все удалять и добавлять заново через addstring?


RSDN поиск => http://rsdn.ru/Forum/Message.aspx?mid=1274815&amp;all=1
Автор: Rampant
Дата: 15.07.05
(Неактивные элементы в ComboBox'е) =>

http://www.codeproject.com/combobox/disableditemscombobox.asp (CComboBox with disabled items)
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[3]: combobox
От: wildwind Россия  
Дата: 12.09.06 16:43
Оценка:
Здравствуйте, teran2000, Вы писали:

W>>По какой причине они недоступны для выбора?


T>я загнал в комбокс 20 строк...каждая строка имеет имя и запускает какое то событие

T>различие этих событий идет через номер строки, т.е. я не читаю что написано в строке.
T>просто получаю номер выбранной строки и поехало....

T>но иногда нужно сделать так чтобы пользователь не смог запустить событие т.е.

T>событие по строке № такой то, должно быть не доступно и соответственно показывать эту
T>сроку тож не нужно.

В таком случае по-моему лучше использовать ListBox, и в нем сделать строки недоступными для выбора (disabled). Возможно даже меню будет еще лучше.
Re[2]: combobox
От: teran2000  
Дата: 19.09.06 09:42
Оценка:
ок..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.