Bueno, antetodo deberías de decir que motor de bases de datos utilizas ya que, hay miles de formas de hacerlo
Una que te puede valer para cualquier motor, puede ser lanzar una consulta SQL
Código:
function DameNumero : integer;
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('select max(CampoClave) + 1');
Query.SQL.Add('from MiTabla');
Query.Open;
Result := Query.Fields[0];
Nota: He obviado algún detallito como el control de errores, que revuelva la consulta algún valor,.....
Si tu SGBD admite procedimientos almacenados, puedes hacerlo mediante ellos
Si tu SGBD admite campos autoincrementales, puedes hacerlo mediante ellos
.........
No se, tu decides