Check if you get results after opening queries:
QryCntks.Open;
QryStates.Open;
QryCntries.Open;
QryCat.Open: // <--- you have colon here instead of semicolon
ShowMessage(
QryStates.FieldByName('STPROVCODE').AsString + LineEnding +
QryCntries.FieldByName('CODE').AsString + LineEnding +
QryCat.FieldByName('CATEGORY').AsString);
If you don't get data from ShowMessage, there is something wrong with your query, tables, database, ...
If you get expected result (first row), then put new DBGrid component and DataSource on the form (just for test). Select Dataset in DataSource component and DataSource in DBGrid (using Object inspector). Don't change anything else.
If you see data in DBGrid, then you messed something with DataSource or DBGrid.
If you don't see data in DBGrid, then put that 'ShowMessage' in some button OnClick event and check if you see that first line when clicking that button. If you don't, maybe somewhere in your code you accidentally close your queries.
P.S.: Now I see you write about JvDBLookupDropDown component. I don't use that component, but it should be similar to test it. I still recommend that you test with DBGrid, as I described. That way you will be sure you have the data you expect.
P.S.: Now I also noticed that you set your queries to be read only. Comment this just to test it. Table that is changed with JvDBLookupDropDown component shouldn't be read only.