Delphi 7 TRichEdit コンポーネントを使用して、RTF データが msword ドキュメントからコピー アンド ペーストによってインポートされますが、データがボックスに含まれている場合、正しく表示されません。
手伝ってください
TRichEdit
以下を使用してみてください。クラスをバージョン 4.1 にサブクラス化する必要があります。ただし、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.
最終的には動作するようになりました。
Riched20.dll (最新バージョン) をアプリケーション フォルダーに追加するだけの簡単な作業でした。