Hola
Para la primera pregunta, en el evento doble click del TDBGrid metes el siguiente código, indicando el número de columna que guarde el valor dni:
Código:
valor = Datagrid1.Columns(1).Value
Para la segunda pregunta creo que ya te la respondí en un post anterior
--Saludos--