Bueno, voy a
meter mi cuchara también.
Es sobre esto:
Código Delphi
[-] DataModule1.EDBQuery1.SQL.Clear;
DataModule1.EDBQuery1.SQL.Add('SELECT * FROM FAMILIAS ORDER BY CODIGO');
DataModule1.EDBQuery1.Open;
DataModule1.EDBQuery1.First;
Podría ser simplemente:
Código Delphi
[-] DataModule1.EDBQuery1.SQL.Text := 'SELECT * FROM FAMILIAS ORDER BY CODIGO';
DataModule1.EDBQuery1.Open;
A no ser que en el evento AfterOpen o en algún momento similar muevas EDBQuery1 de registro, la llamada a First puede quitarse (al abrir un conjunto de datos éste se posiciona en su primera fila).
Lo de asignar la sentencia en Text en lugar de usar Clear + Add, se explica por sí mismo.
Saludos.