Problem when shutting down program

I'm using AdvStringGrid.

When I want to shut down the program, I check whether the stringgrid has been modified.
In "OnCloseQuery" I call the following "CheckSave" routine.
function Thomeplanform.checksave(fname : string) : tmodalresult;
  result := mryes;  // assume okay
  if sg1.Modified then
     result := MessageDlg('The current plan has been modified.' + #13 +
                       'Do you want to save it?', mtconfirmation, [mbYes, mbNo, mbCancel], 0);
     if result = mrcancel then exit;
     if result = mryes then
        if not dosave(fname) then result := mrCancel;
"mbb" simply displays a messagebox showing "true" or "false".
The first call indicates "false" and the second call indicates "true". But nothing has changed!!
This really has me stumped.

I think I've figured it out.

Opening the first dialog automatically finishes the editing session, which had been started, which then sets the grid to "modified".