Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с условием else [D7, XP]


Страницы:   1 2

krolic ©   (2008-09-08 14:18:00) 

Добрый день. Помогите найти ошибку.
Если делать цикл так, то нужные строки окрашивает в красный
Open;

          IBQuery.First;
          while not (IBQuery.Eof) do
          begin
                 Zapr:=FieldByName('max').AsString;
                 for i:=0 to ListView1.Items.Count-1 do
                      if ListView1.Items[i].SubItems[4] = Zapr  then
                      begin
                           ListView1.Items[i].Data := Pointer(clRed);   ListView1.Invalidate; //Красим строку в красный цвет
                      end;
                  DataModule1.IBQShared.Next;

          end;
Close;

Если добавить условие, то красит всев зеленый, хотя должны быть и красные

Open;
          IBQuery.First;
          while not (IBQuery.Eof) do
          begin
                 Zapr:=FieldByName('max').AsString;
                 for i:=0 to ListView1.Items.Count-1 do
                      if ListView1.Items[i].SubItems[4] = Zapr  then
                      begin
                           ListView1.Items[i].Data := Pointer(clRed);   ListView1.Invalidate; //в красный
                      end
                      else  
                      begin
                           ListView1.Items[i].Data := Pointer(clGreen); ListView1.Invalidate; //в зеленый
                      end;

                  DataModule1.IBQShared.Next;
          end;
Close;


Anatoly Podgoretsky   (2008-09-08 14:40:00) [21]

Дурдом какой то.


KilkennyCat   (2008-09-08 14:36:00) [22]

во-первых, так красивше:

          begin
                Zapr:=FieldByName('max').AsString;
                for i:=0 to ListView1.Items.Count-1 do
                     if ListView1.Items[i].SubItems[4] = Zapr  then
                        ListView1.Items[i].Data := Pointer(clRed)
                     else
                        ListView1.Items[i].Data := Pointer(clGreen);
                ListView1.Invalidate;
                DataModule1.IBQShared.Next;
         end;


во-вторых, в чем проблема? условие просто выполняется всегда false...


Медвежонок Пятачок   (2008-09-08 14:35:00) [23]

Считай, что ты нашел ошибку.


krolic   (2008-09-08 14:34:00) [24]

Считай, что вместо красит написано ShowMessage('Красный') и ShowMessage('Зеленый')


Медвежонок Пятачок   (2008-09-08 14:34:00) [25]

Твой приведенный здесь код не имеет никакого отношения к раскраске. А ты в нем ищешь философский камень.


Медвежонок Пятачок   (2008-09-08 14:33:00) [26]

кроме того, в подготовке данных для раскраски участвует как минимум два датасета. один из которых никто не позиционирует перед началом вычислений. То есть результат не прогнозируем.


krolic   (2008-09-08 14:31:00) [27]

На эти ребусы смотреть не надо, надо смотреть на [3] сообщение


Медвежонок Пятачок   (2008-09-08 14:31:00) [28]

В результате первого кода, он красит строки в красный

Твой приведенный здесь код ничего не красит.


krolic   (2008-09-08 14:30:00) [29]

Да дело не в раскраске. Дело в том, что в первый код отличается от второго вот чем
1код for i:=0 to ListView1.Items.Count-1 do
                     if Условие1 then
                     begin
                          Красим строку в красный цвет
                     end;

2код
      for i:=0 to ListView1.Items.Count-1 do
                     if Условие1  then
                     begin
                          Красим строку в красный цвет
                     end
                     else  
                     begin
                          в зеленый
                     end;

В результате первого кода, он красит строки в красный, которые удовлетворяю условию1.
А в результате второго кода он все красит в зеленый,несмотря на Условие1.
Мне нужно найти ошибку во втором коде.


Медвежонок Пятачок   (2008-09-08 14:25:00) [30]

Кроме того, это что за ребусы?

IBQuery.First;
         while not ( IBQuery.Eof) do
         begin
                Zapr:= FieldByName('max').AsString;
                for i:=0 to ListView1.Items.Count-1 do
                     if ListView1.Items[i].SubItems[4] = Zapr  then
                     begin
                          ListView1.Items[i].Data := Pointer(clRed);   ListView1.Invalidate; //Красим строку в красный цвет
                     end;
                  DataModule1.IBQShared.Next;


Медвежонок Пятачок   (2008-09-08 14:23:00) [31]

И причем здесь "красит в красный", если нет ни намека на сам код раскраски?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо