Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337

Количество в ListBox

06.03.2014, 11:30. Показов 8010. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Есть выборка количества строк из ListBox так : Form1->ListBox1->Count.

Необходимо эту выборку (т.е. Form1->ListBox1->Count) сделать как переменную, для того, чтобы вставить ее в функцию и сделать переменной, зависящей от Edit2.

Делаю так:

C++
1
2
3
4
5
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
    if(Edit2->Text.Length()>0)
    Form1->ListBox1->Count = StrToInt(Edit2->Text);
}
Компилиться, но при вводе значения в Edit2- ошибка процессора (stop и т.д.)
Где ошибка?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2014, 11:30
Ответы с готовыми решениями:

При выделении строки в ListBox отображать ее в Edit, где можно отредактировать и заменить в ListBox-е
Подскажите пожалуйста как зделать задачку:При выделении строки в поле ListBox даная строка отображалась в Edit, где можна его...

Перенести данные из ListBox на форме в Listbox на PageСontrol
Доброго времени суток! Как заставить данные которые вносятся на Form в ListBox перенести на Listbox, который находится на Pagekontrol?

Возможно ли при выборе через opendialog заносить в ListBox имена файлов, а при чтении из ListBox получать путь к файлам?
Возможно ли при выборе через opendialog заносить в ListBox имена файлов, а при чтении из ListBox получать путь к файлам?

36
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
11.04.2014, 12:49  [ТС]
Студворк — интернет-сервис помощи студентам
Вот вложение
Вложения
Тип файла: rar 1 модификация.rar (5.60 Мб, 4 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33474 / 21573 / 8249
Регистрация: 22.10.2011
Сообщений: 37,027
Записей в блоге: 12
11.04.2014, 12:55
В каком порядке и что надо делать, чтобы вообще хоть что-то отработало? У меня то ошибки записи файлов, то вообще непонятное поведение (просто висит форма и ничего не делает)
0
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
11.04.2014, 12:58  [ТС]
1. Ведите числовую последовательность - 1234567
2. Выберите "Обратный"
3. Нажмите "Расчет"
Появятся две таблицы в листбоксах

Потом вводите число читаемых строк- 5040
Скорость маленькую ставите- например 20.
Нажимаете Запуск.

P.S. п.2- если выберите Прямой - все отработает корректно. Если обратный- ошибка описанная выше
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33474 / 21573 / 8249
Регистрация: 22.10.2011
Сообщений: 37,027
Записей в блоге: 12
11.04.2014, 13:15
Никогда не думай, что запись в корень системного диска разрешена всем. У меня она запрещена, поэтому пришлось переписывать INI-файл в другое место.

Теперь внимание, вопрос: когда работает ветка
C++
1
if(Form1->RadioButton1->Checked == true)
, у тебя в Form1->LB_Contents добавляются все all->Count значений. Когда работает ветка
C++
1
if(Form1->RadioButton2->Checked == true)
, то добавляются в этот же LB_Contents строки только во втором цикле, а это всего all->Count / 2 (в первом цикле в LB_Contents ничего не добавляется, заметь). А в самом начале присутствует строка
C++
1
 Form1->ListBox1->Count = all->Count;
. Так вот в чем вопрос: что делать виртуальному ListBox-у, если фактически в нем Count/2 элементов, а счетчик выставлен в Count? Правильно, на Count/2 + 1-вом выдавать ошибку.
0
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
11.04.2014, 14:57  [ТС]
Да, согласен, не у всех в корень системного диска разрешена запись данных.

Что касается вопроса, получается я превысил вводимое и фактическое значение?
А как тогда быть? Дело в том, что ветка if(Form1->RadioButton2->Checked == true)- это обратная таблица от if(Form1->RadioButton1->Checked == true)- то есть будет иметь тоже все 5040 значений. Обратная, это значит, что последняя строчка становится первой, предпоследняя второй и первая- последней (относительно RadioButton1)

Добавлено через 1 час 32 минуты
UI, а если вы не поставите во 2 случае count / 2 - то неполучится перевернуть исходную таблицу
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33474 / 21573 / 8249
Регистрация: 22.10.2011
Сообщений: 37,027
Записей в блоге: 12
11.04.2014, 15:14
Цитата Сообщение от Pir12345 Посмотреть сообщение
Обратная, это значит, что последняя строчка становится первой, предпоследняя второй и первая- последней
Это значит, что достаточно:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
void __fastcall CalcThread::SyncCalcThread()
{
    Form1->LB_Contents->Clear();
    Form1->ListBox1->Count = all->Count;
 
    Form1->ListBox2->Items->Assign(all);
    String userData = Form1->LabeledEdit1->Text;
    Form1->ListBox1->Items->BeginUpdate();
 
    std::auto_ptr<TStringList>L(new TStringList);
 
    for (int i = 0; i < all->Count; i++)
    {
        L->Clear();
        String s = "";
        if (i == 0)
        {
            switch (Form1->RadioGroup1->ItemIndex)
            {
            case 0:
                all->Exchange(0, 0);
                break;
            case 1:
                all->Exchange(1, 0);
                break;
            case 2:
                all->Exchange(2, 0);
                break;
            case 3:
                all->Exchange(3, 0);
                break;
            case 4:
                all->Exchange(4, 0);
                break;
            case 5:
                all->Exchange(5, 0);
                break;
            }
        }
        L->CommaText = all->Strings[i];
        for (int j = 0; j < L->Count; j++)
            s += userData[StrToInt(L->Strings[j])];
        Form1->ListBox1->Items->Add(s);
        Form1->LB_Contents->Add(s);
    }
 
    if (Form1->RadioButton2->Checked == true)
    {
        // "Развернуть" LB_Contents
        int lc = Form1->LB_Contents->Count / 2;
        for (int i = 0; i < lc; i++)
        {
            Form1->LB_Contents->Exchange(i, Form1->LB_Contents->Count - 1 - i);
        }
    }
 
    Form1->ListBox1->Items->EndUpdate();
}
(после заполнения LB_Contents просто проверить, не выбрана ли опция "Обратный", и если выбрана - развернуть список)
1
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
11.04.2014, 15:28  [ТС]
UI, если так записать как вы показали, то при обратном расчете выбивает в ошибку List Index out of bounds (0), нажимаю ОК, потом List Index out of bounds (1),...(2) и т.д.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33474 / 21573 / 8249
Регистрация: 22.10.2011
Сообщений: 37,027
Записей в блоге: 12
11.04.2014, 15:37
Цитата Сообщение от Pir12345 Посмотреть сообщение
при обратном расчете выбивает в ошибку
Правда? Где?
Миниатюры
Количество в ListBox  
0
11.04.2014, 15:43
0
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
11.04.2014, 15:46  [ТС]
SatanaXIII добрый день!Да, тут используется это. Вроде вы говорили что на разные вопросы заводить разные темы
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
11.04.2014, 15:50
Цитата Сообщение от Pir12345 Посмотреть сообщение
Вроде вы говорили что на разные вопросы заводить разные темы
Все верно.
0
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
11.04.2014, 15:52  [ТС]
UI, да заработал вроде на моём компиляторе. Только еще между 52 и 53 строчкой вставляю код (как в прямом варианте) - он не срабатывает:
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
L->Clear();
        String s = "";
        if (i == 0)
        {
            switch (Form1->RadioGroup1->ItemIndex)
            {
            case 0:
                all->Exchange(0, 0);
                break;
            case 1:
                all->Exchange(1, 0);
                break;
            case 2:
                all->Exchange(2, 0);
                break;
            case 3:
                all->Exchange(3, 0);
                break;
            case 4:
                all->Exchange(4, 0);
                break;
            case 5:
                all->Exchange(5, 0);
                break;
            }
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
11.04.2014, 16:00
для надежности бы так сделать

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
L->Clear();
        String s = "";
        if (i == 0)
        {
            switch (Form1->RadioGroup1->ItemIndex)
            {
            case 0:
                all->Exchange(0, 0);
                break;
            case 1:
                all->Exchange(1, 0);
                break;
            case 2:
                all->Exchange(2, 0);
                break;
            case 3:
                all->Exchange(3, 0);
                break;
            case 4:
                all->Exchange(4, 0);
                break;
            case 5:
                all->Exchange(5, 0);
                break;
           default: ShowMessage("=(");
            }
0
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
14.04.2014, 09:41  [ТС]
UI здравствуйте! Не срабатывает код радиокнопок, если добавить их в ваш код из 26 поста, вот так:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
if (Form1->RadioButton2->Checked == true)
    {
        // "Развернуть" LB_Contents
        int lc = Form1->LB_Contents->Count / 2;
        for (int i = 0; i < lc; i++)
        {
 
        L->Clear();
        String s = "";
        if (i == 0)
        {
            switch (Form1->RadioGroup1->ItemIndex)
            {
            case 0:
                all->Exchange(0, 0);
                break;
            case 1:
                all->Exchange(1, 0);
                break;
            case 2:
                all->Exchange(2, 0);
                break;
            case 3:
                all->Exchange(3, 0);
                break;
            case 4:
                all->Exchange(4, 0);
                break;
            case 5:
                all->Exchange(5, 0);
                break;
            }
 
 
             }
            Form1->LB_Contents->Exchange(i, Form1->LB_Contents->Count - 1 - i);
        }
    }
 
    Form1->ListBox1->Items->EndUpdate();
}
То есть в ветку if (Form1->RadioButton2->Checked == true) нужно тоже добавить радиогроуп1, аналогично как в ветке if (Form1->RadioButton1->Checked == true). Где может быть ошибка?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33474 / 21573 / 8249
Регистрация: 22.10.2011
Сообщений: 37,027
Записей в блоге: 12
14.04.2014, 10:48
Цитата Сообщение от Pir12345 Посмотреть сообщение
если добавить их в ваш код из 26 поста, вот так:
Я больше на твои вопросы отвечать не буду. Я показал, как надо изменить код, чтобы добиться решения поставленной задачи. Ты опять все исковеркал, и теперь говоришь, что оно не работает. Ну, коверкай дальше, может быть, когда-нибудь тебе повезет, и ты решишь задачу, которая уже была решена в 26-ом посте...
0
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
14.04.2014, 10:53  [ТС]
UI, в 26 посте задача решена, да. Большое спасибо! Просто в обратном режиме-radiobutton2 не работают 6 радиокнопок.
0
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
02.05.2014, 15:42  [ТС]
UI, Здравствуйте!
Помогите пожалуйста. В выложенном выше проекте есть switch-и где в кейсах идет по 2-3 цвета, то есть исходные цвета разбиваются на составляющие. В итоге получается не 7 цветов (как заносится изначально в массив 7 чисел), а выводится на экран 12 цветов. Нужно каждый из этих уже 12 столбцов иметь возможность отключать через CheckBox ы (12 CheckBox ов). Как можно это сделать? Сложность в том, что по сути изначала 12 элементов в строке не формируется(их изначала 7)
Пробовал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
case 1: { Form1->Color = (TColor)RGB(255,0,0);
                            if( RadioGroup2->ItemIndex == 1 )
                                Msg = (0x90 + (60 * 0x100) + (0x7f * 0x10000));
                            } break;
                    case 2: { if (CheckBox1->Checked == true)
                                                       
                                                        Form1->Color = (TColor)RGB(255,0,0);
                            Form1->Repaint();Sleep(MySleep);
                            Form1->Color = (TColor)RGB(255,0,0);
                            Form1->Repaint();Sleep(MySleep);
                            Form1->Color = (TColor)RGB(0,153,51);
                            if( RadioGroup2->ItemIndex == 1 )
                            Msg= (0x90 + (60 * 0x100) + (0x7f * 0x10000));
                            midiOutShortMsg(Out,Msg);
                            Msg= (0x90 + (60 * 0x100) + (0x7f * 0x10000));
                            midiOutShortMsg(Out,Msg);
                            Msg= (0x90 + (65 * 0x100) + (0x7f * 0x10000));
                            } break;

То есть перед каждым цветом ставил соотвественно
C++
1
if (CheckBoxN->Checked == true)
Работает, но нарушается порядок чтения цветов.

P.S. Прошу прощения что пишу в этой теме, дабы не перекачивать постоянно проект и не захломлять форум
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.05.2014, 15:42

Определить количество строк в компоненте ListBox и количество дней в выбранном месяце
Вынесите на форму компонент ListBox и занесите туда названия 12 месяцев года. Напишите программу: 1) Определяющую количество строк в...

Количество строк в listBox
узнаю количество строк кодом int count = listBox1.Items.Count(); но увы и ах выдает ошибку ...

Вывести количество строк listBox
Как вывести количество строк из listBox, после загрузки информации из файла.. а вывести надо в label... Подскажите плиз.

Определить количество слов в listBox
Определить количество слов в listBox и вывести на экран слова этой строки в столбик. Вывести в label. Делал через...

Ограничить количество элементов listbox
Доброго времени суток господа программисты, очень нужна Ваша помощь.Мне нужно узнать, как ограничить количество элементов в listbox?...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru