Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 01.12.2015
Сообщений: 37

Отобразить в Label значение в зависимости от выбранного ItemIndex в ComboBox

08.12.2015, 10:44. Показов 3521. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте)
Прошу помощи, пожалуйста)
Имеется combobox и item прописаны вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm9::FormShow(TObject *Sender)
{
int t=0; while(t<9) sl[t++]=new TStringList;
sl[0]->CommaText = "Медведь Bosch Тундра Тюмень Зверь Аком Multlu Varta Deka Topla";
sl[1]->CommaText = "1JZ 1JZ-GTE "1JZ-GTE WWTI" "2JZ-GTE WWTI" GA15DE 406(Волга) RB25 RB26 4FE 2LTE";
sl[2]->CommaText = ""Фильтр воздушный" "Фильтр топливный" "Фильтр салонный" "Уплотнитель резинки" "Тормозные колодки" "Диск сцепления" "Нулевик HKS" Свечи Хомуты";
sl[3]->CommaText = ""Резина good year R12" "Резина brigestone R14" "Разварки R14" "Резина Евро519 R15" "Резина Snow-Max R16" "Резина Sport3 R18" "Литьё vossen R18" "Литьё TRD R16" "Литьё Lowenhart"  "Литьё Mayhem" ";
sl[4]->CommaText = ""Arexons 7515" "Карандаш LIQUI MOLY 1900" "Очиститель LAVR NEXT LN5003" "Вода дистиллированная PINGO 85010-1" "Паста для очистки рук FILL INN FL064" "Защита и блеск покрышек KANGAROO 320454" "очиститель интерьера LIQUI MOLY 7629" "Освежитель кондиционера" "Universal автошампунь" "Наношампунь для очистки окон" "Антизапотиватель Antifog"";
sl[5]->CommaText = "Лукойл Mobil Elf Toyota Bp Motul LiquiMoly Castrol Shell Nissan ";
sl[6]->CommaText = ""Суппорт NSK" "Тормозные шланги армированные HPB" "Тормозной диск HPB" "Скобы суппортов HPB" "Колодки Brembo" "Вентилируемые тормоза Brembo" "Комплект тормозов GTR" "Brembo Тормозной диск" "TRD Торзные шланги" "TRD Скобы суппортов TRD" ";
sl[7]->CommaText = ""Антифриз BS" "Антифриз Green" "Антифриз RED" "Герметик радиатора BS" "Radiator flash" "Stop leak" "Антифриз Blue LM-3959" "очиститель радиатора" "Промывка системы охлаждения ZK" "Промывка радиатора HKS"";
sl[8]->CommaText = ""BN Sport комплект бамперов" "Vertex накладки" "Vossen накладки" "Multicam задний бампер" "Jump передний бампер" "I robot передний бампер" "I robot задний бампер" "GTR комплект накладок" "Комплект накладок TRD" "TRD бампер" ";
}
нужно чтобы при выборе item в combobox показалась label т.е цена
Например выбрали item медведь из sl[0] и он показал цену медведь,
а если выбираем уже другую, то показывает другую цену
Пробовал вот так ничего не получается(
C++
1
ComboBox4->itemindex0->lable1->visible->true;
нужно каждому item присвоить свой label но тут более 50 записей т.е нужно 50 label добавлять? или можно проще сделать? помогите пожалуйста...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.12.2015, 10:44
Ответы с готовыми решениями:

Присвоить значение переменной в зависимости от выбранного пункта ComboBox
Искал по форуму, нашёл похожую тему, но код оттуда выдаёт ошибку В целом: нужно при выборе из списка combobox итема a задать значение...

Заполнение одного ComboBox-а в зависимости от выбранного значения в другом ComboBox-е
Можно ли сделать так, чтобы если я выбирают первый пункт в первом ComboBox1, а во втором при определенном услови заполнялись нужные данные....

Заполнение ComboBox из БД в зависимости от выбранного значения в другом ComboBox
Т.к. я не профессионал, прошу сразу не закидывать палками )) Проблема следующая, грубо говоря на форме преславутые зависимые ComboBox,...

32
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
08.12.2015, 11:23
У вас, мне кажется, весьма своеобразный опыт общения с Builder'ом. Я думаю, будет лучше, если вы просто будете ставить очень конкретные вопросы по своей проблематике. Я не много понял из написанного, но...
- содержимое метки (Label) не статично; элементарно меняется присвоением ей нового значения из какого-либо списка фраз:
C++
1
   Label4->Caption = StringList24->Strings[ComboBox3->ItemIndex];
Добавлено через 2 минуты
Если вам удобен такой способ (примеры). Я просто по другому объяснять не умею, может другие... .
1
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
08.12.2015, 11:29
Цитата Сообщение от Kir12 Посмотреть сообщение
Имеется combobox и item прописаны вот так
В тексте ни слова про комбобокс, тут просто массив списков строк.
Кроме того, заданы неверно, даже на форуме подсветка кода показывает ошибки с лишними кавычками "
Цитата Сообщение от Kir12 Посмотреть сообщение
показалась label т.е цена
А где сама цена хранится?
Цитата Сообщение от Kir12 Посмотреть сообщение
Пробовал вот так ничего не получается
Ну сами названия в Комбобокс можно перенести так
C++
1
ComboBox1->Items->AddStrings(sl[0]);
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
08.12.2015, 11:35
Цитата Сообщение от mimicria Посмотреть сообщение
даже на форуме подсветка кода показывает ошибки с лишними кавычками
mimicria, это особенности вэб-редактора. Там в исходном виде обратная косая с кавычками (и так и надо), а после "обработки" только кавычки остаются; чтоб вместе с косой - нужно двойной обратный слэш применять. Я на это уже "наступил"... .
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,873
Записей в блоге: 12
08.12.2015, 11:39
Kir12, Смотри:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class TF : public TObject
{
    double FValue;
 
    double __fastcall GetValue()
    {
        return FValue;
    }
 
public:
    TF(double value) : FValue(value)
    {
    }
    __property double Value = {read = GetValue};
};
 
void FillList(TStringList *lst, String s)
{
    TStringList *t = new TStringList;
    t->Delimiter = ' ';
    t->StrictDelimiter = true;
    t->DelimitedText = s;
    for (int i = 0; i < t->Count; i++)
        lst->AddObject(t->Names[i], new TF(StrToFloat(t->ValueFromIndex[i])));
    delete t;
}
+
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm9::FormShow(TObject *Sender)
{
    int t = 0;
    while (t < 9)
        sl[t++] = new TStringList;
    FillList(sl[0], L"Медведь=200.5 Bosch=300.75 Тундра=250.7 Тюмень=220.5 Зверь=300.3 Аком=200.3 Multlu=100.6 Varta=180.4 Deka=209.35 Topla=190.99");
    // остальные аналогично
    ComboBox1->Items->Assign(sl[0]);
}
 
// и по OnChange комбобокса:
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
    TComboBox *cb = static_cast<TComboBox*>(Sender);
    Label1->Caption = dynamic_cast<TF*>(cb->Items->Objects[cb->ItemIndex])->Value;
}
Главное - не забывать удалять содержимое StringList-ов правильно.
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
08.12.2015, 11:43
volvo, а зачем его удалять? У него же стринг-листы - это такая местная "база данных".
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,873
Записей в блоге: 12
08.12.2015, 11:48
Цитата Сообщение от nick42 Посмотреть сообщение
а зачем его удалять?
Затем что если что-то было создано - оно должно быть удалено. Это не C# с его сборщиком мусора.
1
1 / 1 / 0
Регистрация: 01.12.2015
Сообщений: 37
08.12.2015, 12:25  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
class TF : public TObject
{
* * double FValue;
double __fastcall GetValue()
* * {
* * * * return FValue;
* * }
public:
* * TF(double value) : FValue(value)
* * {
* * }
* * __property double Value = {read = GetValue};
};
Я в unit.h вот этот код добавил вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public:     // User declarations
        __fastcall TForm9(TComponent* Owner);
        class TF : public TObject
{
    double FValue;
 
