wyszukiwarka w stringgrid

0
var
a:integer;
begin
if edit1.text = stringgrid1.cells[1,a]; then
 jakies komendy

i moj problem polega na tym ze wyszukiwanie dziala tylko w ostatnim wersie tabeli , co spowodowane jest przez a:integer ;
Chcialem wykorzystac tablice , ze a miesci sie w przedziale od 1 do 500.. ale nie dziala taki sposob..

0
raskal napisał(a)

ale nie dziala taki sposob..

? Możesz jaśniej? Używasz w ogóle for'a czy jak? Chcesz po prostu przeszukać cały stringgrid w poszukiwaniu danego łańcucha, czy tylko drugą kolumnę?

Zgaduję, że chodzi Ci o coś w stylu:

for I := 1 to StringGrid.rowCount - 1 do
begin
  if Edit.Text = StringGrid.cells[1, I] then
    DoSomething();
end;

...albo

for I := 1 to StringGrid.rowCount - 1 do
begin
  for J := 1 to StringGrid.colCount - 1 do
    if Edit.Text = StringGrid.cells[J, I] then
      DoSomething();
end;

Pzdr.

0

chce przeszukac 3-cią kolumne , wszystkie wersy od 1 do ostatniego.

0

Czyli pierwszy kod tylko zamień cells[1, I] na cells[2, I]

Pzdr.

0

dzieki , dziala , a teraz pytanie z innej beczki bo

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
memo1.lines.clear;
for I := 1 to StringGrid1.rowCount - 1 do begin

if edit1.text = stringgrid1.cells[3,i] then begin
memo1.lines.add(StringGrid1.Cells[1,i]+' '+StringGrid1.Cells[2,i]);
memo1.lines.add('Numer seryjny: '+StringGrid1.Cells[3,i]);
memo1.lines.add('Ilość: '+StringGrid1.Cells[4,i]+' szt.');
memo1.lines.add('Zakupiono za: '+StringGrid1.Cells[5,i]+' zl');
memo1.lines.add('Sprzedano za: '+StringGrid1.Cells[6,i]+' zl');
memo1.lines.add('Zysk wynosi: '+StringGrid1.Cells[7,i]+' zl');
memo1.lines.add('Info: '+StringGrid1.Cells[8,i]);
end;end;
else if edit1.text<>stringgrid1.cells[3,i] then
begin
memo1.lines.Clear;
memo1.Lines.add('Przedmiot o tym numerze nie zostal znaleziony');
end;

end;

napisalem taki kod , ale podkresla mi "ELSE" - dlaczego ? wydaje mi sie ze wszystko jest ok ale blad ciagle wskazuje...

0

dobra ,poradzilem sobie z tym , ale dlaczego ciagle wyczyszcza mi memo i pokazuje ze przedmiot nie zostal znaleziony , skoro mam warunek że "=" lub " <>" ??

0
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
memo1.lines.clear;
for I := 1 to StringGrid1.rowCount - 1 do begin

if edit1.text = stringgrid1.cells[3,i] then begin
memo1.lines.add(StringGrid1.Cells[1,i]+' '+StringGrid1.Cells[2,i]);
memo1.lines.add('Numer seryjny: '+StringGrid1.Cells[3,i]);
memo1.lines.add('Ilość: '+StringGrid1.Cells[4,i]+' szt.');
memo1.lines.add('Zakupiono za: '+StringGrid1.Cells[5,i]+' zl');
memo1.lines.add('Sprzedano za: '+StringGrid1.Cells[6,i]+' zl');
memo1.lines.add('Zysk wynosi: '+StringGrid1.Cells[7,i]+' zl');
memo1.lines.add('Info: '+StringGrid1.Cells[8,i]);
end
else if edit1.text<>stringgrid1.cells[3,i] then
begin
memo1.lines.Clear;
memo1.Lines.add('Przedmiot o tym numerze nie zostal znaleziony');
end;
end;
end;
0

Nic mnie tak nie bawi, jak BURDEL w kodzie a potem następuje zdziwienie dlaczego nie działa. Nie działa bo nie ma jak dojść do logiki wykonania programu. Przeanalizuj sobie mój kod i wyciągnij wnioski.

procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  with Memo1.Lines, StringGrid1 do
  begin
    Clear();
    for i := 1 to RowCount - 1 do
    begin
      if Edit1.text = Cells[3,i] then
         begin
           Add(Cells[1,i]+' '+Cells[2,i]);
           Add('Numer seryjny: '+Cells[3,i]);
           Add('Ilość: '+Cells[4,i]+' szt.');
           Add('Zakupiono za: '+Cells[5,i]+' zl');
           Add('Sprzedano za: '+Cells[6,i]+' zl');
           Add('Zysk wynosi: '+Cells[7,i]+' zl');
           Add('Info: '+Cells[8,i]);
           Break;
         end
      else
        begin
          Clear();
          Add('Przedmiot o tym numerze nie zostal znaleziony');
        end;
    end;
  end;
end;

lub

procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  with Memo1.Lines, StringGrid1 do
  begin
    Clear();
    for i := 1 to RowCount - 1 do
    begin
      if Edit1.text = Cells[3,i] then
         begin
           Add(Format('%s %s',               [Cells[1,i], Cells[2,i]]));
           Add(Format('Numer seryjny: %s',   [Cells[3,i]]));
           Add(Format('Ilość: %s szt.',      [Cells[4,i]]));
           Add(Format('Zakupiono za: %s zl', [Cells[5,i]]));
           Add(Format('Sprzedano za: %s zl', [Cells[6,i]]));
           Add(Format('Zysk wynosi: %s zl',  [Cells[7,i]]));
           Add(Format('Info: %s',            [Cells[8,i]]));
           Break;
         end
      else
        begin
          Clear();
          Add('Przedmiot o tym numerze nie zostal znaleziony');
        end;
    end;
  end;
end;
0

nigdy nawet nie wpadlbym na taki sposob napisania tego..
"+cells" itp. nie wiedzialem ze tak mozna nawet pisac.

Gratuluje bardzo zaawansowanego poziomu i dziekuje za pomoc.

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