Delphi XE3 FMX Standardbrowser öffnen
Hallo!
Kann mir jemand schreiben wie ich unter Delphi XE3 mit einer FireMonkey Anwendung einen Standardbrowser mit vorgegebener URL öffnen kann. Das ganze sollte natürlich auch unter OS X funktioneren. ShellExecute geht nur unter Windows, also nicht anwendbar bzw nur mit Compileroptionen. Für Eure Antworten bin ich im Voraus dankbar! Viele Grüße und schöne Feiertage Niao |
AW: Delphi XE3 FMX Standardbrowser öffnen
Du wirst mit ifdefs arbeiten müssen.
Unter OSX kannst so eine URL öffnen:
Delphi-Quellcode:
//Edit: Ich hab mir sowas gebastelt, in XE3 kann man ja PlatformServices registrieren:
Workspace := TNSWorkspace.create;
Workspace.openURL(...); Workspace.free;
Delphi-Quellcode:
unit FMX.PlatformExtensions;
interface type IFMXOpenWebbrowser = interface['{9CA18562-C56D-489C-AE97-D069B9C58427}'] function OpenURL(const AURL: String) : boolean; end; implementation uses {$IFDEF MACOS} FMX.PlatFormExtensions.Mac {$ELSE IF WINDOWS} FMX.PlatformExtensions.Win {$ENDIF} ; end.
Delphi-Quellcode:
unit FMX.PlatformExtensions.Mac;
interface implementation uses IdURI, MacApi.Foundation, MacApi.AppKit, FMX.PlatForm, FMX.PlatFormExtensions; type TFMXOpenWebbrowser = class(TInterfacedObject, IFMXOpenWebbrowser) public function OpenURL(const AURL: string): Boolean; end; { TFMXOpenWebbrowser } function TFMXOpenWebbrowser.OpenURL(const AURL: string): Boolean; begin TNSWorkspace.Wrap(TNSWorkspace.OCClass.sharedWorkspace) .openURL( TNSURL.Wrap( TNSURL.OCClass.URLWithString(NSSTR(TIdURI.URLEncode(AURL))) ) ); end; initialization TPlatformServices.Current.AddPlatformService(IFMXOpenWebbrowser, TFMXOpenWebbrowser.Create());
Delphi-Quellcode:
Und zum Testen:
unit FMX.PlatformExtensions.Win;
interface implementation uses ShellAPI, WinApi.Windows, FMX.PlatForm, FMX.PlatFormExtensions; type TFMXOpenWebbrowser = class(TInterfacedObject, IFMXOpenWebbrowser) public function OpenURL(const AURL: string): Boolean; end; { TFMXOpenWebbrowser } function TFMXOpenWebbrowser.OpenURL(const AURL: string): Boolean; begin ShellExecute(0, 'open', pChar(AURL), nil, nil, SW_SHOW); end; initialization TPlatformServices.Current.AddPlatformService(IFMXOpenWebbrowser, TFMXOpenWebbrowser.Create()); end.
Delphi-Quellcode:
uses
FMX.PlatFormExtensions; procedure TForm50.Button1Click(Sender: TObject); var lOpenWeb: IFMXOpenWebbrowser; begin lOpenWeb := IFMXOpenWebbrowser(TPlatformServices.Current.GetPlatformService(IFMXOpenWebbrowser)); if lOpenWeb <> nil then lOpenWeb.OpenURL(Edit1.Text); end; |
AW: Delphi XE3 FMX Standardbrowser öffnen
Hallo Lars,
vielen Dank! Habe es am Ende so umgesetzt. {$IFDEF MSWINDOWS} WInApi.ShellApi.shellExecute(Handle,PChar('open'), PChar(f_URL),nil,nil, 1); {Do not Localize} {$ENDIF} {$IFDEF MACOS} TNSWorkspace.Wrap(TNSWorkspace.OCClass.sharedWorks pace) .openURL(TNSURL.Wrap(TNSURL.OCClass.URLWithString( NSSTR(f_URL)))); {$ENDIF} Viele Grüße Niao :lol: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz