Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2012-12

forms, cargar datos del form padre desconociendo nombre

9 messages · 5 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Paola Bruccoleri

Hola todos..

Desde el men� ppal creo un form de esta manera, o sea, NO usando el nombre gen�rico que le pone lazarus:

          f3:= TfrmListaPropietarios.Create(Self);
          try
            f3.Showmodal;
          finally
            f3.Free;
          end;

Ese form tiene una grilla y botones de agregar, etc.. el cl�sico CRUD La grilla muestra los datos de una consulta llamada qryProp. En el bot�n editar tengo esto:

procedure TfrmListaPropietarios.btnEditarClick(Sender: TObject);
var
   fc: TfrmPropietarios;
begin
   qryProp.edit;
   fc:= TfrmPropietarios.Create(Self);
   fc.caption:= 'Modificar registro';
   try
      if (fc.ShowModal = mrOK) Then
         Begin
           qryProp.Post;
           qryProp.CommitUpdates;
           qryProp.ApplyUpdates;
         end
       else begin
           qryProp.Cancel;
           qryProp.CancelUpdates;
       end;
       qryProp.Refresh;
   finally
       FreeAndNil(fc);
   end;
end;

No quiero usar en el form de agregar controles enlazados al datasource, sino TEdits comunes y corrientes.

Entonces deber� cambiar un poco esa forma... no usar el edit, post, etc sino grabar los datos usando un update...
Pero... �C�mo hago en el onShow del formulario fc para cargar los datos que ya hay, si no se c�mo se llama el form padre?

porque algo de esto ya no puedo hacer:
edtNombre.text:= ListaPropietarios.qryProp.FieldByName('nombre').asstring;

porque ListaPropietarios no fue creado de la manera "tradicional" de usar el nombre gen�rico.

se podr� usar "super" o algo as�?

Se agradece cualquier consejo!
muchas gracias
Saludos...

Reply by email

Carlos Enrique Rodriguez
to Paola Bruccoleri

Hola,
Se me ocurren varias formas. Vos decime cual te gusta m�s y si queres la desarrollamos.

- Podes declarar los datos como propertys y mandarlos antes del show del hijo
- Podes redefinir el constructor de tu form hijo
- Antes del show podes pasar una variable (no se si merece ser una property) de tipo Tform con el self del padre y usarla para acceder a los valores del padre

Personalmente prefiero las dos primeras opciones.

Saludos
Carlos

Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�:

Show quoted text 73 lines
Hola todos.. Desde el men� ppal creo un form de esta manera, o sea, NO usando el nombre gen�rico que le pone lazarus: f3:= TfrmListaPropietarios.Create(Self); try f3.Showmodal; finally f3.Free; end; Ese form tiene una grilla y botones de agregar, etc.. el cl�sico CRUD La grilla muestra los datos de una consulta llamada qryProp. En el bot�n editar tengo esto: procedure TfrmListaPropietarios.btnEditarClick(Sender: TObject); var fc: TfrmPropietarios; begin qryProp.edit; fc:= TfrmPropietarios.Create(Self); fc.caption:= 'Modificar registro'; try if (fc.ShowModal = mrOK) Then Begin qryProp.Post; qryProp.CommitUpdates; qryProp.ApplyUpdates; end else begin qryProp.Cancel; qryProp.CancelUpdates; end; qryProp.Refresh; finally FreeAndNil(fc); end; end; No quiero usar en el form de agregar controles enlazados al datasource, sino TEdits comunes y corrientes. Entonces deber� cambiar un poco esa forma... no usar el edit, post, etc sino grabar los datos usando un update... Pero... �C�mo hago en el onShow del formulario fc para cargar los datos que ya hay, si no se c�mo se llama el form padre? porque algo de esto ya no puedo hacer: edtNombre.text:= ListaPropietarios.qryProp.FieldByName('nombre').asstring; porque ListaPropietarios no fue creado de la manera "tradicional" de usar el nombre gen�rico. se podr� usar "super" o algo as�? Se agradece cualquier consejo! muchas gracias Saludos... _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121201/15ce5a04/attachment.html>

Reply by email

Paola Bruccoleri
to Carlos Enrique Rodriguez

Hola Carlos..

El 01/12/2012 08:17 p.m., Carlos Enrique Rodriguez escribi�:

Show quoted text 6 lines
Hola, Se me ocurren varias formas. Vos decime cual te gusta m�s y si queres la desarrollamos. - Podes declarar los datos como propertys y mandarlos antes del show del hijo

si, esto lo pens� pero lo veo muy poco pr�ctico ya que son muchos datos... por ejemplo he usado las property para pasar por ej el nro de cliente o cosas as�

- Podes redefinir el constructor de tu form hijo

c�mo ser�a?

- Antes del show podes pasar una variable (no se si merece ser una property) de tipo Tform con el self del padre y usarla para acceder a los valores del padre

puede ser..

no se.. me gustar�a saber c�mo lo hacen Uds y cu�l es la forma m�s prolija

muchas gracias!

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121201/d50b5bb3/attachment.html>

Reply by email

Carlos Enrique Rodriguez
to Paola Bruccoleri

Hola,
Yo arrancar�a usando propertys.
Quedaria algo asi:

Formpadre:

  Procedure crearHijo
 Var
   Fhijo: TformHijo;
Begin
    Fhijo:= TformHijo.create(self);
    Try
        Fhijo.dato1:= eldato1;
        Fhijo.dato2:= elotrodato;
        If fhijo.showmodal = mrok then
         Begin
             /// aca vuelven los datos
               Eldato1:= fhijo.dato1;
               Elotrodato:= fhijo.dato2;
         End;
     Finally
         Fhijo.free;
     End;
End;

En el form hijo:

Declarasel form....
En la parte private
 _dato1: string;
_dato2: integer;

en la parte public:

Property dato1: string read _dato1 write _dato1
Property dato2: integer read _dato2 write _dato2

Implementation
Aca ya trabajas como quieras con _dato1 y _dato2
Acordate antes de salir de actualizar las variables con elvalor de los controles.

Cualquier cosa, decime que estoy sinn la computadora ahora, por eso lo resumido ydesprolijo de la respuesta.

Saludos
Carlos

Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�:

Show quoted text 35 lines
Hola Carlos.. El 01/12/2012 08:17 p.m., Carlos Enrique Rodriguez escribi�: > Hola, > Se me ocurren varias formas. Vos decime cual te gusta m�s y si queres > la desarrollamos. > > - Podes declarar los datos como propertys y mandarlos antes del show > del hijo si, esto lo pens� pero lo veo muy poco pr�ctico ya que son muchos datos... por ejemplo he usado las property para pasar por ej el nro de cliente o cosas as� > - Podes redefinir el constructor de tu form hijo c�mo ser�a? > - Antes del show podes pasar una variable (no se si merece ser una > property) de tipo Tform con el self del padre y usarla para acceder a > los valores del padre > puede ser.. no se.. me gustar�a saber c�mo lo hacen Uds y cu�l es la forma m�s prolija muchas gracias! ------------------------------------------------------------------------ _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121201/51b8ca8d/attachment.html>

Reply by email

Jose Antonio. Cuello Principal
to Paola Bruccoleri: Hola todos.. Desde el men� ppal creo un form de esta manera, o sea, NO usando el nombre…

Hola, no se si termino de entenderlo, pero tal vez ser�a pasarle un puntero al TDataset al formulario hijo mediante un property y tener un array of strings en el formulario hijo con la lista de campos (se podr�a definir como un const al principio justo debajo de la declaraci�n de la clase TMyFormChild). Luego simplemente con un FieldByName pasas de controles de pantalla al dataset o viceversa.

Algo as�,

En formulario hijo

property Query: TDataSet read FQuery write FQuery;
const
fieldList = array of string ('campo1', 'campo2', 'campo3');
procedure loadDataFromDataset;
var x: Integer;
begin
Edit1.Text := Query.FieldByName(fieldList[0]).asString;
Edit2.Text := InttoStr(Query.FieldByName(fieldList[1]).asInteger);
....
end;

