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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2008, 13:29   #1
Drain
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 10
По умолчанию ListView

Надо в одном из листов округлить все значения, у меня вот такой код, округляется только по строкам, как по столбцам сделать (цикл не знаю как задать)?
begin
for i:= 0 to ListView4.Items.Count-1 do
begin
S := ListView4.Items.Item[i].SubItems.Strings[0];
r := StrToFloat(S);
r := Round(r);
S := FloatToStr(r);
ListView4.Items.Item[i].SubItems.Strings[0] := S;
end;
end;
И еще нужно заменить точки на запятые здесь же.
И как вообще обратиться допустим к нужной ячейке.

Последний раз редактировалось Drain; 13.02.2008 в 13:39.
Drain вне форума Ответить с цитированием
Старый 13.02.2008, 14:17   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

1).
Код:
  for i := 0 to ListView1.Items.Count - 1 do begin
    for j := 0 to ListView1.Items [i].SubItems.Count - 1 do begin
      // Что-то делаем с записью ListView1.Items [i].SubItems [j]
    end;
  end;
2). Вы уверенны, что менять нужно именно на запятые? Скорее всего менять нужно на DecimalSeparator, символ разделяющий челую и дробную часть.
Код:
  for i := 0 to ListView1.Items.Count - 1 do begin
    for j := 0 to ListView1.Items [i].SubItems.Count - 1 do begin
      s := ListView1.Items [i].SubItems [j];
      for k := 1 to Length (s) do
        if s[k] in ['.', ','] then s[k] := DecimalSeparator;
      try
        r := StrToFloat (s);
        r := Round (r);
        s := FloatToStr (r);
      except
        s := ListView1.Items [i].SubItems [j];
      end;
      ListView1.Items [i].SubItems [j] := s;
    end;
  end;
Sibedir вне форума Ответить с цитированием
Старый 13.02.2008, 15:13   #3
Drain
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 10
По умолчанию

Нужно, чтобы вместо точек были запятые. И при таком коде первый столбец не изменяется:

procedure TfrmMain.Button3Click(Sender: TObject);
var
i,j,n: Integer;
S: String;
r,a: real;
begin
n:=StrToInt(Edit1.Text);
a := Exp(n*Ln(10));
for i:= 0 to ListView4.Items.Count-1 do begin
for j := 0 to ListView4.Items [i].SubItems.Count - 1 do begin
S := ListView4.Items.Item[i].SubItems.Strings[j];
r := StrToFloat(S);
r:=r*a;
r := Round(r);
r:=r/a;
S := FloatToStr(r);
ListView4.Items.Item[i].SubItems.Strings[j] := S;
end;
end;
end;

Последний раз редактировалось Drain; 13.02.2008 в 15:30.
Drain вне форума Ответить с цитированием
Старый 13.02.2008, 16:10   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Я все понимаю, я тоже не проффи, но немног-то напрягитесь.
Код:
...
  for i := 0 to ListView1.Items.Count - 1 do begin
    s := ListView1.Items [i].Caption;
    for k := 1 to Length (s) do
      if s[k] = '.' then s[k] := ',';
    try
      r := StrToFloat (s);
      r := Round (r);
      s := FloatToStr (r);
    except
      s := ListView1.Items [i].Caption;
    end;
    ListView1.Items [i].Caption := s;
    for j := 0 to ListView1.Items [i].SubItems.Count - 1 do begin
...
Sibedir вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ListView Лубышев Общие вопросы Delphi 6 18.07.2008 16:04
ListView aesoem Общие вопросы Delphi 4 05.07.2008 15:55
ListView Witaliy Общие вопросы Delphi 1 01.05.2008 20:46
ListView Terran Общие вопросы Delphi 2 05.04.2008 23:15
ListView Garacio Компоненты Delphi 1 17.12.2006 15:30