Hola lucasart.
Si, tenés razón. Al cambiar de SDI a MDI, el segundo form en el evento OnShow, pareciera que no tiene aún el valor asignado ...
Es un comportamiento que yo también desconocía... lo voy a investigar.
Pero hasta que averiguemos alguna manera más elegante de hacerlo, a ver si esto te sirve:
MDIForm:
Código Delphi
[-]
uses Unit2, ClipBrd;
procedure TForm1.Mostrar;
var
i: Integer;
begin
for i:= 0 to Screen.FormCount -1 do
if Screen.Forms[i].ClassName = 'TForm2' then
begin
Screen.Forms[i].Show;
Screen.Forms[i].BringToFront;
Exit;
end;
TForm2.Create(nil);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Numero: Integer;
begin
Mostrar;
Numero:= 1234;
ClipBoard.Clear;
ClipBoard.SetTextBuf(PChar(IntToStr(Numero)));
end;
MDIChild:
Código Delphi
[-]
uses ClipBrd;
procedure TForm2.FormShow(Sender: TObject);
begin
f_id_Ajuste:= StrToInt(ClipBoard.AsText);
Caption:= IntToStr(f_id_Ajuste);
end;
Saludos.