Wrzucenie danych z dwóch StringGrid do innego

0

Cześć.
Mam mały problem. Zbudowałem programik, który generuje jakieś dane do dwóch różnych StringGridów.
Dwa StringGridy mają po dwie kolumny a ostatni trzy. Z SG1 pobieram wartość pierwszej kolumny i wyszukuję w SG2 w kolumnie 1. Jeżeli znajdzie dopasowanie wówczas kopiuję do SG3 dane w takiej kolejności: SG3 kol 1 = dane z SG1 kol 1 , SG3 kol 2 = dane SG1 kol 2, SG3 kol 3 = dane SG2 kol 2.
Napisałem taką procedurkę, ale znajduje mi tylko jedną wartość. Wartości jest bardzo dużo i powinien mi je wyświetlić w SG3 ale tego nie robi. O to kod:

procedure TForm1.ObliczClick(Sender: TObject);
var
  z,y : integer;
begin
  for z := 1 to StringGrid1.RowCount do
    begin
      for y := 1 to StringGrid1.RowCount  do
       if StringGrid1.Cells[0,z-1] = StringGrid2.Cells[0,y-1] then
         begin
          StringGrid3.Cells[0,y-1]:=StringGrid1.Cells[0,z-1];
          StringGrid3.Cells[1,y-1]:=StringGrid1.Cells[1,z-1];
          StringGrid3.Cells[2,y-1]:=StringGrid2.Cells[1,y-1];
         end;
          Label2.Caption:='Koniec obliczeń';
    end;
end;

Bardzo proszę o jakąś podpowiedź. Na pewno coś robię źle i w tym momencie nie potrafię wykryć tego błędu. Pozdrawiam

0

A RowCount SG3 ustawiasz jakoś?

0
procedure TForm1.ObliczClick(Sender: TObject);
var
  z,y : integer;
begin
  for z := 1 to StringGrid1.RowCount do
    begin
      for y := 1 to StringGrid1.RowCount  do
       if StringGrid1.Cells[0,z-1] = StringGrid2.Cells[0,y-1] then
         begin
          StringGrid3.RowCount:=z;  
          StringGrid3.Cells[0,y-1]:=StringGrid1.Cells[0,z-1];
          StringGrid3.Cells[1,y-1]:=StringGrid1.Cells[1,z-1];
          StringGrid3.Cells[2,y-1]:=StringGrid2.Cells[1,y-1];
         end;
          Label2.Caption:='Koniec obliczeń';
    end;
end;

Wsatwiłem w tym miejscu bo zapomniałem skopiować RowCount.
nawet w SG3.RowCount ustawiałem y, Sg1.RowCount itd.

0

boczek, pisz na forum nie na maila, jest szansa, że rozwiązanie komus się przyda.

procedure TForm1.ObliczClick(Sender: TObject);
var
  z, y, rc : integer;
begin
  rc := 0;
  for z := 1 to StringGrid1.RowCount do
   if (SG1.Cells[0,z-1] <> '') and (SG2.Cells[0,y-1] <> '') then
      begin
        Inc(rc);
        StringGrid3.RowCount:=rc;
        for y := 1 to StringGrid1.RowCount  do
          if StringGrid1.Cells[0,z-1] = StringGrid2.Cells[0,y-1] then
             begin
               StringGrid3.Cells[0,y-1]:=StringGrid1.Cells[0,z-1];
               StringGrid3.Cells[1,y-1]:=StringGrid1.Cells[1,z-1];
               StringGrid3.Cells[2,y-1]:=StringGrid2.Cells[1,y-1];
             end;
          Label2.Caption:='Koniec obliczeń';
        end;
  end;
end;

Kodziłem na szybko, więc może byc error ale idea zostaje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1