Показать сообщение отдельно
  #1  
Старый 29.11.2011, 22:08
Gogolinsky Gogolinsky вне форума
Прохожий
 
Регистрация: 29.11.2011
Сообщения: 17
Репутация: 10
Восклицание Создать цикл

Есть stringgrid. При нажатии на кнопку некоторые элементы в ней изменяются. Надо создать цикл, который будет изменять эти элементы до тех пор, пока все они не станут равными. Если точнее, в конце во всех ячейках должна находиться буква 'a'. Пока что приходиться самому кликать на кнопку много раз, пока не увижу, что все ячейки приняли значение a.
Вот код кнопки:
Код:
procedure TForm1.btn1Click(Sender: TObject); //Кнопка Старт
var
i, j, k, n, ves: Integer;
e, s, MinCvet, MaxCvet: string;

begin
 e:=CoordChislMinEl(strngrd1); //Координаты минимального значения в матрице (числа)
 s:=CoordMinEl(strngrd1); //Координаты минимального значения в матрице (ребро)
 ves:=MinEl(strngrd1); //Вес минимального ребра
  if strngrd2.Cells[1,StrToInt(e[2])] = strngrd2.Cells[1,StrToInt(e[4])] then //Если цвета ребер одинаковые (ребро образует цикл)
   begin
    strngrd1.Cells[StrToInt(e[4]),StrToInt(e[2])]:=''; //Исключаем рассмотренный ребра из цикла
    strngrd1.Cells[StrToInt(e[2]),StrToInt(e[4])]:='';
   end
  else
   begin
    MinCvet:=Min(strngrd2.Cells[1, StrToInt(e[2])], strngrd2.Cells[1, StrToInt(e[4])]); //Выбираем меньший цвет из двух
    MaxCvet:=Max(strngrd2.Cells[1, StrToInt(e[2])], strngrd2.Cells[1, StrToInt(e[4])]); //Выбираем больший цвет из двух
     for j:=1 to strngrd2.RowCount-1 do
      if strngrd2.Cells[1,j] = MaxCvet then
       strngrd2.Cells[1,j]:=MinCvet;
       lbl1.Caption:= lbl1.Caption + ' ' + s; //Вписываем ребро в остов
       lbl3.Caption:= IntToStr(StrToInt(lbl3.Caption)+ves); //Подсчитывем общий вес ребер в остове
       strngrd1.Cells[StrToInt(e[4]),StrToInt(e[2])]:=''; //Исключаем рассмотренный ребра из цикла
       strngrd1.Cells[StrToInt(e[2]),StrToInt(e[4])]:='';
   end;
end;
Админ: Пользуемся тегами для оформления кода!
Ответить с цитированием