使用delphi 7 TRichEdit組件,通過複製粘貼從msword文檔導入RTF數據,但是如果數據包含在一個框中,則它不能正確顯示,即Delphi 7 TRichTextEdit文本框中顯示不正確
請協助
使用delphi 7 TRichEdit組件,通過複製粘貼從msword文檔導入RTF數據,但是如果數據包含在一個框中,則它不能正確顯示,即Delphi 7 TRichTextEdit文本框中顯示不正確
請協助
嘗試使用以下,就應該繼承的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(最新版本)的應用程序文件夾
那樣簡單,它顯示正確? –
是的,它看起來不錯,但使用RX和Delphi的RTF編輯器,佈局會發生變化。 – KE50
這需要對VCL使用的richedit控件的版本進行一些操作。我確信有人會記得這些細節.. –