Jump to content

Edwin Yip

Members
  • Content Count

    430
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by Edwin Yip


  1. Thanks for the help Alexander.

    So I've just tried:

    - THtCanvasGDI: I assume this the default so it has the issue.
    - THtCanvasGP: Tried `HtDefaultCanvasClass := THtCanvasGP`, and it's the same issue.

    - THtCanvasDX: `HtDefaultCanvasClass := THtCanvasDX` solves the issue!

     

    And the html code is updated at runtime like this:

    `pnlMsg.HTML.Text := aHtmlCode`

     

    PS, I prefer `THtCanvasGDI` because the text rendering is the same as the system.


  2. Hi,

     

    I wonder if anyone, especially @Alexander Sviridenkov can give me any advise as to solving the following ThtPanel (a control from delphihtmlcomponents.com) rendering issue (text overlapped) under win 10/11 (ok under win 7).

    - The screenshot of the issue is attached.

    - I'm using HCL 3.7 (not the latest, I know, but I'm afraid I need to solve this issue with this version at the moment).

    - The html code used:

    Trial Period's Expiring in 21 Day(s)<br />When in trial mode only <strong>20</strong> blabla.<br /><br /><a href="#buy">Buy MyProduct here</a><br /><br /><a href="#activate">Activate MyProduct</a> if you already have a license key

    - The `ThtPanel` object:

    var
      pnlMsg := THtPanel.Create(Self);
      pnlMsg.Parent := Self;
      pnlMsg.AlignWithMargins := True;
      pnlMsg.Hint := '[Ctrl + C] to copy the message to clipboard';
      pnlMsg.Align := alClient;
      pnlMsg.Caption := 'pnlMsg';
      pnlMsg.ParentBackground := False;
      pnlMsg.ParentColor := True;
      pnlMsg.ParentFont := False;
      pnlMsg.ParentShowHint := False;
      pnlMsg.PopupMenu := pmMsg;
      pnlMsg.ShowHint := True;
      pnlMsg.TabOrder := 1;
      pnlMsg.Styles.Clear;
      pnlMsg.Styles.Add('a {');
      pnlMsg.Styles.Add('  color: #0088cc;');
      pnlMsg.Styles.Add('}');
      pnlMsg.TouchScroll := False;
      pnlMsg.VerticalScrollBar := hsbAuto;
      pnlMsg.HighlightTextColor := 0;
      pnlMsg.EnableSelection := True;

     

    hcl overlapped under win10and11.png


  3. I use mORMot for this because calling a method or an interface in another process is just like calling a method/interface in the same process.

    And the communication protocol can be tcp/ip or named pipes.

     

    On process B you define and implement an interface:

    type
      ICalculator = interface(IInvokable)
        ['{9A60C8ED-CEB2-4E09-87D4-4A16F496E5FE}']
        /// add two signed 32-bit integers
        function Add(n1,n2: integer): integer;
      end;
    
      TServiceCalculator = class(TInterfacedObject, ICalculator)
      public
        function Add(n1,n2: integer): integer;
      end;
    
    function TServiceCalculator.Add(n1, n2: integer): integer;
    begin
      result := n1+n2;
    end;

    And you expose it:

    Server.ServiceRegister(TServiceCalculator,[TypeInfo(ICalculator)],sicShared);

     

    On process A, you can now call the above interface served by process B:

    Client.ServiceRegister([TypeInfo(ICalculator)],sicShared);
    
    var I: ICalculator;
    begin
      I := Client.Service<ICalculator>;
      if I<>nil then
        result := I.Add(10,20);
    end;

    More details: https://synopse.info/files/html/Synopse mORMot Framework SAD 1.18.html#TITLE_415

     

    Sample code:

    https://github.com/synopse/mORMot/tree/master/SQLite3/Samples/14 - Interface based services

     

    It's even simpler if you use the so-called "method-based service".

     

    Hope it helps.


  4. Another open source Delphi project worth spreading - a pure Delphi implementation of a rich text editor, like TRichEdit, in BSD license.

     

    But be aware - although the classes/methods/vars are well named in English, the comments and documents are in Chinese.

    So feel free to ignore it if you mind that.

     

    https://github.com/59079096/HCView-Pascal

    • Like 1

  5. 20 minutes ago, Angus Robertson said:

    It's unclear to me from the readme and help whether ZipMaster is a linkable Delphi component or a DLL with a Delphi interface. 

     

    The documentation seem to assume you are familiar with the component and not migrating from something like VCLZip.   

     

    Angus


    - TZipMaster has a full set of features for writing/reading zip archives, most of the logics are implemented in Delphi, but it relies on a 300+KB DLL for the underlying operations.
    - TZipMaster supports both 64bit and 32bit Delphi compilers.
    - TZipMaster supports Zip64 (for zip files larger than 4GB).
     

    I edited the readme.md file


  6. Well, I didn't exactly make this, but DelphiZip should be the most feature-rich open source zip component for Delphi, and since 2019 due to a health issue Russell Peters the previous maintainer has stop the maintenance.

    I fixed several minor issues for the library, but there is no place to submit my changes now (even delphizip.org is down), so I created a github repository and welcome anyone to contribute:

    https://github.com/edwinyzh/ZipMaster


  7. 19 hours ago, Henry Olive said:

    Thank You so much Peter, Edwin

    Edwin, exactly yes

     

    I wrote below code ( Delphi 10.3)  and everything is OK mouse wheel works

    but to me, there should not need below code, mouse wheel should work

    without any code.


    procedure TMeetNote2.ScrollBox1MouseWheel(Sender: TObject; Shift: TShiftState;
      WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
    var
      aPos: SmallInt;
    begin
      aPos:= ScrollBox1.VertScrollBar.Position - WheelDelta div 10;
      aPos:= Max(aPos, 0);
      aPos:= Min(aPos, ScrollBox1.VertScrollBar.Range);
      ScrollBox1.VertScrollBar.Position := aPos;
      Handled := True;
    end;

    Yes, you have to write such code, and such code only works if the scrollbox has the focus.


  8. 2 hours ago, David Heffernan said:

    Would be nice to know what's actually going on here, but all I can see is an opaque DLL which seems to have all the implementation in it.

    I had the same curiosity and asked the author on facebook. It actually contains a modified version of Tiny C Compiler, but I didn't ask for implementation details.

     

    That being said, the OP might can give us more details.

×