Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-04-2023
Camilo Camilo is offline
Miembro
 
Registrado: jun 2007
Posts: 147
Poder: 17
Camilo Va por buen camino
Pasar parametros desde Frame a su form Parent

Mis muy apreciados y respetados amigos.
En el desarrollo que estoy haciendo necesito.

Desde un Form (FEvaluacion) creo unos frames en tiempo de ejecución. Los frames son un numero indeterminado que dependen de una consulta.
El codigo de la creación es el siguiente:
Código Delphi [-]
procedure TFEvaluacion.CrearFormulario;
var
  i, j, N, Consecutivo:Integer;
  fr:TFramePreg;
  Str, Str1, Str2,
  Str3, Str4, Str5, Str6:String;
  matriz: array of array of Variant;
  begin
  numFrames := 0;
  DataModule1.IBQCuenta.Close;
  DataModule1.IBQCuenta.ParamByName('INDICADOR').AsInteger:= StrToInt(Edit2.Text);
  DataModule1.IBQCuenta.Open;
  Rango_Consistencia;
  Label_rango_consistencia;

      N:= StrToInt(DbEdit1.Text);
      i := 0;

      for j := 0 to (N - 1) do

      DataModule1.IBQListado.Close;
      DataModule1.IBQListado.ParamByName('INDICADOR').AsInteger:= StrToInt(Edit2.Text);
      DataModule1.IBQListado.Open;

   with DBGrideh1.DataSource do
    begin
      DataSet.Prior;
      while not DataSet.Eof do
      begin
      // Crear el frame
        fr := TFramePreg.Create(Nil);
        fr.Parent := self.ScrollBox1;
        fr.Top := (fr.Height + 10) * (numFrames - 1) + 1;
        fr.Align := alTop;
        fr.Name := 'FramePregunta' + IntToStr(j + 1);

                  // Asignar textos
                  Str := AnsiReplaceText(Fr.lblCriterio1.Caption, '%t', DbGridEh1.Columns[0].Field.asString);
                  Str := AnsiReplaceText(Str, '%t', DbGridEh1.Columns[0].Field.asString);
                  Fr.lblCriterio1.Caption := Str;

                  Str1 := AnsiReplaceText(Fr.lblCriterio2.Caption, '%t1', DbGridEh1.Columns[2].Field.asString);
                  Str1 := AnsiReplaceText(Str1, '%t1', DbGridEh1.Columns[2].Field.asString);
                  Fr.lblCriterio2.Caption := Str1;

                  Str2 := AnsiReplaceText(Fr.lbldescripcion1.Caption, '%d', DbGridEh1.Columns[1].Field.asString);
                  Str2 := AnsiReplaceText(Str2, '%d', DbGridEh1.Columns[1].Field.asString);
                  Fr.lblDescripcion1.Caption := Str2;

                  Str3 := AnsiReplaceText(Fr.lbldescripcion2.Caption, '%d1', DbGridEh1.Columns[3].Field.asString);
                  Str3 := AnsiReplaceText(Str3, '%d1', DbGridEh1.Columns[3].Field.asString);
                  Fr.lblDescripcion2.Caption := Str3;

                  // incrementa la variable NumFrames y asigna su valor al Tag del frame
                  Inc(NumFrames);
                  Fr.Tag := numFrames;

                  Str4 := AnsiReplaceText(Fr.lblNumPregunta.Caption, '99',  IntToStr(numFrames));
                  Str4 := AnsiReplaceText(Str4, '99', IntToStr(NumFrames));
                  Fr.lblNumPregunta.Caption := Str4;


                  Str5 := AnsiReplaceText(Fr.lbllId_Criterio_1.Caption, '%id1', DbGridEh1.Columns[4].Field.asString);
                  Str5 := AnsiReplaceText(Str5, '%id1', DbGridEh1.Columns[4].Field.asString);
                  Fr.lbllId_Criterio_1.Caption := Str5;

                  Str6 := AnsiReplaceText(Fr.lblId_Criterio_2.Caption, '%id2', DbGridEh1.Columns[5].Field.asString);
                  Str6 := AnsiReplaceText(Str6, '%id2', DbGridEh1.Columns[5].Field.asString);
                  Fr.lblId_Criterio_2.Caption := Str6;

                  fr.Edit4.Text:='1';
                  fr.Edit5.Text:='1';
                  fr.Edit6.Text:='0,1111';
                  fr.Edit7.Text:='0,1111';
                  fr.Edit8.Text:= DbEdit1.Text;
                  fr.Edit9.Text:= Edit2.Text;
                  fr.Edit11.Text:= Edit3.Text;
                  fr.Edit12.Text:= Edit1.Text;
                  fr.DateTimePicker1.DateTime := Now;
                  fr.NumberBox1Change(Self);
                DataSet.Next;
                end;
        end;
end;

Pues bien este frame tiene un Edit15.text que aloja un dato producto de una operación. El FEvaluacion tiene un Edit4.Text en donde necesito reflejar ese Edit15 del frame que esta creado en runtime y cuyo form que lo compone es FEvaluacion.

Necesito algo asi como que desde un Button del frame pueda hacer esto y funcione:

Código Delphi [-]
procedure TFramePreg.Button5Click(Sender: TObject);
begin
  FEvaluacion.Edit4.Text := Edit15.Text;
end;
Responder Con Cita
  #2  
Antiguo 23-04-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.054
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, no crees un hilo nuevo para preguntar lo mismo, espera que alguien conteste, y en todo caso recuérdalo en este mismo hilo. Gracias.
He combinado ambos hilos.
Responder Con Cita
  #3  
Antiguo 27-04-2023
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Yo uso frames de un modo diferente.
Tengo varios que incrusto donde necesito, a veces de forma concurrente, lo que me daba problemas de instancias cuya solución fue bastante tonta.
La variable para usar el frame la defino en el formulario que lo usa, dentro de la sección private.
Tengo un procedimiento que crea el frame usando la variable que necesito y con las características necesarias (diferencias visuales y de comportamiento).

Código Delphi [-]
// FRAME
U_MiFrame
...
Type 
   tfrm_MiFrame = Class(TFame)
   ...
   end;

var
   // Aquí no la defino

// FORMULARIO QUE LO USA
U_OtraCosa

Type 
   tf_OtraCosa = Class()
   ...
   private
      frm_MiFrame_OtraCosa1: tfrm_MiFrame;  // Aquí defino la variable, tantas como necesite
      procedure cargaFrameParametrizado(esteFrame: tfrm_MiFrame; parametros: record);
   end;
Responder Con Cita
  #4  
Antiguo 27-04-2023
Camilo Camilo is offline
Miembro
 
Registrado: jun 2007
Posts: 147
Poder: 17
Camilo Va por buen camino
Gracias por tu respuesta.
En vista de la poca intervención y la urgencia del proyecto, cambie la metodología y todo el concepto de desarrollo.
La verdad no se como dar de baja este tema en el foro.
Mil gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Grabar datos definitivos con ClientDataSet LIGERO MS SQL Server 6 25-08-2017 11:15:38
Acceder desde un WebBrowser a un frame que esta dentro de otro frame. deneus Delphi para la web 1 25-10-2014 17:51:58
Frame en un Form chinchan C++ Builder 3 07-05-2008 13:39:59
Orden de Creación. Form y Frame gluglu Varios 8 20-02-2007 19:24:50
convertir un form en un frame ercrizeporta Varios 6 04-07-2005 21:52:58


La franja horaria es GMT +2. Ahora son las 19:05:22.


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