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