Jump to content

AlanScottAgain

Members
  • Content Count

    35
  • Joined

  • Last visited

Posts posted by AlanScottAgain


  1. Hi,

     

    Given that debugging on iOS17 is not possible at this moment.

    I was looking at the Grijjy CloudLogger as an option.

    It hasn't been updated in a while and wondered if anyone had it running under D12 and iOS?

    Thanks

    Alan


  2. Hi

     

    I'm trying to use SQLite with FDAC  using Dynamic loading on Android and iOS. Unfortunately I'm not getting very far.

    Currently testing on Android 64.

    I'm getting an error:

    Project TestFDACDynamic.apk raised exception class EFDException with message '[FireDAC][Phys][SQLite]-314. Cannot load vendor library [/data/user/0/com.embarcadero.TestFDACDynamic/files/libsqliteX.so]. Hint: check it is in the PATH or application EXE directories, and has x86 bitness.'.

     

    libsqliteX.so is downloaded from the sqlite download page.

    and I deploy to .\assets\internal\.

     

    1947991615_Screenshot2024-01-15210845.thumb.png.e626e57099685543c299b55108276471.png

    I have tried with other libsqlite.so's with the same issue.

    Am I using the wrong file? Or the wrong location?

     

    Many thanks for any advice.

     

    Alan

     


  3. Hi

     

    I can compile and my app appears on the iPhone and I can run it. But I can't seem to step trough the code.

     

    However, I can step though code if I deploy to the simulator.

     

    I have read the documentation, but it hasn't helped.


    What could I be doing wrong?

    Thanks

    Alan


  4. Hi

     

    Is there an equivalent  to TPath.GetHomePath for the obb directory?

     

    I want to deploy some video files in an APK expansion pack. But not sure how to find where they will be installed to.

     

    Thanks

    Alan


  5. Hi,

    This is my scenario....
    I have an exercise app that will be able to set reminders to do the exercise daily up to 2 times a day.
    I need to create a notification that will remind the user to the exercise. Taping the reminder should open the app - to record the exercise has been done.

    The reminders will need to be active after a reboot and work on both Android and iPhone.

    After reading lots of articles.. I'm completely  confused and would like some pointers, Please.

    Thanks
    Alan

    PS it would be good if I could send a notification if the exercise has not been done/logged on the app.

     


  6. Many thanks

    I was aware of the demos 😉
    And am doing similar.

    It seems that if I use ShowMessage to display the event action, something must happen with the message queue as I get multiple showmesage popups.

    if I just update a label - all works fine.

    this simple code generates multiple popups for me?

     


    procedure TForm1.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
    begin
    if EventInfo.GestureID = igiLongTap  then
    begin
    Label1.Text:= 'Long Tap';

    TDialogService.MessageDialog('Did you mean to long press',TMsgDlgType.mtInformation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], TMsgDlgBtn.mbYes,0,
          procedure(const AResult: TModalResult)
          begin
            if AResult = mrYes then
               ShowMessage('YES')
            else
              ShowMessage('you have cancel the operation');
          end
        );
    end;
    end;

    procedure TForm1.FormTap(Sender: TObject; const Point: TPointF);
    begin
    Label1.Text:= 'Tap';
    end;

     

     

     


  7. Hi,

    I couldn't find any information this.

    When I capture a long tap  -  I get the tap event fired as well.

     

    Is this right?

     

    I want to set a value on tap and clear it on long tap.  Its messy at the moment with the events being called in sequence.

     

    Thanks

    Alan

     

     

     


  8. Hi

    I'm creating a simple exercise app, and I want the user to be able to set a reminder to do the exercise.

    What's be the recommended way to do this and have it work across Android and iPhone?

     

    I have considered creating calendar entries ( would have to be platform specific)  or creating a background app that tracks the reminder (more generic).

    Unsure if these are the way to go or is there a better way?

    Thanks

    Alan


  9. Hi

    I have a gauge that draw I on a Skia paintbox.

    I can move the gauge with the mouse. 0-100

     

    SkPaintBox1.Hint:= IntToStr(Position);
     SkPaintBox1.ShowHint:= True;

     

    Shows the hint but not as the mouse moves.


    How can I show a hint to display the current value as the mouse moves to update the gauge?

     

    Do I need to create my own hint window?

     

    Thanks

    Alan

     


  10. I know I should have done it sooner - I've been putting it off too long.

     

    Thanks to PB for giving me a push to do this, in another tread.

    So I've  stripped down my TDrawingObject and TDrawingObjectList Classes to show what I have and what I'm trying to acheive :

    Type
      TDrawingObjectType = (doChild, doBackground);

     

     TDrawingObjectsList = Class; //Forward Declaration

     

      TDrawingObject = Class
      Private
        FObjectType: TDrawingObjectType;
        FDrawingObjectsList: TDrawingObjectsList;
      Public
        Constructor Create(AObjectType: TDrawingObjectType);
        Destructor Destroy;
        Property ObjectType: TDrawingObjectType Read FObjectType Write FObjectType;
        Property DrawingObjectsList: TDrawingObjectsList Read FDrawingObjectsList Write FDrawingObjectsList;
      End;

     

     

      TDrawingObjectsList = Class(TObjectList<TDrawingObject>)
      Private
        FOwnsObjects: Boolean;
      Protected
        Function GetItem(Index: Integer): TDrawingObject;
        Procedure SetItem(Index: Integer; AObject: TDrawingObject);
      Public
        Procedure Draw(ACanvas: IskCanvas);
        Property OwnsObjects: Boolean Read FOwnsObjects Write FOwnsObjects;
        Property Items[Index: Integer]: TDrawingObject Read GetItem Write SetItem; default;
        Procedure LoadDrawingObjects;
        
      End;

     

    I'm trying to implement interfaces for these objects The code below looks pretty good at least I don't a lot of errors:

     

    I have two main questions at the moment:


    In the TDrawingListClass declaration  I used to have TDrawingObjectsList = Class(TObjectList<TDrawingObject>) to type cast the list. How do I achieve the same with the class/interface declaration?  TDrawingObjectsList = class(TInterfacedObject, IDrawingObjectList, TObjectList<TDrawingObject>) is not right.

    In the class constructs I have kept the interface references eg: property DrawingObjectList: IDrawingObjectList read GetDrawingObjectList write SetDrawingObjectList;     Is this correct?

     

    type
      TDrawingObjectType = (doChild, doBackground);

     

      IDrawingObjectList = interface; // forward declaration

     

      IDrawingObject = interface(IInterface)
        ['{A8701C68-51FC-4087-8C30-E3CA4C7C1D8E}']
        function GetDrawingObjectType: TDrawingObjectType;
        procedure SetDrawingObjectType(ADrawingObjectType: TDrawingObjectType);
        function GetDrawingObjectList: IDrawingObjectList;
        procedure SetDrawingObjectList(ADrawingObjectList: IDrawingObjectList);
        property ObjectType: TDrawingObjectType read GetDrawingObjectType write SetDrawingObjectType;
        property DrawingObjectList: IDrawingObjectList read GetDrawingObjectList write SetDrawingObjectList;
      end;

     

      TDrawingObject = class(TInterfacedObject, IDrawingObject)
        function GetDrawingObjectType: TDrawingObjectType;
        procedure SetDrawingObjectType(ADrawingObjectType: TDrawingObjectType);
        function GetDrawingObjectList: IDrawingObjectList;
        procedure SetDrawingObjectList(ADrawingObjectList: IDrawingObjectList);
        property ObjectType: TDrawingObjectType read GetDrawingObjectType write SetDrawingObjectType;
        property DrawingObjectList: IDrawingObjectList read GetDrawingObjectList write SetDrawingObjectList;

      end;

     

      IDrawingObjectList = interface(IInterface)
        ['{9D2C916D-19F0-49B2-93C6-B84592442057}']
        Private

        function GetOwnsObject: Boolean;
        procedure SetOwnsObject(AOwnsObject: Boolean);
        property OwnsObjects: Boolean read GetOwnsObject write SetOwnsObject;
        function GetItem(Index: Integer): IDrawingObject;
        procedure SetItem(Index: Integer; AObject: IDrawingObject);
        Public

        Constructor Create(AObjectType: TDrawingObjectType);
        Destructor Destroy;

        property Items[Index: Integer]: IDrawingObject read GetItem Write SetItem;

        procedure Draw(ACanvas: ISkCanvas);
        procedure LoadDrawingObjects;
      end;

     

      TDrawingObjectsList = class(TInterfacedObject, IDrawingObjectList)
      private
        FOwnsObjects: Boolean;
        function GetOwnsObject: Boolean;
        procedure SetOwnsObject(AOwnsObject: Boolean);
        property OwnsObjects: Boolean read GetOwnsObject write SetOwnsObject;
        function GetItem(Index: Integer): IDrawingObject;
        procedure SetItem(Index: Integer; AObject: IDrawingObject);
      public
        property Items[Index: Integer]: IDrawingObject read GetItem write SetItem;

        procedure Draw(ACanvas: ISkCanvas);
        procedure LoadDrawingObjects;
      end;

     

    Thanks

    Alan

×