Ver Mensaje Individual
  #9  
Antiguo 23-04-2023
Camilo Camilo is offline
Miembro
 
Registrado: jun 2007
Posts: 147
Reputación: 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