Hola,
con un procedimiento es un poco complicado (o poco elengante en mi opinión) el tema de las búsquedas incrementales. Yo lo haría con una clase. Esto sería una aproximación. Ojo que no lo he probado, osea que posiblemente habrá algunos bugs, pero creo que se capta la idea
Código Delphi
[-]
interface
TBuscador = class(TObject)
private
FIndiceCampo: Integer;
FDataSet: TDataSet;
public
constructor Create(DS: TDataSet = nil);
property DataSet: TDataSet read FDataSet write FDataSet; function Buscar(Texto: String; BuscarBOF: Boolean = True): Boolean;
end;
implementation
constructor TBuscador.Create(DS: TDataSet = nil);
begin
inherited Create;
FDataSet:= DS;
FIndiceCampo:= 0;
end;
function TBuscador.Buscar(Texto: String; BuscarBOF: Boolean = True): Boolean;
begin
Result:= False;
with FDataSet do
begin
if BuscarBOF then
begin
First;
FIndiceCampo:= 0;
end;
while (not EOF) and (not Result) do
begin
while (FIndiceCampo < Fields.Count) and (not Result) do
begin
Result:= Fields[FIndiceCampo].Text = Texto;
Inc(FIndiceCampo);
end;
FIndiceCampo:= 0;
Next;
end;
end;
end;
Es decir, puedes realizar una búsqueda incremental sobre cualquier punto de la tabla, solo tienes que pasarle el parámetro BuscarBOF como False.
El procedimiento de reemplazar seria casi igual, también te lo dejo para tí
No sé si me he explicado bien, para cualquier duda, ya sabes. Espero que te haya servido
Un saludo!