C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Выделение в ListBox
dEEp
Отправлено: 10.03.2005, 17:11


Дежурный стрелочник

Группа: Участник
Сообщений: 69



Чего-то я не соображу... Скажите, как можно программно выделить определённую строку в ListBox'e?
telepath
Отправлено: 10.03.2005, 17:19


Станционный диспетчер

Группа: Участник
Сообщений: 132



Если выключен multiselect, то
CODE
ListBox->ItemIndex = 0;

курсор переводится на верхнюю строчку
olegenty
Отправлено: 10.03.2005, 17:19


Ветеран

Группа: Модератор
Сообщений: 2412



QUOTE
Indicates whether a particular item is selected.

__property bool Selected[int Index] = {read=GetSelected, write=SetSelected};

Description

Use Selected to query the state of a particular item in the list box. If the item specified by the Index parameter is selected in the list box, the value of the Selected property is true. If the specified item is not selected, Selected is false. Set Selected to change the currently selected item.

The Index parameter is the item referenced by its position in the list box, with the first item having an Index value of 0.

An item is selected when the user highlights it. More than one item in the list box can be selected by setting the MultiSelect property to true. In this case, the Selected item is the one that has focus when the list box has input focus.
dEEp
Отправлено: 10.03.2005, 17:31


Дежурный стрелочник

Группа: Участник
Сообщений: 69



ОК. Попробую. Только вот ещё один вопрос. Как можно строки в ListBox'e перемешать. Естьли что-то вроде random'a?
Bond
Отправлено: 10.03.2005, 18:11


Станционный диспетчер

Группа: Участник
Сообщений: 142



Вызови хелп по TStrings::Exchange(...) (тип свойства TListBox::Items)
QUOTE
Swaps the position of two strings in the list.

virtual void __fastcall Exchange(int Index1, int Index2);

Description

Call Exchange to rearrange the strings in the list. The strings are specified by their index values in the Index1 and Index2 parameters. Indexes are zero-based, so the first string in the list has an index value of 0, the second has an index value of 1, and so on.

If either string has an associated object, Exchange changes the position of the object as well
Пример: поменять местами строки с индексами 1 и 2 (вторая и третья строка)
CODE
ListBox1->Items->Exchange( 1, 2 );
dEEp
  Отправлено: 11.03.2005, 00:20


Дежурный стрелочник

Группа: Участник
Сообщений: 69



Bond , может подскажешь ещё, как узнать размерность массива. Предположим ...
CODE
AnsiString Str[]={"...", "...", "..."};

Каким образом можно узнать кол-во элементов в массиве?
Георгий
Отправлено: 11.03.2005, 00:46


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



CODE
sizeof(Str)/sizeof(Str[0])
dEEp
Отправлено: 11.03.2005, 02:11


Дежурный стрелочник

Группа: Участник
Сообщений: 69



Придумал! Так лучше (понятнее для меня)...
CODE

       int t=0;
       for (int i=1; i<255; i++)
               {
                       t++;
                       if (answer[i]<NULL)
                               {
                                       break;
                                       Edit1->Text=t;
                               }
               }

Мне так нравится больше. При условии, если кол записей не превышает 255.
Георгий
Отправлено: 11.03.2005, 07:29


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



если не секрет, то как вот эту строчку понимать:
CODE
if (answer[i]<NULL)
такое условие всегда даёт false
Bond
Отправлено: 11.03.2005, 11:29


Станционный диспетчер

Группа: Участник
Сообщений: 142



А не проще использовать класс TStringList?
Guest
Отправлено: 11.03.2005, 22:00


Не зарегистрирован







QUOTE (Георгий @ 11/03/2005, 07:29)
если не секрет, то как вот эту строчку понимать:
CODE
if (answer[i]<NULL)
такое условие всегда даёт false

По крайней мере так работает!

Вернуться в Вопросы программирования в C++Builder