Grid locating

Hi Bruno,

is first time who i have some problem usin grid loacate.

In a form i have grid, edit and buttons.

The grid has several colums and where i need to do a search are only in column 2 and 3 where on column 2 is a string search and column 3 is a numeric search.

This is the procedure when the enter key is pressed.

procedure TFLTSR.Edt1KeyPress(Sender: TObject; var Key: Char);

var Loc : TPoint;

      Fp : TFindParams;

      I   : Integer;


if (Key=#13) and (Edt1.Text<>'') then







    if I=-1 then SG1.Col:=2 // String


    SG1.Col:=3; // Num



    Fp := [fnMatchRegular, fnAutoGoto, fnFindInCurrentCol];

    Loc := SG1.Find(loc, Edt1.Text + '*',fp);



With this procedure col is always 1, there's no way to change the value.

fnFindInCurrentCol read grid.col or other value?

Thank's for reply


If you set grid.Col = X and specify, fnFindInCurrentCol in the find parameters, it should start the search in column X. I cannot see a different behavior here.

Hi Bruno,

honestly ... i have a little problem ....

It's possible that i have some problem on my pc ... but in each code line where i have this line


the col value is always 1.

So in this procedure

procedure TAdvStringGrid.SetColEx(const Value: Integer);


inherited Col := Value; // 1

FDisSelection := Selection; // 2

on line 1 Value is properly set on (for example) 2, inherited is executed tring to change value; But when return to line 2, Value is 2 as setted ... but Col remain 1.

So i investigate a little ... and the problem seem to be goRowSelect.

If is setted to True there's no way to change a col property ..... but in case of search replace work goRowSelect couldbe transparent.

Thank's for all your help.


Hi Bruno,

i forgot to write who i before changing col value, i remove gorowselect do a locate and after reset gorowselect.

workaround ... but work !!


When goRowSelect = true, the entire row is selected, so in this case it will indeed not work to select a single cell within a selected row.