フォームに貼り付けることが出来るTFrameコンポーネント、タブ型エディタの各タブに自動的に配置するようにすると、便利です。が、どうも使い方がちょっと難しいようです。
フレームにTEditorをのせて、フォーム幅に合わせて動的に変更しようと思ったんですが…。
Editor.WrapOption.WrapByte:= (Editor.ClientWidth - (Editor.Leftbar.LeftMargin + Editor.Leftbar.RightMargin + Editor.Leftbar.Column * Editor.Canvas.TextHeight('1') + Editor.Margin.Left ) ) div Editor.Canvas.TextWidth('W');
このコードをどこか(メインフォームのOnResizeでも、フレームのOnResizeでも)に書いて実行すると、フレームを破棄するときにエラーが起こるようです。
if InDestroy then exit; // InDestroyはデストラクタの最初にTrueにするBoolean変数
コードを実行する前に、デストラクタが呼ばれたあとは実行しないように、Ifをもうけてもダメです。原因は分かりませんが、
Editor.WrapOption.WrapByte := 999;
や
Editor.WrapOption.WrapByte := Editor.ClientWidth;
などとやると大丈夫なので、どうやらEditor.Canvasを呼び出したのが問題だったようです。
14:22追記 どうやらコードを書いただけで、エラーになるようですね(呼び出したかどうかに関係なく)。TEditorのコードに何か抵触する部分があるのか、どっちにしてもコードに問題があるようです。最適化を切ってもダメでした。