[Lazarus-es] Asignar valor a combo dentro de un grid desde unformulario hijo

Ismael L. Donis García ismael en citricos.co.cu
Vie Jun 10 23:08:20 CEST 2011


1 Millón de gracias, ya lo había resuelto creando una propiedad pública y 
pasando y leyendo el valor desde dicha propiedad.

Ahora tengo que ver que evento se dispara cuando aprieto el botón dentro de 
un TDBGrid que esté declarado de la siguiente forma:

dbg.Columns.Items[0].ButtonStyle:=cbsEllipsis;   // dbg = TDBGrid

Gracias Reiteradas
=========
|| ISMAEL ||
=========
----- Original Message ----- 
From: "José Mejuto" <joshyfun en gmail.com>
To: "Spanish version of Lazarus List" 
<lazarus-es en lists.lazarus.freepascal.org>
Sent: Friday, June 10, 2011 3:38 PM
Subject: Re: [Lazarus-es] Asignar valor a combo dentro de un grid desde 
unformulario hijo


Hello Ismael,

Friday, June 10, 2011, 6:13:17 PM, you wrote:

ILDG> Estoy llamando a un formulario desde otro formulario de la siguiente 
forma:
[...]
ILDG> procedure Tfcaptar.cboorgKeyDown(Sender: TObject; var Key: Word;

uses xxxxx,yyyyy;

implementation

uses ufcaptarform; //O como se llame.

ILDG> procedure Tfvisual.FormCloseQuery(Sender: TObject; var CanClose: 
boolean);
ILDG> begin
ILDG>   if not blnend then begin
ILDG>    if (Self.Caption = 'Organismos')  then
ILDG>
ILDG> fcaptar.cboorg.Text:=dm.rssc1.FieldByName('nombre').AsString;

         Tfcaptar(Self.owner).cboorg.text:= ......

ILDG>   end;
ILDG> end;

De todos modos no me gusta nada ese sistema. Si tienes que hacer
referencia a un form o algo que "se ha quedado atrás", pasa la
referencia a ese form en una property y crea un método en el form que
se ha quedado atrás para que realize la operación. Lo que quedaría
como:

  Captarform.UpdateComboWithText(dm.rssc1.FieldByName('nombre').AsString);

Si no, con el paso del tiempo te vas a encontrar que si sacas un form
de un programa resulta que el 50% del resto de formularios dejan de
funcionar. Los formularios deberían de ser cuanto más autónomos,
mejor y a ser posible nunca hacer referencia explícita a ningún objeto
visual, si no hacerlo a través de un método o propiedad.

Por ejemplo, esto:

f.Caption:='Organismos';
f.dbg.DataSource:=dm.dt1;
f.lblfind.Caption:=cboorg.Text;
f.ShowModal;
f.Free;

quedaría algo como:

f.Caption:='Organismos';
f.UseDataSource:=dm.dt1;
f.QueBuscar:=cboorg.Text;
f.ShowModal;
f.Free;

Si decides cambiar el lblfind por un TEdit, los cambios los haces en
el form localmente, no tienes que buscar en todos los forms a ver cual
hace referencia a "lblfind".

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