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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2014, 18:47   #1
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию добавление данных строками... Listview (оптимизация кода)

Здрасте всем....
Нужно было добавить в listview кое какие данные делаю это так
Код:
var
item: tlistitem;
begin
item:=Lv1.Items.Add;
item.Caption:=IntToStr(Lv1.Items.Count);
item.SubItems.Add(Memo1.Lines[0]);  
item.SubItems.Add(Memo2.Lines[0]);
end;
В первом например у меня цена хронится а во втором мемо проценты к примеру . В результате я получаю такую табличку
1983.32 56%

Ну так вот что хочу сказать у меня таких данных ну скажем 10-13-15 строк и как мне все их добавить? Моим способом можно добавить а вот нельзя добавить так например в столбик? Т.е. цена в столбик добавляется с мемо1 а проценты с мемо2 можно ли так?
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 23.07.2014, 19:33   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Код:
var
item: tlistitem;
i:integer;
begin
  for i:= 0 to Memo1.Lines.Count-1 do
  begin
    item:=Lv1.Items.Add;
    item.Caption:=IntToStr(Lv1.Items.Count);
    item.SubItems.Add(Memo1.Lines[i]);  
    item.SubItems.Add(Memo2.Lines[i]);
  end;
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 23.07.2014, 19:36   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цикель всему гольовя
Код:
var
item: tlistitem;i,j:integre;
begin
i:=0;j:=0;
while (i<Memo1.Lines.Count) or (j<Memo2.Lines.Count) do begin
 item:=Lv1.Items.Add;
 item.Caption:=IntToStr(Lv1.Items.Count);

 if i<Memo1.Lines.Count then item.SubItems.Add(Memo1.Lines[i])
 else item.SubItems.Add('0');

 if j<Memo2.Lines.Count then item.SubItems.Add(Memo2.Lines[j])
 else item.SubItems.Add('0');

 inc(i);inc(j);
end;
end;
Цитата:
Slym
Печалька случится если в Мемо-ах разное кол-во строк.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.07.2014, 22:09   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Перед дополнение строк лучше отключить перерисовку компонента, а после добавления снова включить.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 23.07.2014, 22:20   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
отключить перерисовку компонента
Согласен. Не помешает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.07.2014, 17:36   #6
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Согласен. Не помешает.
А как отключить ее?
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 24.07.2014, 21:43   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Lv1.Items.BeginUpdate перед циклом и .EndUpdate после.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.07.2014, 18:01   #8
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

А вот что у меня получилось, надо в 2 столбика было расфасовать я помню что, что-то надо в Object inspector'е поменять но вот вспомнить не могу хоть убей) ( давно не пользовался этим компонентом что забыл


Вот правильно ли я сделал перерисовку?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
item: tlistitem;i,j:integer;
begin
  ListView1.Items.BeginUpdate;
i:=0;j:=0;
while (i<Memo1.Lines.Count) or (j<Memo2.Lines.Count) do begin
 item:=ListView1.Items.Add;
 item.Caption:=IntToStr(ListView1.Items.Count);

 if i<Memo1.Lines.Count then item.SubItems.Add(Memo1.Lines[i])
 else item.SubItems.Add('0');

 if j<Memo2.Lines.Count then item.SubItems.Add(Memo2.Lines[j])
 else item.SubItems.Add('0');
       ListView1.Items.EndUpdate;
 inc(i);inc(j);
end;
end;
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация кода HDMI PHP 16 22.10.2012 13:06
Добавление данных в ListView coNsept C# (си шарп) 2 08.03.2012 12:23
Оптимизация кода в си dampirik Помощь студентам 4 07.07.2009 11:30
Оптимизация кода viscas PHP 3 31.05.2009 16:04
Оптимизация кода [Smarik] Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 20.08.2008 15:00