Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Delphi: Общие вопросы > Как узнать все выделенные элементы в ListBox


Автор: koder 27.03.07, 16:02
Если использовать св-во ListBox'a MultiSelect := true, то как узнать какие элементы списка выделенны?

Автор: Profi 27.03.07, 16:55
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    for i:=0 to ListBox1.Items.Count-1 do
     If ListBox1.Selected[i] then
      ListBox2.Items.Add(ListBox1.Items[i]);

Автор: Gaws 27.03.07, 17:20
Немого оптимизации в код....
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    x:=ListBox1.Items.Count-1;
    for i:=0 to x do
     If ListBox1.Selected[i] then
      ListBox2.Items.Add(ListBox1.Items[i]);

и Больше дополнить нечем.

Автор: P.O.D 27.03.07, 17:28
Gaws Компилятор сам так сделает.

Автор: koder 27.03.07, 17:42
Спасибо ребята!

Автор: koder 28.03.07, 04:58
А как потом удалить выделенные элементы, а также
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     for i:=0 to SendToBox.Items.Count-1 do
           If SendToBox.Selected[i] then
           begin
             tmpClient := TCPServer1.Connections[I];
             TCPServer1.Send(tmpClient, PChar(Code), Length(Code));
           end;

а также соединения TCPServer1.Connections[I]
есть ли другой способ отличный от записывание номеров в массив в список?

Автор: Testudo 28.03.07, 05:16
koder, проходись по списку и делай, что тебе нужно с TCPServer1.Connections[I]. Если не получилось, скажем, удалить соединение, то делай Selected:=false. А после цикла вызови ListBox1.DeleteSelected;
Вот и все.

Автор: koder 28.03.07, 05:33
ПРи удалении Connections[i] например удаляя 1 элемент, второй элемент не станет первым?

Автор: Testudo 28.03.07, 05:34
Цитата koder @
ПРи удалении Connections[i] например удаляя 1 элемент, второй элемент не станет первым?
Станет. При удалении элементов из списков пользуются обратным ходом: for i:=max downto 0 do

Автор: DMX_XC 28.03.07, 06:58
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     for i:=ListBox1.Count-1 DownTo 0 do
      if ListBox1.Selected[i] then
       ListBox1.Items.Delete(i);

Автор: koder 29.03.07, 05:40
Как узнать, что ни один элемент Listbox'a не выделен?

Автор: Stratocoder 29.03.07, 05:46
Количество выделеных елементов можно прочитать из проперти SelCount.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)