Bueno, espero te sirva. Un saludo

Earlier message 72 lines
----- Mensaje original ----- De: "Paola Bruccoleri" <pbruccoleri en adinet.com.uy> Para: "Lista Lazarus" <lazarus-es en lists.lazarus.freepascal.org> Enviados: S�bado, 1 de Diciembre 2012 23:00:33 Asunto: [Lazarus-es] forms, cargar datos del form padre desconociendo nombre Hola todos.. Desde el men� ppal creo un form de esta manera, o sea, NO usando el nombre gen�rico que le pone lazarus: f3:= TfrmListaPropietarios.Create(Self); try f3.Showmodal; finally f3.Free; end; Ese form tiene una grilla y botones de agregar, etc.. el cl�sico CRUD La grilla muestra los datos de una consulta llamada qryProp. En el bot�n editar tengo esto: procedure TfrmListaPropietarios.btnEditarClick(Sender: TObject); var fc: TfrmPropietarios; begin qryProp.edit; fc:= TfrmPropietarios.Create(Self); fc.caption:= 'Modificar registro'; try if (fc.ShowModal = mrOK) Then Begin qryProp.Post; qryProp.CommitUpdates; qryProp.ApplyUpdates; end else begin qryProp.Cancel; qryProp.CancelUpdates; end; qryProp.Refresh; finally FreeAndNil(fc); end; end; No quiero usar en el form de agregar controles enlazados al datasource, sino TEdits comunes y corrientes. Entonces deber� cambiar un poco esa forma... no usar el edit, post, etc sino grabar los datos usando un update... Pero... �C�mo hago en el onShow del formulario fc para cargar los datos que ya hay, si no se c�mo se llama el form padre? porque algo de esto ya no puedo hacer: edtNombre.text:= ListaPropietarios.qryProp.FieldByName('nombre').asstring; porque ListaPropietarios no fue creado de la manera "tradicional" de usar el nombre gen�rico. se podr� usar "super" o algo as�? Se agradece cualquier consejo! muchas gracias Saludos...

Reply by email

Maxi
to Jose Antonio. Cuello Principal

El d�a 3 de diciembre de 2012 03:47, Jose Antonio. Cuello Principal <jcuello en artextrading.com> escribi�:

Show quoted text 112 lines
Hola, no se si termino de entenderlo, pero tal vez ser�a pasarle un puntero al TDataset al formulario hijo mediante un property y tener un array of strings en el formulario hijo con la lista de campos (se podr�a definir como un const al principio justo debajo de la declaraci�n de la clase TMyFormChild). Luego simplemente con un FieldByName pasas de controles de pantalla al dataset o viceversa. Algo as�, En formulario hijo property Query: TDataSet read FQuery write FQuery; const fieldList = array of string ('campo1', 'campo2', 'campo3'); procedure loadDataFromDataset; var x: Integer; begin Edit1.Text := Query.FieldByName(fieldList[0]).asString; Edit2.Text := InttoStr(Query.FieldByName(fieldList[1]).asInteger); .... end; Bueno, espero te sirva. Un saludo ________________________________ De: "Paola Bruccoleri" <pbruccoleri en adinet.com.uy> Para: "Lista Lazarus" <lazarus-es en lists.lazarus.freepascal.org> Enviados: S�bado, 1 de Diciembre 2012 23:00:33 Asunto: [Lazarus-es] forms, cargar datos del form padre desconociendo nombre Hola todos.. Desde el men� ppal creo un form de esta manera, o sea, NO usando el nombre gen�rico que le pone lazarus: f3:= TfrmListaPropietarios.Create(Self); try f3.Showmodal; finally f3.Free; end; Ese form tiene una grilla y botones de agregar, etc.. el cl�sico CRUD La grilla muestra los datos de una consulta llamada qryProp. En el bot�n editar tengo esto: procedure TfrmListaPropietarios.btnEditarClick(Sender: TObject); var fc: TfrmPropietarios; begin qryProp.edit; fc:= TfrmPropietarios.Create(Self); fc.caption:= 'Modificar registro'; try if (fc.ShowModal = mrOK) Then Begin qryProp.Post; qryProp.CommitUpdates; qryProp.ApplyUpdates; end else begin qryProp.Cancel; qryProp.CancelUpdates; end; qryProp.Refresh; finally FreeAndNil(fc); end; end; No quiero usar en el form de agregar controles enlazados al datasource, sino TEdits comunes y corrientes. Entonces deber� cambiar un poco esa forma... no usar el edit, post, etc sino grabar los datos usando un update... Pero... �C�mo hago en el onShow del formulario fc para cargar los datos que ya hay, si no se c�mo se llama el form padre? porque algo de esto ya no puedo hacer: edtNombre.text:= ListaPropietarios.qryProp.FieldByName('nombre').asstring; porque ListaPropietarios no fue creado de la manera "tradicional" de usar el nombre gen�rico. se podr� usar "super" o algo as�? Se agradece cualquier consejo! muchas gracias Saludos... _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Donde estan los datos? en el for principal o en modulo de datos? si es un modulo de datos agrega este al form y listo. sino al aceptar y retornar si fue Ok lees los controles edits y haces un insert y guardas. Pero para levantar los datos que ya tiene el registro antes de abrir el formulario le tenes que pasar/llenar con los datos del registro a mano.

