Thanks guys for the suggestions.
Re the form creation aspect. The LPR project file creates all the forms at startup as far I am aware with the following lines :
...
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TfrmDisplayGrid1, frmDisplayGrid1);
Application.CreateForm(TfrmDisplayGrid3, frmDisplayGrid3);
Application.CreateForm(TfrmAbout, frmAbout);
Application.CreateForm(TfrmSQLiteDBases, frmSQLiteDBases);
...
Application.Run;
So all the forms should be created by the time they are called.
On the class point raised by WP...I did try changing the line from
frmDisplayGrid3.DBGrid3.Options := frmDisplayGrid3.DBGrid3.Options + [dgAutoSizeColumns];
to
DBGrid3.Options := DBGrid3.Options + [dgAutoSizeColumns];
but then when compiling it said the identifier could not be found and was unknown.
Re the DataSource for DBGrid3 to none suggestion...for that particular component (the DBGrid3) the datasource is already blank (none). It is the SQLQueries that have the datasources attached to them. The other two DBGrids that work get populated via the SQLQueries but the same technique for this one just wont work.
So I have resorted to deleting it, and trying again with a new form and a new DBGrid. Added all the usual uses to link it together. I noticed this time that in the object inspector for the new DBGrid, in the "Datasource" drop down, all three of the datasource options are now listed, whereas they were not before for this 3rd grid (yet for the other two, they are listed). So I figured the problem must have been some kind of invisibility of the datasources by the form. (It's worth noting that the two that do work do not actually have either datasource selected; they are listed as none. But they are available). So I selected DataSource3 just to see if that would work, assuming that would now resolve it given they were inaccessible before, but sadly on execution exactly the same problem occured.
And if I try using
frmDisplayGrid3.DBGrid3.DataSource.DataSet.Open;
that line errors during running suggesting the dataset can't be opened or is invalid. So somewhere I think the DataSource is not getting linked or is inaccessible, but I keep looking at the other two and comparing it against the setting for DataSource3 and all the settings are exactly the same, just changed by name or by SQLQuery link.
This is driving me utterly insane. I can't understand how I can have a main form, with 2 additional forms all containing a DBGrid, and have corresponding TSQLQueries and Datasources, all created at application launch in the same way, and yet this third form and its embedded DBGrid seems somehow inaccessible. I just cannot see what I have done wrong.