• 让Delphi的TRichEdit支持新标准


    先说明, 不是直接让TRichedit支持, 而是派生出一个类支持

    原理就是, IDE自带的richedit使用的是2.0版本(RICHEDIT20A/RICHEDIT20W), 这个版本虽然支持图片/表格显示, 但是似乎不支持从RTF文件中加载(我也不知道为什么, 总之表现出来就是不支持)

    所以, 支持新标准的思路就是, 派生一个子类, 在CreateParams时使用新标准去定义它

    这里我使用的是richedit4.1标准(RICHEDIT50W), 这个标准是依赖于MSFTEDIT.DLL这个文件, 系统自带, 从XP-SP1开始支持, 所以如果你的程序是在XP-SP1以下的版本运行就不要考虑了

    没别的, 直接贴源码

    unit RichEdit41;
    
    interface
    
    uses
      Winapi.Windows,
      Vcl.ComCtrls, Vcl.Controls;
    
    const
      RICHEDIT_V41_CLASSNAME = 'RICHEDIT50W';
      RICHEDIT_V41_MODULENAME = 'MSFTEDIT.DLL';
    
    type
      [RootDesignerSerializerAttribute('', '', False)]
      [ComponentPlatformsAttribute(pidWin32 or pidWin64)]
      TRichEdit41 = class(TRichEdit)
      protected
        procedure CreateParams(var Params: TCreateParams); override;
      end;
    
    procedure Register;
    
    implementation
    
    uses
      System.Classes;
    
    var
      FRichEdit41LabHandle: HMODULE;
    
    { TRichEdit41 }
    
    procedure TRichEdit41.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      CreateSubClass(Params, RICHEDIT_V41_CLASSNAME);
    end;
    
    procedure Register;
    begin
      RegisterComponents('Others', [TRichEdit41]);
    end;
    
    initialization
    begin
      FRichEdit41LabHandle := LoadLibrary(RICHEDIT_V41_MODULENAME);
    end;
    
    finalization
    begin
      FreeLibrary(FRichEdit41LabHandle);
    end;
    
    end.
  • 相关阅读:
    react native配置ip真机测试
    APP Store上架QA&注意事项
    iOS 开发】解决使用 CocoaPods 执行 pod install 时出现
    iphoneX适配!!!
    better-scroll和swiper使用中的坑
    js知识巩固
    vue的学习(常用功能)
    vue学习生命周期(created和mounted区别)
    jq常用功能操作
    移动端中遇到的坑(bug)!!!
  • 原文地址:https://www.cnblogs.com/lzl_17948876/p/9444171.html
Copyright © 2020-2023  润新知