Цитата(VICTAR @ 11.7.2008, 14:32 ) | | Соответственно поиск логичней осуществлять с помощью TStrings.IndexOf(). |
А если в StringGrid искомая строка встречается в одной строке несколько раз?
Тут IndexOf не подойдет... Или я еще не проснулся... Можно сделать как-нибудь так:
| Код |
type TCells = record Col: integer; Row: integer; end;
var FindArray: array of TCells;
|
На форме TStringGrid,TButton, TEdit, TMemo.
Просто для удобства.
Нажатие кнопки:
| Код |
procedure TForm1.Button1Click(Sender: TObject); var i, j : integer; FindText : string; Count : integer; begin Count := 0; FindText := Edit1.Text; SetLength(FindArray, StringGrid1.ColCount * StringGrid1.RowCount); for i := 0 to StringGrid1.RowCount - 1 do for j := 0 to StringGrid1.ColCount - 1 do if StringGrid1.Cells[j, i] = FindText then begin FindArray[Count].Col := j; FindArray[Count].Row := i; Inc(Count); end; SetLength(FindArray, Count - 1); for i := 0 to Length(FindArray) do Memo1.Lines.Add(IntToStr(FindArray[i].Col) + ', ' + IntToStr(FindArray[i].Row)); end;
|
Ищем текст, который введен в Edit, заносив все содержимое массива в Memo. |