[Lazarus-es] Error en formularios y lazreport

Maxi maximiliano.duarte en gmail.com
Lun Jul 20 18:54:12 CEST 2015


El día 18 de julio de 2015, 11:57, Ismael L. Donis Garcia
<slibre en citricos.co.cu> escribió:
> En el encabezamiento del grupo das click secundario y marcas las opción de
> Forzar Nueva Página.
>
> Respecto a Delphi ni me preguntes. Jamas en la vida lo he usado, nunca me ha
> gustado. En windows siempre había trabajado con Visual Estudio.
>
> He mirado a Lazarus porque es libre y multiplataforma y como yo me he tirado
> ultimamente para Linux, soy el encargado en mi empresa en difundir el soft
> libre. De hecho el sistema operativo que uso por defecto es Jessie, aunque
> tengo PC virtuales con 1 millón de sistemas porque viy haciendo estudios de
> los que puedo hacerme, ahora mismo estoy mirando a Manjaro OpenRC el cual ha
> tenido una bueba aceptación.
>
> En estos momentos estoy parado en Lazarus, hoy voy a instalar la versión
> 1.4.2 a ver si me resuelve un problema que tengo precisamente con lazreport
> el cual me da una ecepción si cierro todos los formulario abiertos desde un
> modulo de datos y los vuelvo a abrir. Al volver abrir los formulario y
> tratar de visualizar algo en lazreport este tira una ecepción y me cierra el
> programa la rutina que tengo para cerrar los formularios es la siguiente:
>
> procedure Tdm.IniSis();
> var
> f: Tforigen;
>  i: integer;
> begin
>  DecimalSeparator:='.';
>  ThousandSeparator:=',';
>  ShortDateFormat := 'dd/mm/yyyy';
>  blnend := false;
>  intciclo := 0;
>  intfilas := 0;
>  intnivel := 0;
>  lngentidad := 0;
>  struser := '';
>  strerror := '';
>  for i := Screen.FormCount - 1 downto 0 do begin
>    if Screen.Forms[i].Name <> Self.Name then begin
>      if Screen.Forms[i].Name <> 'fconta' then Screen.Forms[i].Free;
>    end;
>  end;
>  for i := Screen.FormCount - 1 downto 0 do begin
>    if Screen.Forms[i].Name <> Self.Name then Screen.Forms[i].Free;
>  end;
>  Application.CreateForm(Tfconta, fconta);
>  Application.CreateForm(Tfsplash, fsplash);
> fsplash.Show;
>  Application.ProcessMessages;
>  if datos() then
>    entrar()
>  else
>    begin
>      f:=Tforigen.Create(Self);
>      f.IniSystem:=true;
>     f.ShowModal;
>     f.Free;
>      if blnend then
>        cerrarme()
>      else if datos() then
>        begin
>          intciclo := intciclo + 1;
>         entrar()
>        end
>      else
>        cerrarme();
>    end;
> end;
>
> El error que me da es el siguiente:
> El proyecto XXXX  ha lanzado una excepción de la clase Éxternal: SIGSEGV' En
> Archivo '.\include\control.inc'en linea 3260
>
> Pero no veo cual puede ser el error porque si no cierro los formularios con
> la rutina anterior nunca me da ese error, lo peor del caso es que a veces si
> tengo que utilizar ese procedimiento.
>
> Por ese motivo voy a instalar la versión 1.4.2 a ver si persiste el
> problema.
>
> Saludos Cordiales
> ========
> | ISMAEL |
> ========

Paso a otro hilo para que sirva despues.

Creo que primero debes dejar al modulo de datos solo para datos, y
hacer las creaciones y destrucciones mas controladas.

>  Application.CreateForm(Tfsplash, fsplash);
> fsplash.Show;

el splash lo creas en el proyecto

>  Application.CreateForm(Tfconta, fconta);

No usaria esto sino Tfconta.Create(self), aunque en tu caso usaria el
envento occlose y le pondria caFree, que lo destruye al salir del
form, con eso te olvidas de liberarlo y no usaria Self sino nil (sin
pariente)

procedure TFormPrincipal.FormClose(Sender: TObject;  var CloseAction:
TCloseAction);
begin
  CloseAction:=caFree;
end;


Te ayudo si quieres

-- 
El que pregunta aprende, y el que contesta aprende a responder.

No a la obsolecencia programada:
http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml

Linux User #495070
http://domonetic.com/blog




More information about the Lazarus-es mailing list