この連載も5回目になって、そろそろ形になってくれればとは思うのだが、作業は遅々として進んでいない。着色問題は当初の予想を遥かに上回って多岐に渡る処理が必要であった。
単純に入力される時のケースで見ても、
ここまでやって、何故SORCERERが構文着色を実装しなかったか、ようやく見えてきたような……まぁしかし俺は諦めないぞ!
まぁ、望みは一旦、Delphi−ML(のバックログ)なりDelphi広場なりに託したいと思いますが
procedure TfrmAppMain.FileSaveExecute(Sender: TObject);
これは単にTextプロパティには自身を保存するメソッドがないことからだったのだが、ひょんな事から別の解決方法を発見。即ち、一時的にPaneTextプロパティをTrueにするのである。
var
Buff: TStringList;
begin
if dlgSaver.Execute then
begin
Buff := TStringList.Create;
Buff.Text := frmEditor.Editor.Text;
Buff.SaveToFile(dlgSaver.FileName);
Buff.Free;
end;
end;
procedure TfrmAppMain.FileSaveExecute(Sender: TObject);
俺個人としては「こんなプロパティあったっけ〜?」てなもんだけど(汗)
begin
if dlgSaver.Execute then
begin
frmEditor.Editor.PlainText := True;
frmEditor.Editor.Lines.SaveToFile(dlgSaver.FileName);
frmEditor.Editor.PlainText := False;
end;
end;
ちなみに、このプロパティを常時Trueにしておいても期待した動作にはならない。読み込み時にTrueであった場合、付加したRTFタグをも単なるテキストとして取り込んでしまうからだ。あくまでも、「エンコードされた書式情報を無視する」ためのプロパティのようで……
常識的には、
frmEditor.Editor.Tag := ord(frmEditor.Editor.PlainText);
みたいな待避と復元が望ましいのだろうけど。
frmEditor.Editor.PlainText := True;
frmEditor.Editor.Lines.SaveToFile(dlgSaver.FileName);
frmEditor.Editor.PlainText := Boolean(frmEditor.Editor.Tag)