[Lazarus-es] actualización lazarus

Ismael L. Donis García ismael en citricos.co.cu
Mie Abr 13 14:33:36 CEST 2011


No pasé el mensaje por nada, solo que me hizo reír por el trabajo que estoy 
pasando en Lazarus en cosas tan simples en VB6, pero creo que dentro de un 
tiempo esto será solo pasado para mi y podré alagar las ventajas de Lazarus. 
Y puedes estar completamente seguro que eso es una de las cosas que más 
deseo y necesito en estos momentos para portar todo lo que he realizado a 
soft libre.

Pero te juro y perjuro que en estos momentos he estado trabado por semanas 
en Lazarus en cosas que son muy simples en VB6, pero como bien sabes no se 
absolutamente nada de Pascal y a veces buscar una solo instrucción en 
Lazarus me cuesta más de un día (recuerda que no tengo acceso a Internet). 
Para poder poner un ejemplo anoche me pase como 2 horas tratando de validar 
un dato a la hora de insertar un registro en un grid y en caso de no cumplir 
la condición me cancele la inserción y me posicione en una columna 
determinada y no lo he logrado: primera porque lo que he hecho me borra todo 
lo que he escrito en las otras columnas y segundo porque me tira siempre 
para la primera columna y eso no es lo que quiero.

A continuación te pongo lo que tengo, que está de hecho mal, pero no he dado 
con lo que necesito aun.

procedure Tfcaptar.dsBeforePost(DataSet: TDataSet);
begin
  if fconta.RegOpe = 'RT' then begin  // fconta es el nombre del formulario 
padre
    if DataSet.FieldByName('reg').AsInteger <= 0 then
      begin
       Application.MessageBox('El número del registro no puede ser un número 
mayor que cero.', pchar(Self.Caption), 0);
        DataSet.Cancel; // aquí trato de cancelar la actualización, la 
cancela pero borra todo lo que escrito en todas las columnas y necesito que 
no borre nada.
        dbg.Columns.Items[0].Grid.SetFocus;  //dbg es el nombre del TDBGrid, 
aquí me trato de posicionar en una columna, esto no funciona
      end
    else if trim(DataSet.FieldByName('nombre').AsString) = '' then begin
      Application.MessageBox('El nombre del registro no puede ser una cadena 
vacía.', pchar(Self.Caption), 0);
      DataSet.Cancel;
      dbg.Columns.Items[1].Grid.SetFocus;
    end;
  end;
end;

Saludos Cordiales
=========
|| 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, April 13, 2011 4:29 AM
Subject: Re: [Lazarus-es] actualización lazarus


Hello Ismael,

Tuesday, April 12, 2011, 8:49:23 PM, you wrote:

ILDG> Me has hecho reír, eso mismo me pasa en Lazarus, sin embargo en VB con
ILDG> instanciar una DLL lo tengo todo.

A ver, primero lo dije un poco en broma, de ahí las ":)" al final de
las frases.

Lo de mi proyecto es totalmente cierto, simplemente escogí el lenguaje
equivocado para ese tipo de proyecto. VB6 tiene sus ventajas e
inconvenientes como todos los lenguajes. En mi caso me tuve que hacer
varias funciones en "C" para intermediar con VB6, claro que si hubiera
hecho todo en "C" no podría haber dedicado tanto tiempo al interface
de usuario. En este caso lo "problemas" que me encontré con VB6 fueron
el acceso a APIs externas (CDecl y otros), conversión implícita de
ciertos parámetros en llamadas StdCall, el abuso del "runtime
automation" que es ventajoso para algunas cosas, pero en mi caso me
volvía loco, y algunos detalles menores con poca importancia.

Siempre he estado muy contento con VB6, por otra parte.

-- 
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