Андрей |
Отправлено: 26.01.2005, 10:13 |
|
Не зарегистрирован
|
Подскажите пожалуйста как можно сделать такую штуку:
На форме существуют кнопки, поля текстового ввода и 30 чекбоксов:
Чксбоксы определяют графики( переменные) выводимые на ТЧарт
Нужно сделать так, чтобы пользователь мог выбрать только 5 из 30 чекбоксов. Остальные 25 при выборе 5 должны гаснуть и при отключении одного из уже выбранных вновь зажигаться
Так вот вопрос в том как перебрать потом чекбоксы по списку, для определения переменных ТЧарт??
Что-то типа индекса массива для конкретного чекбокса можно определить для последовательного перебора 30 чекбоксов??? |
|
Benish |
Отправлено: 26.01.2005, 12:07 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 67
|
М.б. поможет контейнер multimap из STL? |
|
Konstantine |
Отправлено: 26.01.2005, 12:55 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
ну массив так массив и делай:
в *h:
в OnCreate:
CODE | arr=new TCheckBox*[30];
arr[0]=CheckBox0;
// и т.д. |
в OnDestroy:
и всё... и обращаешься как arr[i]
Отредактировано Konstantine — 26/01/2005, 14:10
|
|
Андрей |
Отправлено: 26.01.2005, 14:56 |
|
Не зарегистрирован
|
Спасибо
Попрбую так |
|
Андрей |
Отправлено: 26.01.2005, 15:58 |
|
Не зарегистрирован
|
Не работает
int tem=ComboBox2->ItemIndex;
if(arr[i]->ItemIndex<6)
{
.......
}
temp имеет значение а arr вызывает АксцесВиалейшен
|
|
Konstantine |
Отправлено: 26.01.2005, 17:09 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
а i чему равно?
при таком обращении нельзя выходить за рамки массива (в данном случае i должно быть равно от 0 до 29 включительно)
ну вот мой проэкт (правда на 2 combo) — он у меня работает
|
|
olegenty |
Отправлено: 27.01.2005, 08:44 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
а я в таких случая map (а никакой не multimap) использую. намного удобнее, чем морочить себе голову массивами.
map гаранитрует уникальность ключа, multimap — нет, на то он и "multi".
|
|
Андрей |
Отправлено: 27.01.2005, 09:53 |
|
Не зарегистрирован
|
>а я в таких случая map использую
А можно пример??
Всем кто откликнулся спасибо
Я сделал так, пока работает правда использовал ComboBox со списком
bool vater=false,kotly=false,flowmeter=false;
TComponent *Temp;
for(int j=1;jComponentCount;j++)
{
if(this->Components[j]->ClassNameIs("TComboBox"))
{
Temp=this->Components[j];
if(dynamic_cast(Temp)->ItemIndex<=7)
{
QUERY+="vater."+BaseFields[dynamic_cast(Temp)->ItemIndex]+",";
vater=true;
}
if((dynamic_cast(Temp)->ItemIndex>7)&&(dynamic_cast(Temp)->ItemIndex<=13))
{
QUERY+="kotly."+BaseFields[dynamic_cast(Temp)->ItemIndex]+",";
kotly=true;
}
if(dynamic_cast(Temp)->ItemIndex>13)
{
QUERY+="flowmeter."+BaseFields[dynamic_cast(Temp)->ItemIndex]+",";
flowmeter=true;
}
} // end if
}// end for
для сборки запроса в базу в зависимости от выбора в КомбоБоксах
|
|
Benish |
Отправлено: 27.01.2005, 12:53 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 67
|
QUOTE (olegenty @ 27/01/2005, 09:46) | а я в таких случая map (а никакой не multimap) использую. намного удобнее, чем морочить себе голову массивами.
map гаранитрует уникальность ключа, multimap — нет, на то он и "multi". |
Идея была в том, чтобы использовать повторяющиеся ключи для отличия выбранных чекбоксов от невыбранных. Хотя можно и нооборот сделать, т.е. указатели на чекбоксы сделать ключами. Тогда map. |
|