Una vez trate de hacer un bucle infinito para un sorteo del cual debia salir cuando presionase una tecla, lamentablemente no pude y la mejor solucion que encontre fue la siguiente:
Código Delphi
[-]
procedure TFsorteo.SpeedButton3Click(Sender: TObject);
var regis, contad:integer;
sigue:boolean;
begin
contad:=qconsulta.RecordCount;
regis:=random(contad);
if regis<1 then regis:=random(contad);
qconsulta.First;
contad:=1;
sigue:=true;
while sigue do
begin
qconsulta.Next;
contad:=contad+1;
if contad=regis then sigue:=false;
end;
dbg_clien.SetFocus;
end;
Encuentro un numero al azar comprendido entre el numero total de registros de la tabla y voy a dicho registro