El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog

Reply by email

Paola Bruccoleri
to Maxi

Hola Maxi..

El 03/12/2012 11:20 a.m., Maxi escribi�:

Donde estan los datos? en el for principal o en modulo de datos? si es un modulo de datos agrega este al form y listo.

los datos est�n en el form donde est� el grid, que no es el form ppal ni un m�dulo de datos.

sino al aceptar y retornar si fue Ok lees los controles edits y haces un insert y guardas.

si,eso es lo q hago para guardar..

Pero para levantar los datos que ya tiene el registro antes de abrir el formulario le tenes que pasar/llenar con los datos del registro a mano.

si, es lo que quiero hacer, pero de antemano no se el nombre del form que lo llam� porque no uso el nombre gen�rico que le da lazarus a cada form

byeeeeeeee

Reply by email

Maxi
to Paola Bruccoleri
Show quoted text 5 lines
si, es lo que quiero hacer, pero de antemano no se el nombre del form que lo llam� porque no uso el nombre gen�rico que le da lazarus a cada form byeeeeeeee

Depende si lo queres hacer super automatico generico, podes poner una propiedad en el for con el datasouce del padre que asignas al momento que lo crea.
Y en el create del hijo recorres la estructura del los datos que apuntan al datasource y creas dinamicamente los controles y cargas los datos.
Eso te serviria para casi cualquier pantalla de carga de cualquier form. Si es algo fijo a mano antes de mostrar y listo.

El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog

Reply by email

Martin Gomez
to Paola Bruccoleri: Hola Maxi.. El 03/12/2012 11:20 a.m., Maxi escribi�: los datos est�n en el form donde…

2012/12/3 Paola Bruccoleri <pbruccoleri en adinet.com.uy>

Show quoted text 7 lines
Pero para levantar los datos que ya tiene el > registro antes de abrir el formulario le tenes que pasar/llenar con > los datos del registro a mano. > si, es lo que quiero hacer, pero de antemano no se el nombre del form que lo llam� porque no uso el nombre gen�rico que le da lazarus a cada form

Una forma (quizas poco prolija, por no usar properties) es acceder a los TEdit desde fuera.

f3 := TCRUDForm.Create(nil)
f3.Edit1.Text := query.FieldByName('campo1').AsString;
f3.Edit2.Text := query.FieldByName('campo2').AsString;
if f3.ShowModal = mrOk then
begin
 // actualizo
 qryUpdate.SQL.Text := 'UPDATE tabla set campo1=' + f3.Edit1.Text;
end;
FreeAndNil(f3);
Try not to become a man of success but rather to become a man of value. *Albert Einstein* ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121203/35213416/attachment.html>

Reply by email