Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como vaciar datos de forms (https://www.clubdelphi.com/foros/showthread.php?t=51087)

Petolansa 05-12-2007 15:44:47

Como vaciar datos de forms
 
Buenas gente les queria haces una consulta, tengo mi programita que de a poco va quedando,tengo un form principal en el cual acedo a las funciones, de factura, remito o albaran como lo llaman en otros lados, presupuesto, etc.
El tema es que bien, los ejecuto, los imprimo si quiero, y todo bien, pero el tema es por ejemplo, realizo una factura, me guarda y se cierra y cuando vuelvo a querer hacer otra estan todavia lo datos de la factura anterior, esto mismo me pasa con los remitos, presupuestos, recios, etc, como descargo todos los forms y los datos. En la mayotia son dgrids asociados a querys, dbedit, edits, dbtext.

Gracias, Saludos!

dec 05-12-2007 15:54:12

Hola,

Pues, según yo lo veo, o bien preparas algún procedimiento que "limpie" lo que necesites, o bien te aseguras de que al cerrar el formulario en cuestión este es "liberado", de modo que cuando lo precises vuelvas a crearlo. De esta forma, el formulario se mostraría "como nuevo" cuando lo necesites. No sé si me explico. :)

Petolansa 05-12-2007 17:33:44

Gracias dec, si se entiende, el tema es como liberarlo, yo en un boton qu es el que me gusrda y me cierra el form le puse form1.free;, pero me da error, No se como hacerlo, es porque uso showmodal?

Saludos

dec 05-12-2007 17:48:11

Hola,

Prueba a liberar el formulario luego de mostrarlo, y desde el mismo sitio en que este se muestra. Es lo que suele hacerse: no hace falta que codifiques nada en el formulario a mostrar y luego cerrar. Puedes usar botones y sus propiedades "ModalResult" para saber cómo se "cerró" el formulario. Ya digo, lo "normal" es hacer algo así:

Código Delphi [-]
with TForm2.Create() do
try
  if (ShowModal() = mrOk) then
  begin
    // El formulario se cerró "OK"
  end;
finally
  // Finalmente liberamos el formulario
  Free();
end;

Una cosa más: si tienes el formulario (en el ejemplo "TForm2") de manera que se cree al iniciarse la aplicación, puedes "quitarlo" de la lista, es decir, no es necesario que se cree (probablemente) al inicio de la aplicación, porque, como ves, es posible crearlo cuando sea preciso y liberarlo cuando ya no lo sea.

Petolansa 05-12-2007 18:58:01

Gracias dec, voy entendiendo, pero no logro hacer que me funcione, agradeceria una manito mas si noe s mucho pedir, esto es lo que intento...

Código Delphi [-]
procedure TFrmprincipal.Recibo1Click(Sender: TObject);
begin
with tfrmrecibo.Create() do //Aqui me marca el error
    try
      if (showmodal()=mrOK) then
      begin
             query2.Close;
             query2.SQL.Clear;
             query2.SQL.Add('select contrecibo from contrecibo');
             query2.Open;
             numrecibo:=query2.Fields[0].AsInteger;
             query2.Close;
             numrecibo:=numrecibo+1;
             frmrecibo.label4.Caption:=inttostr(numrecibo);
       end;
     finally
         free();
      end;

Me dice 'not enough actual parameters'
no hay suficientes parametros actuales seria, :confused:

Saludos!

Gabo 05-12-2007 19:00:24

Otra opción es liberar el formulario al salir, mediante el evento OnClose, así:

Código:


  Action=caFree;  // Código en C++Builder

Cita:

Empezado por dec (Mensaje 250667)
Es lo que suele hacerse: no hace falta que codifiques nada en el formulario a mostrar y luego cerrar. Puedes usar botones y sus propiedades "ModalResult" para saber cómo se "cerró" el formulario. Ya digo, lo "normal" es hacer algo así:

No sé si es lo que "suele hacerse" o si es "lo normal", pero es como yo lo hago... ;) :D :D :D

dec 05-12-2007 19:07:38

Hola,

El error que aparece tiene que ver conque, efectivamente, a mí se me olvidó en el código anterior que los contructores de los formularios necesitan un parámetro, cuando menos. Este parámetro determina el "dueño" (owner) del formulario que se va a crear y, bueno, en este caso bien puedes usar "nil" como parámetro, es decir, no asignar ningún "dueño" al formulario. ¿Por qué? Pues porque tú mismo te encargarás de la liberación del formulario acto seguido, así que no hace falta que lo haga nadie más.

:D :D

Petolansa 05-12-2007 19:52:38

Gracias por la ayuda realmente, no me funiciona, osea no me da error, epor cuando vuelvo a acceder al mismo form los datos siguen ahi, y noto que cuando de ese formulario que llame, llamo a otro, me aparece pero no me trae los datos, a que se debe, eso ocurre desde que lo llamo con tform.create, a que se puede deber esta curiosidad?

Saludos!

Petolansa 05-12-2007 20:11:59

Gracias de nuevo , lo resolvi de la siguiente manera, no si esta bien, pero funciona

Código Delphi [-]
begin
    try
      recibo:=tfrmrecibo.create(nil); //Como me dijo dec
      //abro el query, etc.
      frmrecibo.showmodal;
    finally
      frmrecibo.free;
    end;
end;

y los datos que me quedaban colgados en una parte era porque tengo un query activo en otro formulario que cargo el numero de una factura, asi que lo cierro y listo, me aparece vacio.

Otra vez gracias por el tiempo!


Saludos!;)


La franja horaria es GMT +2. Ahora son las 20:12:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi