doniuzas, the DBGrid doesn't show anything except whats in the query. So you actually never add or delete data directly from a DBGrid. It is just a mirror of the content in its associated SQLQuery. If you want to add content to the DBGrid then you do it indirectly, by modifying the SQL select statement. The data then simply shows up in the grid without you having to do anything.
Its not clear to me exactly what you are doing, but perhaps you could have a button that closes the current query, assigns a new select statement and re-opens the query. If you need to keep your position in the grid, then run the Locate command after re-opening the query.
If you explain a bit more, maybe we can come up with another answer.
Also, you dont need to create the Param if you assign the select statement first:
zquery1.SQL.Text:= 'SELECT title FROM table WHERE x= :someparam'
The select statement doesnt need to be cleared when you assign to SQL.Text.
And then you can just use the param, it has been created for you automatically:
zquery1.ParamByName('someparam').asstring:= dbtext1.field.asstring;
zquery.Open;