Sign in Join

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

Mailing lists / lazarus-es / 2011-06

Asignar valor a combo dentro de un grid desde un formulario hijo

6 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

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

Ismael L. Donis García

Estoy llamando a un formulario desde otro formulario de la siguiente forma:

procedure Tfconta.mnuarcclacpClick(Sender: TObject);
var
  f: Tfcaptar;
begin
  f:=Tfcaptar.Create(Self);
  f.Caption := self.mnuarcclacp.Caption;
  f.ShowModal;
  f.Free;
end;

Desde este llamo a otro formulario de la siguiente forma:

procedure Tfcaptar.cboorgKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  f: Tfvisual;
begin
  if key = 120 then begin
        f:=Tfvisual.Create(Self);
        f.Caption:='Organismos';
        f.dbg.DataSource:=dm.dt1;
        f.lblfind.Caption:=cboorg.Text;
        f.ShowModal;
        f.Free;
  end;
end;

Desde este �ltimo quiero pasarle un valor a un combo que est� dentro de un grid del formulario que llam� este �ltimo, pero me da error SIGSEGV en la siguiente instrucci�n:

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

Como podr�a pasar un valor al combo del formulario al que llam� este �ltimo sin que me de dicho error?

Perdonen lo extenso del mensaje pero no se como redactarlo m�s corto para que me entiendan. =========
|| ISMAEL ||
=========
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20110610/10e8246f/attachment.html>

Reply by email

José Mejuto
to Ismael L. Donis García

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�

Reply by email

Ismael L. Donis García
to José Mejuto

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

Earlier message 76 lines
----- 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�

Reply by email

Ismael L. Donis García

----- Original Message -----

Earlier message 32 lines
From: "Ismael L. Donis Garc�a" <ismael en citricos.co.cu> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Friday, June 10, 2011 5:08 PM Subject: Re: [Lazarus-es] Asignar valor a combo dentro de un grid desde unformulario hijo >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 || > ========= Problema solucionado. Pero me siguen los problemas. Necesito generar archivos para LibreOffice Calc. Alguien ha hecho algo de esto? Cualquier ayuda ser� bien venida. Saludos Cordiales ========= || ISMAEL || =========

Reply by email

Ismael L. Donis García
to José Mejuto

Recibido el privado perfecto, ahora me pongo a revisarlo (ya le ech� una mirada al PDF)

1 Mill�n de Gracias
=========
|| ISMAEL ||
=========

Earlier message 27 lines
----- Original Message ----- From: "Jos� Mejuto" <joshyfun en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Wednesday, June 15, 2011 3:35 AM Subject: Re: [Lazarus-es] Asignar valor a combo dentro de un grid desdeunformulario hijo Hello Ismael, Monday, June 13, 2011, 3:52:05 PM, you wrote: ILDG> Necesito generar archivos para LibreOffice Calc. Alguien ha hecho algo de ILDG> esto? ILDG> Cualquier ayuda ser� bien venida. http://wiki.lazarus.freepascal.org/FPSpreadsheet Te lo mando en un email privado. -- Best regards, Jos�

Reply by email