掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
html画面で編集出来るようなツールの作成 (ID:34245)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
よろしくお願いします。環境はWindowsXP sp3 Delphi6 Personalです。 先に「簡易HTMLエディターを作成するには・・。」という質問がありましたが 私もローカルのHTMLファイルをロードして簡易なHTML画面の編集ができるツールを作りたいと勉強しています。 私の力でここまでたどり着いたのではなくサイトを探して参考例を集めた結果 下記のようになりました。 uses ActiveX,mshtml_TLB; var Doc:TStringList; //HTMLファイルをロードする procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then WebBrowser1.Navigate(OpenDialog1.FileName); Doc:=TStringList.Create; Edit1.Text:= OpenDialog1.FileName; end; //html画面のソースを取得する function TForm1.GetSource: String; var DispIHTMLDocument: IHTMLDocument2; //mshtml_TLBが必要 Persist: IPersistStream; // ActiveX,が必要 Mem: TStringStream; begin result:=''; Mem := TStringStream.Create(''); try DispIHTMLDocument :=WebBrowser1.Document as IHTMLDocument2; Persist := DispIHTMLDocument as IPersistStreamInit; Persist.Save(TStreamAdapter.Create(Mem), True); Result := Mem.DataString; finally Mem.Free; end; end; //html画面を編集可能/不可能に切り替える procedure TForm1.SetDesignMode(Value: Boolean); var HTML: IHTMLDocument2; begin HTML := WebBrowser1.Document as IHTMLDocument2; if Value then HTML.designMode := 'On' else HTML.designMode := 'OFF'; end; //ソースの取得 procedure TForm1.Button2Click(Sender: TObject); begin Doc.Text:= GetSource; //memo1.Lines.Add(Doc.Text); SetDesignMode(true);//編集可能にする end; 計画ではこのあと、html画面でのカーソルの位置をソース上の何文字目にあるかが特定できれば 例えば半角の<br>などを挿入して改行を挿入したソースを再表示すれば改行された画面になり編集できたことになるのではと思います。 memoなどは何行目何文字目と取得する例が有りましたが html画面のカーソル位置をhtmlソース上でカーソルの位置を特定する方法があるでしょうか。 ありましたら教えて頂きたいと思います。 (Microsoft DHTML Editing ControlなるものをDLして見ましたが、なにか脆弱性が問題とかで MicrosoftはVista以降サポートしないと書いてあり、その使用例などほぼ皆無でした。) よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.