2012-05-08 15 views
2

delphi 7 TRichEditコンポーネントを使用すると、RTFデータがmswordドキュメントからコピー&ペーストによってインポートされていますが、データがボックスに含まれていると正しく表示されません。Delphi 7 TRichTextEdit正しく表示されないテキスト

enter image description here

は、それがバージョン4.1にTRichEditクラスをサブクラス化する必要があり、次のように使用する

+0

へのRiched20.dll(最新版​​)を追加するのと同じくらい簡単でした? –

+0

はい、うまくいくようですが、RXとDelphiのRTFエディタを使用するとレイアウトが変わります。 – KE50

+2

これは、VCLで使用されるリッチエディットコントロールのバージョンで何かをしなければなりません。誰かが細部を覚えていると確信しています。 –

答えて

3

てみを支援してください。しかし、Delphi 7が介在クラスをサポートしているかどうかはわかりませんので、次のコードを貼り付けてプロジェクトを構築してみてください。
コンパイルする場合、TRichEditコンポーネントを配置してプロジェクトを実行すると、RichEdit 4.1が取得されます。

unit Unit1; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, StdCtrls, ComCtrls, RichEdit; 

type 
    TRichEdit = class(ComCtrls.TRichEdit) 
    protected 
    procedure CreateParams(var Params: TCreateParams); override; 
    end; 

type 
    TForm1 = class(TForm) 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    Form1: TForm1; 
    FRichEditModule: THandle; 

implementation 

{$R *.dfm} 

{ TRichEdit } 

procedure TRichEdit.CreateParams(var Params: TCreateParams); 
const 
    RichEditClassName = 'RICHEDIT50A'; 
    RichEditModuleName = 'MSFTEDIT.DLL'; 
    HideScrollBarsStyle: array[Boolean] of DWORD = (ES_DISABLENOSCROLL, 0); 
    HideSelectionsStyle: array[Boolean] of DWORD = (ES_NOHIDESEL, 0); 
begin 
    if FRichEditModule = 0 then 
    begin 
    FRichEditModule := LoadLibrary(RichEditModuleName); 
    if FRichEditModule <= HINSTANCE_ERROR then 
     FRichEditModule := 0; 
    end; 
    inherited CreateParams(Params);  
    CreateSubClass(Params, RichEditClassName); 
    Params.Style := Params.Style or HideScrollBarsStyle[HideScrollBars] or 
    HideSelectionsStyle[HideSelection]; 
    Params.WindowClass.style := Params.WindowClass.style and 
    not (CS_HREDRAW or CS_VREDRAW); 
end; 

initialization 

finalization 
    if FRichEditModule <> 0 then 
    FreeLibrary(FRichEditModule); 

end. 
+1

IIRC RxRichEditは既にRICHED20.DLLを使用していました。それが正しく表示されない場合は、あなたのコメントにあなたのコメントの中で言及したようにOPはおそらく "RICHEDIT50W"(またはAnsiの回答がある場合はおそらく 'RICHEDIT50A')を目指すべきです。 –

+0

@Sertac、既にバージョン5.0がありますか?私は高度な豊富な編集ユーザーではなく、2.0に満足しています:-)そして、私はDelphi 7(v.1.0について考えていました)の概要を本当に失ってしまいました。 – TLama

+0

TRichEditコンポーネントを追加した後に 'RichEdit Line Insertion'エラーが発生する – KE50

2

が最後にそれが動作するようになった、

あなたがワードパッドに貼り付けた場合は、それが正しく表示さん、アプリケーションフォルダ

関連する問題