ホームページ Internet Program for Delphi

UIDHTMLEd
インストール

UIDHTMLEd
イベント
 

アクション 

メソッド
プロパティ
 

 

UIDHTMLEdコンポーネントの使い方

UIDHTMLEdコンポーネントの最低限のコードの実装例は、「サンプル」ディレクトリのUnit1.pasに実際のコードが書いてあります。参考にしてください。
 

DHTMLSafe・UIDHTMLEdコンポーネントをフォームへ

UIDHTMLEは、DHTMLSafeコンポーネントをつかいます。コンポーネントパレット「ActiveX」からDHTMLSafeを選んでフォームへポトリ・ペタしてください。そして、コンポーネントパレット「WWW」からUIDHTMLEdを選んでフォームに貼りつけてください。Panelの上にDHTMLSafeを貼りつけると、PopUPメニューをつくる時楽になります
 
UIDHTMLEdコンポーネントをコンポーネントパレットからフォームへポトリ・ペタをしたあと最低限以下のコードを実装する必要があります。UIDHTMLEdのDLG_Sizeプロパティの数値をかえるとダイアローグの大きさをかえることができます。解像度に合わせてお使いください。標準は、100です。100より大きな数値を入れてください。
   UIDHTMLEdは、DHTMLEdの数々のバグをfixしています。できるだけUIDHTMLEdのプロパティ・メソッドをお使いください。ただし、NewDocumentメソッドだけは、TDHTMLSafeのものをお使いください。
  1. activeXの初期化
    DHTMLEd・DHTMLSafeは、自前では、初期化しません。プロセスごとに OleInitialize(nil)を実行しなければなりません。SDIの場合には、下記のようなコードを実装します。
    initialization
     	OleInitialize(nil);
    {------------------------------------------------------------------------------}
    finalization
    	OleUninitialize;
    
    end.
  2. メッセージハンドラの設定
    フォームのFormCreateイベント時にメッセージハンドラを設定します。DHTMLEd,WebBrowserなどのActiveXは、インスタンス化しただけでは、子ウインドウにメッセージが流れない仕様になっています。
     UIWebBrowserコンポーネントで定義している、THookApplicationMessageを利用して、Application.onMessageを複数のイベントハンドラで共有できるようにします。
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    //メッセージハンドラの処理(ActiveXの不具合修正)
     if  HookOnMessage = nil then
     begin
       HookOnMessage := THookApplicationMessage.create;
       application.OnMessage :=  hookOnMessage.Handler;
      end;
      HookOnMessage.HookMessage( DHTMLSafe1.MessageHandler );
    
    end;
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
        HookOnMessage.UnHookMessage( DHTMLSafe1.MessageHandler );
    end;
  3. UIDHTMLEdの初期化
    UIDHTMLEdの初期化は、 DHTMLSafeのDocumentCompleteイベント内でおこないます。
     DocumentCompleteイベントは、DHTMLSafeがインスタンス化される時に、一度だけ発生します。
     このイベントは、 DocumentCompleteとなっていますが、このイベント内では、安全にActiveXのメソッド・プロパティを操作できません。このことは、DHTMLEdでアプリケーションをつくろうとする時に、初心者が、原因不明の実行時エラーで悩む元凶です。
     新規にドキュメントが作られ、完全にすべてのメソッド・プロパティが操作できるようになるのは、新しく、追加したonNewCompleteイベント以降になります。
     
    procedure TForm1.DHTMLSafe1DocumentComplete(Sender: TObject);
    //DocumentCompleteはDHTMLEdをインスタンス化する時に一度だけ発生する。
    begin
      if not DHTMLSafe1.DocComplete then   //念のためチェック
      begin
        //ドキュメントライブラリーセット(イニシャライズ)
         UIDHTMLEd.SetDHTMLEDit( DHTMLSafe1.ControlInterface );
         DHTMLSafe1.UIEditon := UIDHTMLEd ;
      end;
    end;
     
  4. BaseURLの設定
    新規にドキュメントが作られ、完全にすべてのメソッド・プロパティが操作するには、新しく、追加した新しく追加したonNewCompleteイベント以降は、安全にActiveXのプロパティ・メソッドを安全に操作できます。
    このイベントで、BaseURLプロパティをセットしてください。
    なお、DHTMLEd,DHTMLSafeのいくつかのプロパティには、問題がありますので、UIDHTMLEdに実装されているプロパティについては、UIDHTMLEdのものを使ってください。(BaseURL
    procedure TForm1.DHTMLSafe1NewDocument(Sender: TObject);
    begin
    //ここで、documentがリセットされた時のbaseURLプロパティをセットする
      Dlg_baseURL.ShowModal;
    
    end;
     
  5. セーブ・オープンのダイアローグをセット
    UIDHTMLEdのインスペクタでLoadDialogプロパティにTOpenDialogSaveDialogにTSaveDialogのコンポーネントを割り当てます。
     
  6. メニューとアクションリストのセット
    メニューとアクションリストをセットします。これだけでいっさいコードを書かずに、HTMLEditorアプリケーションのコマンドを実装できます。サンプルのTMenu・TPopUp・TImageList・TActionListを[SHIFT]+左クリックでまとめて選択してコピーして、自分のアプリケーションのフォームに貼り付ければ、瞬時にしてHTMLエディタのコマンドを実装できます。
     あとは、PopUPの実装、ファイルのセーブ・ロードを実装すれば、とりあえずHTMLエディタとしてのアプリケーションを組むことができます。
    //名前を付けてセーブ
    procedure TForm1.FileSaveAsCmdExecute(Sender: TObject);
    begin
       UIDHTMLEd.SaveDocument;
    
    end;
    
    
    //HTMLファイルオープン
    procedure TForm1.FileOpenCmdExecute(Sender: TObject);
    begin
     UIDHTMLEd.LoadDocument;
    end;
    
    //新規
    procedure TForm1.FileNewCmdExecute(Sender: TObject);
    begin
      if UIDHTMLEd.QueryDocumentSave(UIDHTMLEd.DocumentTitle) then
         DHTMLSafe1.NewDocument; file://newDocumentだけは、TDHTMLSafeのプロパティを使用のこと
    end; //終了処理********** //メニューによる終了 procedure TForm1.existingExecute(Sender: TObject); begin if UIDHTMLEd.QueryDocumentSave( UIDHTMLEd.DocumentTitle ) then close; end; //フォームクローズによる終了******** procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose := UIDHTMLEd.QueryDocumentSave( UIDHTMLEd.DocumentTitle ); end; //コンテクストメニューのしょり procedure TForm1.DHTMLSafe1ShowContextMenu(Sender: TObject; xPos, yPos: Integer); begin with panel1.ClientToScreen(UIDHTMLEd.MousePoint) do self.pop_Main.Popup( x,y ); end;
以上で最も簡単なHTMLエディタが書けます。 
 
 
ホームページ Internet Program for Delphi  

UIDHTMLEd
インストール

UIDHTMLEd
イベント
 

アクション 

メソッド
プロパティ