Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ComboBox, Values and Names... 
:(
    Опции темы
Aline
Дата 16.3.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Когда то я использовала поле Values, только для List контрола. В ComboBox тоже есть такие свойства, для установки имени Names, которое будет отображаться в списке и самого значения, values, которое можно получить , выбрав строку. Но вот бьюсь и никак не могу задать эти поля. Как это правильно сделать?

Я делаю так:

 for (int k2 = 0; k2 < 14; ++k2){
   SubCPanel[k1]->ComboBox->Items->Add(Buttons[i].ComboValuePl[k2]);
   AnsiString s = ",";
   SubCPanel[k1]->ComboBox->Items[k2].NameValueSeparator = s.operator [](1);
}

Он автоматически должен разделить на имя и значение или как?
И как потом получить значение определенной строки?

Это сообщение отредактировал(а) Aline - 16.3.2009, 10:50
PM MAIL   Вверх
mrbrooks
Дата 16.3.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306




Цитата(Aline @  16.3.2009,  10:49 Найти цитируемый пост)
Когда то я использовала поле Values, только для List контрола. В ComboBox тоже есть такие свойства, для установки имени Names, которое будет отображаться в списке и самого значения, values, которое можно получить , выбрав строку. Но вот бьюсь и никак не могу задать эти поля. Как это правильно сделать?

Ты имеешь ввиду индекс выделенной строки?
Код

ComboBox->ItemIndex;

PM MAIL   Вверх
Aline
Дата 16.3.2009, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



mrbrooks, нет, не индекс. Может я не совсем понятно выразилась или ты не сталкивался с этим: есть пара имя и значение. Т.е. строке присваивается имя определенное и оно отображается в списек. А значение хранится где то в памяти и пользователю не видно. 
К примеру, в списке какие то строковые данные, понятные обычному пользователю, а в программе ты используешь значения, связанные с этими именами, например числовые.
Например, есть список городов и тогда, Имя(Names) - это город, а значение (Values) - телефонный код города.
Т.е. пользователь просто выбирает город, а программа уже знает какой код с ним связан. Это просто к примеру, может так будет понятней.
PM MAIL   Вверх
mrbrooks
Дата 16.3.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Aline, понятно.

Вся фишка в том, что список должен состоять из строк (то бишь ComboBox->Items)
Вася=555-77-99
Коля=532-89-89
Хуан Педрос=222-33-77
Чекинья Гонзаго=587-98-98

тогда - например в событие OnChange ComboBoxa - ты можешь получить по индексу инфу раздельно.
Код

ShowMessage(ComboBox1->Items->Names[ComboBox1->ItemIndex] +'\n'+
                        ComboBox1->Items->Values[ComboBox1->Items->Names[ComboBox1->ItemIndex]]);

Собственно щелкнув по Хуану Педросу получишь его имя и телефон уже раздельно.
PM MAIL   Вверх
Aline
Дата 16.3.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



mrbrooks, ну это понятно, а как заполнить то Names и Value, чтобы потом было что получать?
PM MAIL   Вверх
Anikmar
Дата 16.3.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Заполните стандартным способом строками Левая часть = правая часть (как я понял)
PM MAIL ICQ   Вверх
dumb
Дата 16.3.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Цитата(Aline @  16.3.2009,  11:49 Найти цитируемый пост)
Т.е. строке присваивается имя определенное и оно отображается в списек. А значение хранится где то в памяти и пользователю не видно.

Код

int somenumber = 1234;
// записать
ComboBox1->Items->Objects[ComboBox1->ItemIndex] = reinterpret_cast<TObject*>(somenumber);
// прочитать
int num = reinterpret_cast<int>(ComboBox1->Items->Objects[ComboBox1->ItemIndex]);


Values - это не скрытое значение, это просто часть строки после разделителя.
PM MAIL   Вверх
mrbrooks
Дата 17.3.2009, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Anikmar @  16.3.2009,  17:20 Найти цитируемый пост)
Заполните стандартным способом строками Левая часть = правая часть (как я понял) 

 smile 

Aline, В ComboBox должны быть строки 
A=1
Б=2
В=3
Тогда при парсинге строки A - это Name, 1 - это Value.

Однако есть подозрение что ты хотела что бы A отображалось а 1 видно не было. Тут я думаю нужно использовать дополнительный TStringList
PM MAIL   Вверх
Aline
Дата 17.3.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



mrbrooks, ну да, я это и имела ввиду. Ведь с List контролом так и было
PM MAIL   Вверх
mrbrooks
Дата 17.3.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Aline, Тогда без дополнительного TStringList не обойтись.  smile

Добавлено через 1 минуту и 9 секунд
Причем если информация будет в нем редактироваться - прийдется его ориентировать на файл или даже БД - в зависимости от объема данных.
PM MAIL   Вверх
dumb
Дата 17.3.2009, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



в моем предыдущем посте есть пример кода, реализующего то, что требуется. при добавлении элемента можно также использовать AddItem("строка", reinterpret_cast<TObject*>(somenum))

Цитата(Aline @  17.3.2009,  08:46 Найти цитируемый пост)
Ведь с List контролом так и было 
было КАК? коллекции строк и средства работы с ними в ListBox'е и ComboBox'е совершенно одинаковы.
PM MAIL   Вверх
Aline
Дата 18.3.2009, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



dumb, да я не помню как, поэтому и спрашиваю здесь. Помню только, что было всё очень просто и значение Name видно было в списке, а Value в список не выводилось
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.