[Lazarus-es] Función Locate

Ismael L. Donis García ismael en citricos.co.cu
Mie Mayo 4 16:36:38 CEST 2011


Ya logré crear la función personalizada dentro de mi proyecto sin que me 
diera error, aunque eso me saca del problema, realmente quisiera poder 
agregar los eventos que tiene el TMenDataset al TBufDataSet ya que eso me 
permitiría de cambiar de componente. Por ahora me veo obligado a usar el 
componente TMenDataset.

La función me quedó de la siguiente forma:

function Tdm.Localizar(const aDS: TMemDataset; const aField: string; const 
aToLocate: string): Boolean;
var
  oldRec: Longint;
begin
  Result:=false;
  if (aDS.RecordCount = 0) then exit;
  oldRec:=aDS.RecNo;
  aDS.First;
  while not aDS.EOF do begin
    if aDS.FieldByName(aField).asString = aToLocate then begin
      Result:=true;
      exit;
    end;
    aDS.Next;
  end;
  aDS.RecNo:=oldRec;
end;

La misma puede ser enrriquesida para otros tipos de datos.

Saludos Reiterados
=========
|| ISMAEL ||
=========
----- Original Message ----- 
From: "José Mejuto" <joshyfun en gmail.com>
To: "Spanish version of Lazarus List" 
<lazarus-es en lists.lazarus.freepascal.org>
Sent: Wednesday, May 04, 2011 4:01 AM
Subject: Re: [Lazarus-es] Función Locate


Hello Ismael,

Tuesday, May 3, 2011, 9:53:36 PM, you wrote:

ILDG> A que se debe la no corrección de Bugs del TMenDataset?. El que lo
ILDG> desarrolló a dejado de soportarlo?

Probablemente...

ILDG> No puedo ofrecerme para ello porque:
ILDG> 1ro no tengo conocimientos para eso.
ILDG> 2do no tengo conexión a Internet.
ILDG> Pero lo que no me agrada para nada es que no se le corrijan los 
problemas
ILDG> detectados. Me gustaría que lo hicieran porque la verdad que en lo 
personal

Si ha sido detectado, pero TMemDataSet ha sido "marcado" como
"deprecated" y se recomienda el uso de "TBufDataSet" en su lugar. Lo
bueno de TBufDataSet es que usa el mismo código de soporte que el
resto de SQLDataSets así que debería siempre estar más actualizado.

Te mando la página de la Wiki al respecto.

ILDG> me parece útil el componente, y de hecho he estado utilizándolo en las
ILDG> pequeñas cosas que he realizado hasta ahora, lo que me deja un poco
ILDG> atolondrado el que existan cosas en Lazarus que no sean actualizadas, 
para
ILDG> mi eso desvalora el sistema como tal.

Cuando no se actualiza algo normalmente es que hay otra cosa mejor que
se está desarrollando.

ILDG> Ahora perdona que te haga otra pregunta, no se si recuerdas que soy 
bien
ILDG> nuevo en esto,  nunca he tenido instalado delphi en mi pc, es más 
pienso
ILDG> nunca tenerlo tampoco, hasta ahora todo lo que he visto de pascal ha 
sido en
ILDG> Lazarus.
ILDG> Me podrías dar un poco más de luz con eso de la función?
ILDG> Realmente estoy atascado por este problema.

Una versión "casera" de locate sería algo como esto, aunque no tan
potente como el Locate original, claro:

function LocateCasero(const aDS: TDataSet; const aField: string; const
aToLocate: string): Boolean;
var
  oldRec: integer;
begin
  oldRec:=aDS.recno;
  aDS.First;
  while not aDS.EOF do
  begin
    if aDS.FieldByName(aField).asString = aToLocate then
    begin
      Result:=true;
      exit;
    end;
  end;
  aDS.recno:=oldRec;
  Result:=false;
end;

-- 
Best regards,
 José


--------------------------------------------------------------------------------


_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es






More information about the Lazarus-es mailing list