Jump to content

Keesver

Members
  • Content Count

    75
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Keesver


  1. ## Free version

    A free version is available which is actually quite capable. The free version is named FMX-GRID. This version can be used by any number of developers and offers royalty free distribution of applications.

    The free version is published under the MIT license

    ## Commercial version
    FMX-GRID-MODEL is a commercial product. It adds model support and property binding for easy creation of user interfaces. A license is required per developer. Licenses are valid for 12 months, a subscription is required to keep licenses valid. Subscriptons must be renewed after the end date. If you are renewing your license before (or up to 30 days after) the current expiration date, the new expiration date will be calculated based on the original order date. Updates are only available to users with a valid license.
     


  2. We are in a similar situation and support a desktop, mobile, web and MacOs application from a single code base. We use a grid control written by our company which is also publicly available at Git-hub (GitHub - a-dato/FMX-GRID). This is more than just a grid control, as it supports light weight data binding and custom collections, sorting and more. You are welcome to check it out.


  3. Delphi 12 Version 29.0.50491.5718:

    I just did a small test on a fast MSSql server with a similar query on a very large table and I do not see such a delay. The data is shown quickly. I'm just using FDConnection and FDQuery. Probably your setup is different or your table contains some (big) blob's that are fetched?

     

    Also tried ADOConnection/ADOQuery, this was actually a little bit faster.

     

    Please provide a sample.

     

    image.thumb.png.8ba67f5280d26ada64defa6bf98fee2a.png


  4. Hello all,

     

    We are pleased to anounce the availability of a new Delphi grid control specifically designed for FMX. This control runs on all platforms, is easy on the memory, updatess fast and has smooth scrolling. There is a free version available that includes the following features:

    • Connects to different data sources (Lists, List<T>, TDataset)
    • Smart row caching results in low memory usage
    • Fast scrolling
    • Hierarchical views
    • Extendable property model based on .Net type system (object properties can be modified at runtime)
    • Development backed up by a professional team of FMX developers
    • Components used in professional software (Lynx/Lynx-x) by a large user community

     

    We also provide a commercial version, this version adds model support and property binding to visual controls. You can easily bind properties to editors for advanced two way syncing.

    Please go to https://github.com/a-dato/FMX-GRID.git to download the free version.

     

    Community site: https://community.a-dato.com

    • Like 4
    • Thanks 2

  5. ApplyStyleLookup should be called only once when a control is about to be painted. However, when a TDateEdit control is put on a form and the application is moved to a second monitor with a different DPI, ApplyStyleLookup is called every time the drop down of the date editor is opened. The same happens with a TComboBox control. See test application.

     

    We will create a bug report for this at Embarcadero, but maybe someone knows a fix or workaround?

     

    Thanks

    ApplyStyleLookup.zip


  6. procedure TFMXPrintForm.btnMakePDFClick(Sender: TObject);
    var
      r: TRect;
      LCanvas: ISkCanvas;
      LDocument: ISkDocument;
      LDocumentStream: TStream;
      LSVGDOM: ISkSVGDOM;
      LSize: TSizeF;
    
    begin
      LSVGDOM := TSkSVGDOM.MakeFromFile('Delphi.svg');
      LSize := TSizeF.Create(300, 300);
      r.Left := 0;
      r.Top := 0;
      r.Width := Round(treeControl.Width);
      r.Height := Round(treeControl.Height);
      LSVGDOM.SetContainerSize(LSize);
    
      LDocumentStream := TFileStream.Create('Delphi.pdf', fmCreate);
      try
        LDocument := TSkDocument.MakePDF(LDocumentStream);
        try
          LCanvas := LDocument.BeginPage(r.Width, r.Height);
          try
            LSVGDOM.Render(LCanvas);
          finally
            LDocument.EndPage;
          end;
        finally
          LDocument.Close;
        end;
      finally
        LDocumentStream.Free;
      end;
    end;

    Also see: Using Skia's PDF Backend | Skia


  7. You are accessing variable 'Components' as if it where an array, but it is declared like a reference to a TComponent. I think you want to redeclare your function like:

    type
    TComponentArray = array of TComponent;
    function SetDBSessionNames(const ComponentCount: Integer; const Components: TComponentArray; const sSessionName: string): boolean;

     


  8. I can remember seeing a method or class in Indy which allowed me to connect an incoming socket to an outgoing socket directly so that data flows from in to out. However I can't remember the name or file where I can find it. Any ideas?


  9. Support for appinstaller is available since W10 (see Troubleshoot installation issues with the App Installer file - MSIX | Microsoft Learn). We have had issues in the past with the auto update feature (users had to restart their computer before the auto update would work) but that has been fixed by MS. 

     

    47 minutes ago, Cristian Peța said:

    More than 10% from 12500 installations in last year are Windows 7 and 8

    We still support both update processes side by side having two separate installers. If you need to support W7 and W8 I think there is no way around this.


  10. In the past we always did our own auto updating using a similar approach as presented here (rename exe, download new version, then restart). This works as long as the the application is installed inside the user profile, not when it gets installed in 'Program files'.

    Nowadays we let Windows handle this using an MSIX installer accompanied by an .appinstaller file (you can configure auto update behavior from the appinstaller file). In my experience, using the .appinstaller gives a much better user experience than any other method.

×