Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строки рука об руку с массивами, Как сопоставить..... 
:(
    Опции темы
zarden
Дата 12.1.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Люди добрые подскажите можно ли сделать так, чтобы строкам компонента например ComboBox сопоставлялиь элементы одномерного массива.
Т. е , допустим при выборе пользователем первой строки ComboBox в какое нибудь выражение, невидимое для пользователя, подставлялся нулевой элемент массива, при выборе второй строки - первый элемент и т.д.
PM MAIL   Вверх
Partizan
Дата 12.1.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Думаю, тебе следует использовать свойство ItemIndex...
если выбрана первая строка, то ComboBox->ItemIndex == 0;
если вторая, то ComboBox->ItemIndex == 1; и так далее...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
zarden
Дата 12.1.2006, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



void __fastcall TForm1::Button1Click(TObject *Sender)
{
int A[2];
A[0] = 10;
A[1] = 20;
if (ComboBox1->ItemIndex==0)
Edit1->Text = IntToStr(A[1]);
Смысл вопроса заключается в том что: нельзя ли например уйти от того чтобы при каждом варианте выбора строки комбобокса расписывать оператором if какой именно элемент массива записывается в Edit.
Грубо говоря хотелось бы чтобы код выглядел примерно так:
If(ComboBox1->ItemIndex==i)
Edit1->Text = IntToStr(A[i]);
т.е чтобы номерам строк однозначно соответствовали такие же номера элементов массива: нулевой строке - нулевой элемент, первой строке - первый и т.д.
PM MAIL   Вверх
TIGERоX
Дата 12.1.2006, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


начинающий...
*


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

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



Код

   const int cols = 2;
   int a[cols] = {1,2};
   if( ComboBox1->ItemIndex<cols && ComboBox1->ItemIndex>=0)
      Edit1->Text = IntToStr(a[ComboBox1->ItemIndex]);

PM MAIL   Вверх
Partizan
Дата 13.1.2006, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



если размерность массива совпадает с количеством строк, то можно просто ограничиться следующим:
Код

int A[2];
A[0] = 10;
A[1] = 20;
Edit1->Text = IntToStr(A[ComboBox1->ItemIndex]);


З.ы. не забываем, что индексация в массиве также начинается с 0....
в Вашем же коде при выборе первой строки в Edit выведется 20...
в приведённом мной - 10...

З.з.ы. но в общем случае(т.е. если размерность массива не обязательно совпадает с кол-вом строк), делайте как предлагает TIGERоX

З.з.ы. Не забывайте, что если ни один айтем не выбран(такое может быть например при запуске приложения), то ItemIndex содержит -1


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
zarden
Дата 18.1.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Огромное спасибо Partizan и TIGERоX. Сделал как вы предложили и все пошло. Тока вот не могу понять одного в случае когда кол-во строк не совпадает с кол-вом элементов массива для чего служит двойной &&?
Буду очень признателен если ответите на этот вопрос
PM MAIL   Вверх
Partizan
Дата 20.1.2006, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



в примере TIGERоX'a подразумевается что количество строк в комбобоксе больше, чем количество строк в массиве...

if( ComboBox1->ItemIndex<cols && ComboBox1->ItemIndex>=0)

таким образом проверяется во первых:
if
не выходит ли индекс выбранного айтема за грани массива...//ComboBox1->ItemIndex<cols
и &&
вообще выбран хоть один айтем ComboBox1->ItemIndex>=0(в случае если не выбран, АйтемИндекс==-1)

так вот оператор && представляет собой не что иное как т.н. "логическое и"


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
zarden
Дата 20.1.2006, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за разъяснения. Меня вот интересует как наиболее качественно подойти к самостоятельному изучению билдера с++? Может книгу какую посоветуете? Я вот приобрел издание Архангельского. Классная книга, но некоторые вещи просто непонятны. Не могу нащупать необходимый мне порядок изучения материалов
PM MAIL   Вверх
Partizan
Дата 20.1.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



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


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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