![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с условием else [D7, XP]
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]И причем здесь "красит в красный", если нет ни намека на сам код раскраски?