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

Запрет выбора предыдущих строк в ListBox

21.01.2013, 03:53. Показов 1928. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Нужно, чтобы когда выбрана строка, например, с индексом 3 (в смысле, она засветилась синим цветом) то все предыдущие строки были не активными, то есть, их нельзя было выбирать (в даном случае, строки 0,1,2 должны быть не активными). Как это сделать? Можно ли в ListBox делать определенную строку не активной? Заранее спасибо за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.01.2013, 03:53
Ответы с готовыми решениями:

Запрет выбора узла в TreeView
Добрый день! Узел в дереве выделяется программно, следует запретить пользователю кликом мышки выделять другие узлы.

StringGrid. Запрет выбора ячеек
Как запретить выбор строк, столбцов ячеек и т.д. с помощью мыши? Выделение должно перемещаться только с помощью кода Добавлено через 2...

Sleep внутри функции - перекрывает выполнение предыдущих строк
Привет! Набрел на проблему, никак не могу решить в теле функции имеется: { ... Label1->Caption = "что то...

14
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.01.2013, 12:41
C++
1
2
3
4
5
6
7
void __fastcall form::listboxClick(TObject * Sender)
{
    static int pos = 0;
    TListBox * box = dynamic_cast<TListBox *>(Sender);
    if( pos < box->ItemIndex ) pos = box->ItemIndex;
    else if ( box->ItemIndex > 0 ) box->ItemIndex = pos; // если box->ItemIndex == -1, то ничего не выбрано, а значит и делать ничего не надо 
}
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
21.01.2013, 14:42  [ТС]
ничего не происходит...
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
21.01.2013, 17:29
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int PositionIndex;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        PositionIndex = 2; // 3 ñòðîêà
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
        PositionIndex = ListBox1->ItemIndex < PositionIndex + 1 ? PositionIndex : ListBox1->ItemIndex;
        ListBox1->ItemIndex = PositionIndex;
}
//---------------------------------------------------------------------------
Добавлено через 14 минут
C++
1
2
       ListBox1->Selected[ListBox1->ItemIndex] = ListBox1->ItemIndex < PositionIndex + 1 ? false : true;
       Caption = ListBox1->ItemIndex;
В первых 3 строках вернет ItemIndex = -1.
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
21.01.2013, 20:54  [ТС]
Смысл понятен! Спасибо.
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
25.01.2013, 20:59  [ТС]
блин, а можно просто запретить нажатия на некоторую строчку?
Потому что Ваш вариант перевода ItemIndex не очень удобен в моем случаи...
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.01.2013, 23:39
.. не знаю про ваш случай; а в таком виде устроит?__
Вложения
Тип файла: rar Project1.rar (160.2 Кб, 3 просмотров)
1
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
25.01.2013, 23:45  [ТС]
ахах) один exe)) смешно)
Вот так примерно и мне надо.
nick42, пожалуйста дайте исходник, или строчку что ето делает!
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.01.2013, 23:56
Да пожалуйста; кода там чуть, - больше работы в визредакторе. Правильнее будет смысл объяснить.
Ставится панель и на ней впритирку размещается основной листбокс (их два). Прямо на нем со свойством BringToFront размещается второй фальшлистбокс, у которого все как у основного, но ширина на 20 px больше (чтоб скрыть скроллбар) и цвет шрифта другой. Фальш блок никаких действий не выполняет, кроме того, что при кликах на нем изменяет свой итеминдекс на -1. Начальная высота фальшбокс - 0. При кликах на основном боксе его ширина становится равной индексу, умноженному на высоту строки. Ну, в общем, несложно все, объяснять дольше...
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
//---------------------------------------------------------------------------
void __fastcall TForm1::lbo2Click(TObject *Sender)
{
    lbo2->ItemIndex = -1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::lboxMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    static int idxB1=0;
    if (Button==mbLeft) {
      idxB1 = Y/lbox->ItemHeight ;
      lbo2->Height = lbo2->ItemHeight * idxB1;
    }
    if (Button==mbRight) lbo2->Height = 0;
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    lbo2->Height = 0;
    lbox->ItemIndex = 0;
    Label1->Caption = lbox->Items->Strings[0];
}
//---------------------------------------------------------------------------
void __fastcall TForm1::lboxClick(TObject *Sender)
{
     Label1->Caption = lbox->Items->Strings[lbox->ItemIndex] ;
}
//---------------------------------------------------------------------------
1
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
26.01.2013, 00:17  [ТС]
Задача немножко изменилась...
если мне нужно чтоб снизу и сверху они были не активными то нужно 2 фальшлистбокс ставить? один снизу вверх, а другой наоборот изменяется индекс?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
26.01.2013, 00:26
Тут я вообще уже смысла не пойму: после клика на боксе в доступе остается только эта строчка?! Прикольно, конечно... . У него же еще свойство Enabled есть...
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
26.01.2013, 00:45  [ТС]
Мне нужно что б когда создаются например 2 RadioButton с Caption "Да" и "Нет".И в одном лист боксе появляются список вопросов(Caption GroupBoxа то есть parent этих RadioButton ) а в другом список вариантов (Caption этих RadioButton соответственно). Потом пользователь создает кнопку "результат" прописывает там сценарий развития ответов! Нужно что б когда выбран вариант например Вопрос1->Да то вариант "Нет" был не активным пока пользователь не завершит создания сценария!(Вариантов может быть сколько угодно)
Если ему не запретить выбирать только один вариант то сценарий будет бездейственным.
Таким способом я воплощу ету задачу?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
26.01.2013, 01:09
да туманно как-то... . За себя скажу, что не очень люблю (это мягко) клавиатурой настукивать компоненты на форму. У графических компонентов масса возможностей, которые я и стараюсь использовать. В вашем случае - GadioGroup, Visible, Enabled и т.д.
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
26.01.2013, 01:34  [ТС]
А по Вашему примеру получается немножко мистика когда крушит колесиком на фальшьбоксе когда его видно(
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
26.01.2013, 01:43
Знаю. Это ж вивисекция..., ну раз нет такого свойства, - нужно напрячь фантазию. Скажем, в зависимости от индекса список тем обновлять из 1-го бокса до значения индекса, не больше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.01.2013, 01:43
Помогаю со студенческими работами здесь

Запрет выбора прошедшей даты в DateTimePicker'e
Здравствуйте. Можно ли запретить выбор прошедшей даты в DateTimePicker'e? В гуглях ничего не нашёл, может быть плохо искал.:)

Сделать выборку в ListBox, в зависимости от выбора Item в другом ListBox'e?
Добрый всем день! Подскажите пожалуйста, как можно сделать выборку в listbox, в зависимости от выбора item в другом listboxe???? Сделал вот...

Выборка записей столбца БД в ListBox в зависимости от выбора в первом ListBox
Ребят, хелп. Нужно запилить такую штуку, а хз как. Есть 2 лист бокса когда в первом выбирают определенный элемент со списка во второй...

В ListBox вводится последовательность строк. Вывести их в ListBox в обратном порядке
Помогите пожалуйста решить задачу :) очень надеюсь на ответ... В ListBox вводится последовательность строк. Вывести их в ListBox в...

Запрет выбора элемента в ComboBox
Доброе время суток) Нуждаюсь в вашей помощи. А собственно имеется 3 комбо бокса с одинаковым текстом Нужно сделать так что бы к...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru