Jump to content

MikeMon

Members
  • Content Count

    147
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by MikeMon

  1. MikeMon

    ZXing Delphi for 10.4

    Hi. I'm using the code provided in the uMain.pas unit of the advancedTestApp project. This is some of the code for the camera permission: // Optional rationale display routine to display permission requirement rationale to the user procedure TFormMain.DisplayRationale(Sender: TObject; const APermissions: TArray<string>; const APostRationaleProc: TProc); begin // Show an explanation to the user *asynchronously* - don't block this thread waiting for the user's response! // After the user sees the explanation, invoke the post-rationale routine to request the permissions TDialogService.Showmessage('The app needs to access the camera in order to work', procedure(const AResult: TModalResult) begin APostRationaleProc end) end; procedure TFormMain.AccessCameraPermissionRequestResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>); begin // 1 permission involved: CAMERA if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then { Fill the resolutions. } begin CreateCamera(); end else Showmessage('Cannot access the camera because the required permission has not been granted') end; procedure TFormMain.FormActivate(Sender: TObject); begin {$IFDEF ANDROID} FPermissionCamera := JStringToString(TJManifest_permission.JavaClass.CAMERA); {$ENDIF} PermissionsService.RequestPermissions([FPermissionCamera], AccessCameraPermissionRequestResult, DisplayRationale); end; procedure TFormMain.StartCapture; begin FBuffer.Clear(TAlphaColors.White); FActive := True; LabelFPS.Text := 'Starting capture...'; PermissionsService.RequestPermissions([FPermissionCamera], ActivateCameraPermissionRequestResult, DisplayRationale); StartStopWatch(); lblScanning.Text := 'Scanning on'; FaLblScanning.Enabled := True; end; procedure TFormMain.ActivateCameraPermissionRequestResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>); begin // 1 permission involved: CAMERA if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then begin { Turn on the Camera } CreateCamera(); FCamera.Active := True; end else Showmessage('Cannot start the camera because the required permission has not been granted') end; procedure TFormMain.CreateCamera(); begin if (FCamera <> nil) then exit; FCamera := TCameraComponent.Create(self); FCamera.Quality := TVideoCaptureQuality.MediumQuality; FCamera.FocusMode := TFocusMode.AutoFocus; FCamera.OnSampleBufferReady := CameraComponent1SampleBufferReady; end;
  2. MikeMon

    ZXing Delphi for 10.4

    It's not even asking the first time. Unfortunately.
  3. MikeMon

    ZXing Delphi for 10.4

    Hi. Thank you for your answer. The code working on Delphi 10.3.3 is crashing on Delphi 10.4. Btw, if the user hasn't given permission to access the camera yet, he/she will be asked to give one. That works quite fine on Delphi 10.3.3.
  4. MikeMon

    ZXing Delphi for 10.4

    Unfortunately, the ZXing is not working on Delphi 10.4. On iOS, the camera isn't working. On Android, the app is crashing with a floating point error.
  5. MikeMon

    StoryBoard launch screen - Delphi 10.4

    Hi @vfbb. Option 4 yes. Option 3 isn't working. The default Delphi launch screen images are added no matter what.
  6. MikeMon

    StoryBoard launch screen - Delphi 10.4

    Hi Guyz I'm having an issue making the storyboard work with an existing app (I haven't tried with new apps yet). I've followed these steps but I keep on getting a blank screen: 1.) I deleted the info.plist.TemplateiOS.xml from my project directory. 2.) Added the launch images in the project options 3.) I edited the LaunchScreen.storyboard and Assets files in LaunchScreen.TemplateiOS (actually only the Contents.json file in the Assets\LaunchScreenImage.imageset folder) as needed by replacing the default FM launch icons with mine. 4.) Made sure that my launch screen images to be deployed are in the "Project | Deployment". 5.) Deleted the app on the device (as @vfbb suggested above) 6.) Powered down the device (as @vfbb suggested above) 7.) Powered up the device (as @vfbb suggested above) 8.) Installed the app (as @vfbb suggested above) Any ideas
  7. MikeMon

    ZXing Delphi for 10.4

    Hi @vfbb Thank you for your information. Will look into it.
  8. Hi I've setup firebase cloud messaging and everything is working fine both on iOS and Android, i.e. I can send push notifications through the Firebase Cloud Messaging console. What I want to do is to develop my own console with which I want to send my firebase push notifications. I came across the following in the FCM app server protocols: https://fcm.googleapis.com/fcm/send To test it, I'm using the "Embarcadero REST Debugger" software. As per the FCM documentation, I've add a header called "Authorization" with a value of "key=XYZ". XYZ is the "Server Key" value in the Firebase Console's "Cloud Messaging" setting of my App. Unfortunately I keep on getting a "401: INVALID_KEY" response. Is there anything else I need to do to make it work?
  9. Hi @Dave Nottage After some playing around, I found out what the problem was. The "Authorization" header should not be encoded. Now, everything works fine by using REST. FYI, the pre-complied RESTDebugger.exe that comes with Delphi 10.3.3 doesn't have the "Do Not Encode" checkbox when adding parameters. I had to recompile its project and it was there.
  10. Hi Dave. Thank you for your valuable input. I compiled and ran your desktop app and it's working perfectly. I will check your code and see what I'm missing.
  11. In the latest iOS App requirements and guidelines, one of the requirements says: "Apps for iPhone or iPad must ..... and use an Xcode storyboard to provide the app’s launch screen." Does this mean that a launch image is not enough and we need to create a splash screen inside the app? or this is already handled by Delphi?
  12. Any direction on "Sign in with Apple" requirement? Deadline is June 30th, too.
  13. How can I programmatically change properties of a custom style? Basically, I have created a custom style for TLabel and have added a rectangle to be able to control its background. How can I programmatically change its color so that all TLabels that have that style are automatically updated with the new color?
  14. MikeMon

    Programmatically Change Properties of a Custom style

    Hi @Rollo62 As I said earlier, I do use TRectangle instead of TPanel. But my example above was just for illustration to show that first-level stylename's properties of a style can not be modified whereas its children's can. E.g. with a TSwitchObject, there is nothing I can do. The TSwitchObject stylename is at the first-level and I can't access any of its properties programmatically. I tried adding a TLayout in the style at the first-level and have the TSwitchObject as its child, but it is not working properly. E.g., the isChecked:= True is not changing the TSwitch's state.
  15. MikeMon

    Programmatically Change Properties of a Custom style

    Let me find a solution for 1 platform and I'll do the rest!! lol
  16. MikeMon

    Programmatically Change Properties of a Custom style

    Yes, I can change the color of TPanel during design time, but not at runtime. To be honest I use TRectangle, too. The TPanel in my question was just for reference because it is simple to demonstrate. Generally, I can't access and change the properties of the first-level style. Another example which I still haven't found a workaround for is TSwitch. I use a TSwitchObject for a TSwitch style. Again, because it is the first-level style, I can't access and change its properties, e.g. "ThumbOn.Color".
  17. MikeMon

    Programmatically Change Properties of a Custom style

    Hi Serge Thank you for your answer. The custom-styled TPanel has no children. This is what I'm doing: 1.) Drop a TPanel on the form. Call it Panel1 2.) Right-click on the TPanel and choose "Edit Custom Style..." 3.) Close the designer 4.) Make sure the "StyleLookup" field of Panel1 is "Panel1Style1" What I need to do is to programmatically change the "Fill.Color" of "Panel1Style1". I can't seem to find a way how. However, if I drop a TLabel and do the same, "Label1Style1" will be created. Label1Style1 has a child stylename "Text". I could easily access and change its properties by my method above, i.e. Label1.StylesData['text.Scale.X']:= 2, or Label1.StylesData['text.Text']:= 'OK'
  18. MikeMon

    Programmatically Change Properties of a Custom style

    The code above works for the children of the "RedButtonLabelStyle" resource. How do I change for the resource itself. E.g.: when you use a "Custom Style" for a TPanel, it creates a custom style e.g. Panel1Style1. Panel1Style1 doesn't have any children. How can I change its properties (e.g. Fill.Color) by code? The above code's approach (e.g. StylesData['Panel1Style1.Fill.Color'] or StylesData['Fill.Color']) doesn't work.
  19. MikeMon

    Programmatically Change Properties of a Custom style

    Hi. Thank you for your answer. Your approach is irrelevant to what I am trying to do. What I want to do is change properties of a style in a Stylebook and expect all objects having that style in their stylelookup field to be updated automatically. Currently, as a workaround, I'm recursively checking all objects and their children and looking for TLabels with stylelookup the style that I want, and changing the fill color of the rectangle in the style. There should be a better way, i.e. just change the fill color of the style in the stylebook. This is the code I'm currently using as a workaround: procedure ChangeAllLabelStyles(ChangeToColor: Cardinal); procedure ChangeObjectRecursive(CurrentComponent: TComponent); var i: Integer; begin if CurrentComponent.ClassNameIs('TLabel') and (TLabel(CurrentComponent).StyleLookup = 'RedButtonLabelStyle') then TLabel(CurrentComponent).StylesData['Rectangle1Style.Fill.Color']:= ChangeToColor; for i:= 0 To CurrentComponent.ComponentCount - 1 do ChangeObjectRecursive(CurrentComponent.Components[i]); end; begin ChangeObjectRecursive(Self); end;
  20. I got confirmation from Embarcadero support that storyboard launch screen will be supported in 10.4, including the beta that will be available to Delphi/RAD Studio customers on update subscription.
  21. This is an email I received a couple of days ago. Dear Mike, We greatly value the worldwide developer community, and appreciate your commitment to making a difference in people’s lives through the power of technology. To accommodate developers who may need additional time to update their existing apps on the App Store, the deadline for adhering to the requirements below has been extended to June 30, 2020. Apps for iPhone or iPad must be built with the iOS 13 SDK or later and use an Xcode storyboard to provide the app’s launch screen. iPhone apps must support all iPhone screens and all iPad apps must support all iPad screens. Apps for Apple Watch must be built with the watchOS 6 SDK or later. Apps that authenticate or set up user accounts must support Sign in with Apple if required by guideline 4.8 of the App Store Review Guidelines. Apps in the Kids category must be in full compliance with guideline 1.3 and guideline 5.1.4. of the App Store Review Guidelines. Apps using HTML 5 must be in full compliance with guideline 4.7 sections 4, 5, and 6 of the App Store Review Guidelines. Thank you for your continuing efforts to serve your users during this time. If you have any questions, contact us. Read the App Store Review Guidelines Learn about submitting apps Best regards, Apple Developer Relations The initial deadline was the April 29. So, obviously, we have an issue here with the first and 4th points. Any input would be appreciated.
  22. How come there's nothing in forums about this? How are other Delphi users developing for iOS tackling this? The above solution doesn't feel right.
  23. Hi I've added a file to the deployment manager which is being copied to a specific folder on iOS and Android. When the user runs the app for the first time, I'm copying that file to another folder on the device and then deleting the original file. This is the problem: while using the app, the file is being deleted OK. But every time the app is run again, the file is reappearing. How can I permanently delete a file from a specific folder? Kindly advise
  24. Hi Steve I want to use my approach for files that I want to forcefully overwrite. If I use your approach, I can't overwrite an existing file on the device if it is newer.
×