delphi 7 TRichEditコンポーネントを使用すると、RTFデータがmswordドキュメントからコピー&ペーストによってインポートされていますが、データがボックスに含まれていると正しく表示されません。Delphi 7 TRichTextEdit正しく表示されないテキスト
は、それがバージョン4.1にTRichEdit
クラスをサブクラス化する必要があり、次のように使用する
delphi 7 TRichEditコンポーネントを使用すると、RTFデータがmswordドキュメントからコピー&ペーストによってインポートされていますが、データがボックスに含まれていると正しく表示されません。Delphi 7 TRichTextEdit正しく表示されないテキスト
は、それがバージョン4.1にTRichEdit
クラスをサブクラス化する必要があり、次のように使用する
てみを支援してください。しかし、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.
IIRC RxRichEditは既にRICHED20.DLLを使用していました。それが正しく表示されない場合は、あなたのコメントにあなたのコメントの中で言及したようにOPはおそらく "RICHEDIT50W"(またはAnsiの回答がある場合はおそらく 'RICHEDIT50A')を目指すべきです。 –
@Sertac、既にバージョン5.0がありますか?私は高度な豊富な編集ユーザーではなく、2.0に満足しています:-)そして、私はDelphi 7(v.1.0について考えていました)の概要を本当に失ってしまいました。 – TLama
TRichEditコンポーネントを追加した後に 'RichEdit Line Insertion'エラーが発生する – KE50
が最後にそれが動作するようになった、
あなたがワードパッドに貼り付けた場合は、それが正しく表示さん、アプリケーションフォルダ
へのRiched20.dll(最新版)を追加するのと同じくらい簡単でした? –
はい、うまくいくようですが、RXとDelphiのRTFエディタを使用するとレイアウトが変わります。 – KE50
これは、VCLで使用されるリッチエディットコントロールのバージョンで何かをしなければなりません。誰かが細部を覚えていると確信しています。 –