Hola santiago14.
Tal vez te sea útil crear una clase en otra unidad que incluyéndola, te permita transferir el
TMemoryStream a cualquier form:
Código Delphi
[-]
unit Transf_Stream;
interface
uses SysUtils,Classes;
type
TTransferStream = class(TObject)
private
FStream: TMemoryStream;
function GetStream: TMemoryStream;
procedure SetStream(const Value: TMemoryStream);
public
constructor Create; reintroduce; overload;
property DataStream: TMemoryStream read GetStream write SetStream;
destructor Destroy; override;
end;
var
TrStream: TTransferStream;
implementation
constructor TTransferStream.Create;
begin
inherited;
FStream:= TMemoryStream.Create;
end;
function TTransferStream.GetStream: TMemoryStream;
begin
FStream.Position:= 0;
Result := FStream;
end;
procedure TTransferStream.SetStream(const Value: TMemoryStream);
begin
Value.Position:= 0;
FStream.LoadFromStream(Value);
end;
destructor TTransferStream.Destroy;
begin
if Assigned(FStream) then
FStream.Free;
inherited Destroy;
end;
end.
Un ejemplo de uso, formulario emisor:
Código Delphi
[-]
...
implementation
uses Unit2 , Transf_Stream;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
TransferStream := TTransferStream.Create;
try
RichEdit1.Lines.SaveToStream(TransferStream.DataStream);
if not Assigned(Form2) then
Form2:= TForm2.Create(Self);
Form2.Show finally
TransferStream.Free
end;
end;
...
En los formularios receptores podrías hacer:
Código Delphi
[-]
...
implementation
uses Transf_Stream;
procedure TForm2.FormCreate(Sender: TObject);
begin
if Assigned(TransferStream) then
RichEdit1.Lines.LoadFromStream(TransferStream.DataStream);
end;
...
Saludos