    double __fastcall GetValue()
    {
        return FValue;
    }
 
public:
    TF(double value) : FValue(value)
    {
    }
    __property double Value = {read = GetValue};
};
};
а вот этот
Цитата Сообщение от volvo Посмотреть сообщение
void FillList(TStringList *lst, String s)
{
* * TStringList *t = new TStringList;
* * t->Delimiter = ' ';
* * t->StrictDelimiter = true;
* * t->DelimitedText = s;
* * for (int i = 0; i < t->Count; i++)
* * * * lst->AddObject(t->Names[i], new TF(StrToFloat(t->ValueFromIndex[i])));
* * delete t;
}
вот сюда
C++
1
2
3
4
5
6
7
8
9
10
11
 void __FillList(TStringList *lst, String s);
{
    TStringList *t = new TStringList;
    t->Delimiter = ' ';
    t->StrictDelimiter = true;
    t->DelimitedText = s;
    for (int i = 0; i < t->Count; i++)
        lst->AddObject(t->Names[i], new TF(StrToFloat(t->ValueFromIndex[i])));
    delete t;
}
private:    // User declarations
а он ругается(
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,873
Записей в блоге: 12
08.12.2015, 12:32
Ну, и зачем класс внутрь класса запихивать? Вынеси его наружу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class TF : public TObject
{
    double FValue;
 
    double __fastcall GetValue()
    {
        return FValue;
    }
 
public:
    TF(double value) : FValue(value) {}
    __property double Value = {read = GetValue};
};
 
class TForm9 : public TForm
// ...
, и никогда не имей привычки что-то добавлять в published-секцию класса. Там рулит Билдер:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// ...
private: // User declarations
 
    void __fastcall FillList(TStringList *lst, String s)
    {
        TStringList *t = new TStringList;
        t->Delimiter = ' ';
        t->StrictDelimiter = true;
        t->DelimitedText = s;
        for (int i = 0; i < t->Count; i++)
        {
            lst->AddObject(t->Names[i],
                new TF(StrToFloat(t->ValueFromIndex[i])));
        }
        delete t;
    }
 
public: // User declarations
// ...
, и никто не ругается
1
1 / 1 / 0
Регистрация: 01.12.2015
Сообщений: 37
08.12.2015, 12:47  [ТС]
Теперь ругается на эту строчку, сделал как вы показали выше
C++
1
t->StrictDelimiter = true;
Только вот странно то что вроде как вы объявиле же его t в этой строчке
C++
1
TStringList *t = new TStringList;
почему ругается или я что то не правильно понимаю?(

Добавлено через 2 минуты
volvo, volvo,
0
1 / 1 / 0
Регистрация: 01.12.2015
Сообщений: 37
08.12.2015, 12:56  [ТС]
Вот эта вот ошибка(
Миниатюры
Отобразить в Label значение в зависимости от выбранного ItemIndex в ComboBox  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,873
Записей в блоге: 12
08.12.2015, 13:20
Опять Builder 6? Нет там этого свойства, если без него - тогда:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    void FillList(TStringList *lst, String s)
    {
        TStringList *t = new TStringList;
        t->Delimiter = ' ';
        t->DelimitedText = s;
        int c = t->Count;
        for (int i = 0; i < t->Count; i++)
        {
            lst->AddObject(StringReplace(t->Names[i], "_", " ", TReplaceFlags() << rfReplaceAll),
                new TF(StrToFloat(t->ValueFromIndex[i])));
        }
        delete t;
    }
, и в строке заменять все пробелы на символы подчеркивания, то есть, не так:
C++
1
2
    FillList(sl[0],
        L"Медведь=200.5 Bosch=300.75 \"Тундра Тундра\"=250.7 Тюмень=220.5 Зверь=300.3 Аком=200.3 Multlu=100.6 Varta=180.4 Deka=209.35 Topla=190.99");
, а вот так:
C++
1
2
    FillList(sl[0],
        L"Медведь=200.5 Bosch=300.75 Тундра_Тундра=250.7 Тюмень=220.5 Зверь=300.3 Аком=200.3 Multlu=100.6 Varta=180.4 Deka=209.35 Topla=190.99");
1
1 / 1 / 0
Регистрация: 01.12.2015
Сообщений: 37
08.12.2015, 13:35  [ТС]
volvo,
теперь вот эта ошибка
Миниатюры
Отобразить в Label значение в зависимости от выбранного ItemIndex в ComboBox  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,873
Записей в блоге: 12
08.12.2015, 13:53
Ну, значит, не судьба тебе эту функцию как метод класса использовать. Я ее изначально же не просто так написал отдельно, правда? Вот вынеси ее наружу, и все будет нормально
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
08.12.2015, 14:01
t->ValueFromUndex[i] === t->Values[i]

может так?
1
1 / 1 / 0
Регистрация: 01.12.2015
Сообщений: 37
08.12.2015, 14:07  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
t->ValueFromUndex[i] === t->Values[i]
пишет ValueFromUndex is not a member of "TStringList"
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
08.12.2015, 14:20
Цитата Сообщение от nick42 Посмотреть сообщение
может так?
- нет, это я ступил...

Добавлено через 55 секунд
Цитата Сообщение от Kir12 Посмотреть сообщение
ValueFromIndex
да нет там такой точно функции в 6-м.

Добавлено через 12 минут
Kir12, этим
Цитата Сообщение от Kir12 Посмотреть сообщение
t->ValueFromIndex[i] === t->Values[i]
я хотел сказать, что аналогом функции ValueFromIndex является другая (в 6-й версии). Можно её заменить на
C++
1
t->Values[t->Names[i]]
1
1 / 1 / 0
Регистрация: 01.12.2015
Сообщений: 37
08.12.2015, 14:31  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
t->Values[t->Names[i]]
Спасибо
Но он также ругается я не пойму куда эту функцию вытащить
C++
1
new TF(StrToFloat(t->Values[t->Names[i])));
точнее сказать не пойму куда её вынести наружу если за private ставить то не получается там он не принимает её(
а если хоть куда нибудь убрать вот эту строчку
C++
1
new TF(StrToFloat(t->Values[t->Names[i])));
сразу же начинает на эту строчку ругаться
C++
1
lst->AddObject(StringReplace(t->Names[i], "_", " ", TReplaceFlags() << rfReplaceAll),
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
08.12.2015, 15:13
Цитата Сообщение от Kir12 Посмотреть сообщение
сразу же начинает на эту строчку ругаться
А вы с синтаксисом в ладах? Если строчка не оканчивается "точкой с запятой" или фигурной скобкой, то следующая - её продолжение. И вся эта комбинированная строчка - привязка объекта с параллельной подменой символов подчеркивания в строке пробелами.
1
1 / 1 / 0
Регистрация: 01.12.2015
Сообщений: 37
08.12.2015, 16:10  [ТС]
Я вот так пробовал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
  void FillList(TStringList *lst, String s)
    {
new TF(StrToFloat(t->ValueFromIndex[i])))
        TStringList *t = new TStringList;
        t->Delimiter = ' ';
        t->DelimitedText = s;
        int c = t->Count;
        for (int i = 0; i < t->Count; i++)
        {
            lst->AddObject(StringReplace(t->Names[i], "_", " ", TReplaceFlags() << rfReplaceAll);
        }
        delete t;
    }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  void FillList(TStringList *lst, String s)
    {
 
        TStringList *t = new TStringList;
        t->Delimiter = ' ';
        t->DelimitedText = s;
        int c = t->Count;
        for (int i = 0; i < t->Count; i++)
new TF(StrToFloat(t->ValueFromIndex[i])))
        {
            lst->AddObject(StringReplace(t->Names[i], "_", " ", TReplaceFlags() << rfReplaceAll);
        }
        delete t;
    }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class TF : public TObject
new TF(StrToFloat(t->ValueFromIndex[i])))
 
{
 
double FValue;
double __fastcall GetValue()
{
return FValue;
}
public:
 
TF(double value) : FValue(value) {}
__property double Value = {read = GetValue};
};
 
class TForm9 : public TForm
{
не как не получается

Добавлено через 1 минуту
nick42,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.12.2015, 16:10
Помогаю со студенческими работами здесь

Запись ID выбранного элемента ComboBox в Label
Доброе время суток Все. Подскажите пожалуйста, как вывести id выбранной записи в comboxе? sqConnection.Open() Dim...

Отобразить в TextBox цену выбранного в ComboBox товара
Суть проблемы такова: - есть база данных c таблицей tblGoods с полями GoodsID, GoodsName, GoodsPrice; - есть comboBox1 в котором...

Хранится ли где-нибудь предыдущее значение ItemIndex компонента ComboBox?
Имеется несколько полей Edit, куда пользователь заносит данные. Так же имеется ComboBox, который отвечает за конвертацию занесённых данных...

Как узнать ID выбранного значения в ComboBox и вывести его в Label
Заполняю ComboBox1 так: SELECT status_id, status_name FROM tovar_status ORDER BY status_id ASC ...

Изменение даты в DateTimePicker-е в зависимости от выбранного элемента ComboBox
Здравствуйте! помогите пож-та разобраться в чем ошибка!при выборе в ComboBox строки например 1 месяц в dateTimePicker должна отображаться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru