Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2012, 21:16   #1
volchek3
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 14
Вопрос Работа с группами (Groups) компонента ListView

Здравствуйте

Подскажите пожалуйста в чем проблема

У меня имеется массив записей GroupIni

сама запись организована следующим образом


Код HTML:
TUserGroups = record
     item : Integer;                                 
     name : String;
     IPComputer : WideString;
     numberSettings : string;
   end;


var
  Form1: TForm1;
  GroupIni : array[0..5] of TUserGroups;


Массив записей забит верно (проверял).

Исходные данные, которые забиваются в записи, каждая тройка данных,является одним элементом массива записей.
----------------------------------------------------------------
Пользовательская группа 1 // name
192.168.1.5 192.168.1.2 192.168.1.9 192.168.1.7 // IPComputer
1,4 // numberSettings

Пользовательская группа 2
192.168.1.11 192.168.1.12 192.168.1.19 192.168.1.17
3,4


Пользовательская группа 3
192.168.1.21 192.168.1.22 192.168.1.29 192.168.1.27
4,2


Проблема в следующем.
Хочу вывести в компонент ListView ip-адреса (в столбик), где каждый из них принадлежал определенной пользовательской группы

пример:
------------------------------------

Пользовательская группа 1
192.168.1.5
192.168.1.2
192.168.1.9
192.168.1.7

Пользовательская группа 2
192.168.1.11
192.168.1.12
192.168.1.19
192.168.1.17

и т.д.

Данную операцию я реализовал следующим образом

Код HTML:
procedure TForm1.viewDataIni(countGroup:Integer);  // countGroup  - количество элементов в массиве записей
 var
  i, j : integer;
  sl: TStringList;
 begin

   for i := 0 to countGroup-1  do
     begin

        sl:= TStringList.Create;

        ListView1.Groups.add.Header:=GroupIni[i].name;
        ListView1.Groups.Items[i].GroupID:=i;

        sl.Delimiter:=#032;
        sl.DelimitedText:=trim(GroupIni[i].IPComputer);


       for j := 0 to sl.Count - 1 do
        begin
         ListView1.Items.Add.Caption:=sl.Strings[j];
         ListView1.Items.Item[j].GroupID:=i;
        end;
       
       sl.Destroy;

     end;

 end;
Проблема в следующем. Если не активирую свойство GroupView компонента ListView, то выводятся все ip-адреса (по порядку групп), но если я активирую данное свойство то выводиться на экран следующее




отображается название групп "Пользовательская группа 3" - хотя выводятся IP-адреса первой группы, остальные IP-адреса и группы не отображаются.

Программирую в Delphi 10

Подскажите пожалуйста, что я не так делаю. Буду благодарен, если продемонстрируете, как программно можно забить Items компонента ListView, каждый из которых будет принадлежать какой-то группе (Groups).

Заранее спасибо.
volchek3 вне форума Ответить с цитированием
Старый 03.07.2012, 21:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А если так:
Код:
procedure TForm1.viewDataIni(countGroup:Integer);  // countGroup  - количество элементов в массиве записей
 var
  i, j : integer;
  sl: TStringList;
 begin
   sl:= TStringList.Create;
   for i := 0 to countGroup-1  do
     begin
        with ListView1.Groups.add do begin
           Header:=GroupIni[i].name;
           GroupID:=i;
        end; 

       sl.DelimitedText:=trim(GroupIni[i].IPComputer);

       for j := 0 to sl.Count - 1 do
        begin
         with ListView1.Items.Add do begin
          Caption:=sl.Strings[j];
          GroupID:=i;
         end; 
        end;
     end;
sl.Destroy;
 end;
sl.Delimiter:=#032; можно спокойно убирать. Пробел - разделитель по умолчанию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.07.2012, 22:34   #3
volchek3
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 14
По умолчанию

Огромное спасибо!
Спасибо за совет насчет Delimiter - первый раз с ним работал.
Дай Бог здоровья Вам!
volchek3 вне форума Ответить с цитированием
Старый 03.07.2012, 22:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И тебе не хворать, добрый человек )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как вывести на печать группами строк Ant75 Microsoft Office Excel 4 30.03.2012 17:35
Delphi программная работа с пользователя и группами Windows KiL0z Win Api 5 22.12.2011 08:02
Regex.Groups кто знаком? Зод Работа с сетью в Delphi 2 28.09.2011 18:19
ListView и Groups Lich Общие вопросы Delphi 4 16.01.2009 16:52