-
Content Count
1589 -
Joined
-
Last visited
-
Days Won
36
Everything posted by Dave Nottage
-
Authorization to the firebase's https://iid.googleapis.com/iid/v1:batchImport
Dave Nottage replied to Vanar's topic in FMX
See this documentation. Authorization is now via an OAuth2 token - there is a link in the documentation to details about methods for obtaining the token. -
For anyone else coming across this link, it has moved to: https://chapmanworld.com/calling-linux-commands-from-delphi/
-
It might help to show the code you're using.
-
Sounds like you already worked that out? i.e. create the PDF control beforehand.
-
Sergey pushed a change to this repo 2 months ago, so he was doing something. It's a shame if they're not responding to customers.
-
How to Set contentDescription for TImage Component in Delphi FMX for Google Accessibility?
Dave Nottage replied to Feniks888's topic in FMX
This part will not even compile. TControl does not have a Handle property in FMX. Nor will this. setContentDescription takes a JCharSequence as the parameter. The main problem is that "non-native" FMX controls do not have an underlying native control, except when ControlType is Platform. Even then, there is no support for calling setContentDescription on that native control. This would require adding a ContentDescription property to TControl so that it can be passed to the underlying "native" controls. On top of this, only certain controls on Android support ControlType of Platform. -
The jar is not added to the search paths, it's added to the Libraries node of the Android 32-bit target, as per the demo readme. This is an image (which has been shortened, for brevity) of it: You don't add those paths. See above.
-
It's definitely in the repo. https://github.com/DelphiWorlds/Kastri/blob/58569bee28f5ce3caf5ceef588a46d13c161ce62/Features/JavaScript/DW.JavaScript.pas#L20 Did you add DW.JavaScript to the uses clause, as per the demo?
-
That now fails for me in Delphi 12.2 😞 Rollo's example, i.e.: TabControl1.SetActiveTabWithTransition(TabItem1, TTabTransition.Slide, TTabTransitionDirection.Normal); TThread.ForceQueue(nil, procedure begin FPDFControl.LoadPDF(LFileName); end); Works ok for me in Delphi 12.2
-
The demo shows all the required folders in the Search path of Project Options. For that identifier you'd be missing the Features\JavaScript folder of Kastri
-
I discovered what the problem is: The "default" TWebBrowser implementation for Android uses loadUrl: procedure TAndroidWebBrowserService.EvaluateJavaScript(const AJavaScript: string); begin FWebView.loadUrl(StringToJString('javascript:' + AJavaScript)); UpdateContentFromControl; end; Which I guess does not accept the JavaScript that I provided. In TWebBrowserExt, it uses the evaluateJavascript method: procedure TPlatformWebBrowserExt.ExecuteJavaScript(const AJavaScript: string; const AHandler: TJavaScriptResultProc); begin if FWebView <> nil then FWebView.evaluateJavascript(StringToJString(AJavaScript), CreateValueCallback(AHandler)) else AHandler(cJavaScriptNullResult, -1); end; Which does work. I've now added a demo to the HowTo repository, which uses TWebBrowserExt, and it works on Android (as well as iOS and macOS)
-
It appears Android's WebView does not like part of the JavaScript (it works on macOS and iOS). I'm looking into it
-
Not sure why it's not working for you - I'm using the same URL as in your example. I could put together a minimal test case to demonstrate it.
-
Please post a reproducible example.
-
Updated JavaScript: cJavaScriptClickAtXY = '(function() {'#13#10 + 'var windowX = %d, windowY = %d'#13#10 + 'let x = windowX - (window.scrollX || window.pageXOffset)'#13#10 + 'let y = windowY - (window.scrollY || window.pageYOffset);'#13#10 + 'var element = document.elementFromPoint(x, y);'#13#10 + 'while (element) {'#13#10 + ' if (element.tagName !== "A" && !element.hasAttribute("onclick"))'#13#10 + ' element = element.parentElement;'#13#10 + ' else'#13#10 + ' break;'#13#10 + '}'#13#10 + 'if (element) {'#13#10 + ' var clickEvent = document.createEvent("MouseEvents");'#13#10 + ' clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, x, y, false, false, false, false, 0, null);'#13#10 + ' element.dispatchEvent(clickEvent);'#13#10 + '} else'#13#10 + ' console.log("No clickable element found at coordinates:", x, y);'#13#10 + '})()';
-
I think it may be that the click is being invoked on the span, or the image (i): <li> <a href="https://en.delphipraxis.net/forum/28-fmx/"> <span>FMX <i class="fa fa-angle-right"></i></span> </a> </li> When it needs to be on the anchor (a) element, so I'll need to tweak the JavaScript a bit.
-
const cJavaScriptClickAtXY = '(function() { '#13#10 + 'var windowX = %d, windowY = %d'#13#10 + 'let x = windowX - (window.scrollX || window.pageXOffset)'#13#10 + 'let y = windowY - (window.scrollY || window.pageYOffset);'#13#10 + 'var element = document.elementFromPoint(x, y);'#13#10 + 'if (element) {'#13#10 + ' var clickEvent = document.createEvent("MouseEvents");'#13#10 + ' clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, x, y, false, false, false, false, 0, null);'#13#10 + ' element.dispatchEvent(clickEvent);'#13#10 + '} else'#13#10 + ' console.log("No element found at coordinates:", x, y);'#13#10 + '})()'; // Example call: WebBrowser1.EvaluateJavaScript(Format(cJavaScriptClickAtXY, [Cursor_Position_X, Cursor_Position_Y])); The code above should do what you want - it has had very limited testing in my environment
-
That's not a complete example, and obviously not Windows, so I'm not sure why you felt the need to add a unit that requires Windows.
-
Delphi 12.2 and MacOS Sequoia (15.0) : No provisioning profile
Dave Nottage replied to FabDev's topic in FMX
In macOS 15, the location for provisioning profiles is in another folder. One solution to fix this is: In Xcode menu, click Xcode > Settings, and select Accounts Select the relevant Apple ID (or add yours if none exists in the list) Click "Download Manual Profiles" Then PAServer should find the profile -
Presumably you are attempting to use this unit on a non-Windows platform, which it is not intended for. Please give a complete example of what you are trying to do.
-
Delphi 2005
-
OutOfRange Error with TComboEdit in Delphi FMX
Dave Nottage replied to kidego9436's topic in Cross-platform
I confirm the behaviour -
You need to add dw-kastri-base-3.0.0.jar to the Libraries node of the Android targets. If you want to target both 32-bit and 64-bit, unfortunately because of a bug in Delphi 11.3, you'll need to make a copy of the jar file in another folder in order to be able to add it to both targets. I've been having that trouble, too. It works OK for me in some apps, but not in that demo. Still looking into why. "Slightly icy"?
-
You're using the wrong JDK. Later versions of Delphi require Eclipse Temurin Open JDK. In the Delphi menu, click Tools > Manage Features, then scroll the right hand side down to the bottom, select Eclipse Temurin Open JDK and click Apply. You'll then need to configure the Android SDK settings to use it: