掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TMemoryStreamでイベントハンドラを別のオブジェクトにコピーするには? (ID:25507)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Read/WriteComponentは、TFormやTDataModuleなど Rootなコンポーネントで なければ、Eventはんどらを拾えないということで...ほなら...どうする? procedure TForm1.Button1Click(Sender: TObject); var TxtStream: TStringStream; BinStream: TStream; Reader: TReader; Writer: TWriter; Origin: TEdit; MyEdit: TMyEdit; begin Origin := Edit1; MyEdit := TMyEdit.Create(Origin.Owner); BinStream := TMemoryStream.Create(); try Writer := TWriter.Create(BinStream, $1000); try Writer.Root := Origin.Owner; Writer.WriteSignature; Writer.WriteComponent(Origin); Writer.WriteListEnd; finally Writer.Free; end; // 試しに保存内容をチェックしてミル TxtStream := TStringStream.Create(''); BinStream.Position := 0; ObjectBinaryToText(BinStream, TxtStream); Memo1.Text := TxtStream.DataString; TxtStream.Free; Reader := TReader.Create(BinStream, $1000); try Reader.Root := Origin.Owner; Reader.Owner := Origin.Owner; Reader.Parent := Origin.Parent; Reader.Position := 0; Origin.Free; Reader.BeginReferences; try Reader.ReadSignature; Reader.ReadComponent(MyEdit); Reader.FixupReferences; finally Reader.EndReferences; end; finally Reader.Free; end; finally BinStream.Free; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.