Entwickler-Ecke

Internet / Netzwerk - Arbeiten mit Embarcadero XE7


Roy - Fr 23.01.15 17:41
Titel: Arbeiten mit Embarcadero XE7
Hallo Leute,
wie kann ich in der App-Programmierung mit XE7
einen Webbrowser ansteuern und einen Link öffnen?


jaenicke - Fr 23.01.15 20:30

Du packst einen TWebBrowser auf das Formular und setzt die Eigenschaft URL.


Roy - Fr 23.01.15 22:51

Und welche Funktion soll da die Adresse aufrufen?

Also ich habe einen Button, ein Textfelf und einen Webbrowser.
Funktioniert nicht


Delphi-Quelltext
1:
2:
3:
4:
procedure TTabbedwithNavigationForm.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate := ('Text1.Text') ;
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


jaenicke - Fr 23.01.15 23:15

Aber du hast auf Android gestellt und eine Android-Anwendung? Es wäre mir neu, dass es da Navigate gibt, eigentlich gibt es dort URL.

Denn die Komponente dafür funktioniert unter Windows nicht! Das ist nicht die auf dem IE basierende TWebBrowser Komponente.

Zeig doch einfach mal einen Screenshot von Delphi mit der Komponente markiert.

// EDIT:
Ich habe nachgeschaut:
Navigate gibt es, aber um das aufzurufen muss vorher die URL gesetzt sein. Und zuweisen kannst du an Navigate auch nichts.


Roy - Sa 24.01.15 02:08

Ich habe schon

Navigate
und
Url

probiert.

Funktioniert beides nicht


jaenicke - Sa 24.01.15 06:05

Das kann ich nicht reproduzieren, bei mir reicht es die URL zu setzen (Android 4.2). Auf welchem Gerät und mit welcher Android Version testest du denn? Oder testest du im Simulator? Und hast du es einfach mal mit http://www.google.de oder ähnlichem probiert?

Es mag durchaus sein, dass du da nicht einfach eine Textdatei anzeigen kannst, schon gar nicht ohne Protokollangabe wie file:// mit komplettem Pfad.

// EDIT:
Grad auch mit file://sdcard/Download/test.html als Adresse ausprobiert, klappt auch. :nixweiss:


Roy - Sa 24.01.15 10:21

Ich verstehe nicht warum ich einen Lokalen Pfad angeben soll wenn ich eine Internetadresse aufrufen moechte.
Koennten Sie mir eine Beispieldatei senden?


jaenicke - Sa 24.01.15 10:51

Ich hatte gedacht Text1.Text sei eine lokale Datei:
user profile iconRoy hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
4:
procedure TTabbedwithNavigationForm.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate := ('Text1.Text') ;
end;

Jetzt verstehe ich erst was du machen willst...

Delphi-Quelltext
1:
2:
3:
4:
procedure TTabbedwithNavigationForm.Button1Click(Sender: TObject);
begin
  WebBrowser1.URL := Text1.Text;
end;
Du hattest den String Text1.Text als Adresse angegeben (als ob du das in die Adressleiste deines Browsers schreibst) statt das Control Text1 anzusprechen und dessen Inhalt zu benutzen...
//EDIT:
Korrigiert...


Delete - Sa 24.01.15 21:11

http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RadStudio_XE7/Object%20Pascal/Mobile%20Snippets/WebBrowser/uMain.pas


Roy - So 25.01.15 01:27

@jaenicke
ist meine private Nachricht nicht angekommen?


jaenicke - So 25.01.15 11:26

Ich habe zwei bekommen, allerdings nur die beiden mit der Frage, ob die erste angekommen ist, ohne Anhang.


jaenicke - So 25.01.15 22:54

Jetzt ist der Anhang angekommen. Du musst im Buttonklick-Event die eingegebene Adresse als URL zuweisen:

Delphi-Quelltext
1:
WebBrowser1.URL := Text1.Text;                    

Als Zielplattform war im Projekt Windows eingestellt, damit funktioniert der TWebBrowser für Firemonkey nicht. Testen musst du also unter Android oder iOS.

Außerdem scheint die Seite, auf der du den Browser abgelegt hast, gar nicht erreichbar zu sein, wenn du das Projekt ausführst. Vielleicht solltest du es erst einmal ohne Tabs in einer leeren Anwendung ausprobieren.


Roy - So 25.01.15 23:23

Ich habe doch als Event, OnClick definiert


Delphi-Quelltext
1:
2:
3:
4:
procedure TTabbedwithNavigationForm.Button1Click(Sender: TObject);
begin
WebBrowser1.URL:= Edit1.Text
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


jaenicke - Mo 26.01.15 05:24

Dann ist das richtig, in der PN war das noch nicht so.

Siehst du denn auf dem Smartphone die Seite mit dem Browser? Sprich kommst du denn soweit um zu testen? Ich nämlich nicht, bei mir ist der Knopf zum Blättern deaktiviert. Ich habe jetzt nicht geschaut warum, denn auf der ersten Seite funktioniert es bei mir z.B. (oder in einer Anwendung ohne Tabs).


Roy - Mo 26.01.15 14:44

Wie signiere ich meine Anwendung manuell?


jaenicke - Mo 26.01.15 15:13

Zum Debuggen musst du sie nicht signieren. Genau ist das alles in der Doku beschrieben:
http://docwiki.embarcadero.com/RADStudio/XE7/en/Running_Your_Android_Application_on_an_Android_Device


Roy - Mo 02.02.15 15:27

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Zum Debuggen musst du sie nicht signieren. Genau ist das alles in der Doku beschrieben:
http://docwiki.embarcadero.com/RADStudio/XE7/en/Running_Your_Android_Application_on_an_Android_Device


Ich weiß nicht was Du mit debuggen meinst.
Sowie er bei mir eine unsignierte Datei erstellt komme ich nicht weiter was das erzeugte App nicht geöffnet wird.
Und er erzeugt immer egal was ich mache eine unsignierte apk


jaenicke - Mo 02.02.15 16:25

Benutzt du denn den Debugger oder überträgst du die kompilierte Datei manuell?


Roy - Mo 02.02.15 16:41

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Benutzt du denn den Debugger oder überträgst du die kompilierte Datei manuell?


wohin übertragen, zum Handy.
Habe mein Samsung angeschlossen, auf debuggmodus gestellt aber nichts passiert


jaenicke - Mo 02.02.15 17:24

Wird das Gerät denn in Delphi angezeigt? Hast du es markiert und dann F9 gedrückt?


Roy - Mo 02.02.15 22:04

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wird das Gerät denn in Delphi angezeigt? Hast du es markiert und dann F9 gedrückt?


Wo muss es denn angezeigt werden. 1, 2 oder 3


jaenicke - Di 03.02.15 08:59

Sorry, aber das steht alles in der Anleitung, die ich verlinkt habe, genauer gesagt unter Punkt 5 inkl. Screenshot...
Zitat:
The following image shows a populated Android Target node displaying the Nexus 10 device
Dort siehst du das Nexus 10 in der Liste der Ziele. Und da steht auch genau wie du bis dahin alles einrichtest.


Roy - Mi 04.02.15 11:09

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Sorry, aber das steht alles in der Anleitung, die ich verlinkt habe, genauer gesagt unter Punkt 5 inkl. Screenshot...
Zitat:
The following image shows a populated Android Target node displaying the Nexus 10 device
Dort siehst du das Nexus 10 in der Liste der Ziele. Und da steht auch genau wie du bis dahin alles einrichtest.


Wird nicht erkannt mein Samsung


jaenicke - Mi 04.02.15 11:16

Wird es denn im Gerätemanager erkannt? Was hast du diesbezüglich schon versucht? Lass dir doch nicht alles einzeln aus der Nase ziehen...

Dann gibt es z.B. entsprechende Treiber:
http://developer.samsung.com/technical-doc/view.do?v=T000000117
Den Treiber musst du ggf. manuell auswählen für das Gerät, wenn er nicht automatisch benutzt wird.

Gerade für Geräte von Samsung wie das Galaxy S5 gibt es aber schon unzählige Beiträge im Internet, die genau beschreiben wie man das Gerät korrekt installiert, so dass es im adb Interface auftaucht...


Roy - Fr 13.02.15 23:30

Hatte seit langem mal wieder Zeit und habe jetzt einige Einstellungen für mein Handy getätigt.
Also mein Samsung wird jetzt erkannt, auch im SDK Manager mehrere Handys simultan erzeugt.
Werden alle auch in Embarcardero angezeigt.

Neue simple apk erstellen wollen, ohne größere Komponenten.
Immer wieder Fehler. Erst geht ein Patch9 Fenster auf, keine Ahnung was ich da machen soll,
dann Fehler, invalit apk .

Was soll man denn noch alles einstellen?

Danke für Antworten


jaenicke - Sa 14.02.15 01:00

Den Fehler invalid apk kenne ich hauptsächlich von gerooteten Geräten. Eine Lösung habe ich dafür nicht gefunden.

Patch9? Vielleicht ist das gemeint:
http://docwiki.embarcadero.com/RADStudio/XE7/en/Using_9-patch_Images_in_Android

Welche Fehler kommen denn?

Beim Standard Galaxy S4 + S5 ohne Root lief bei mir alles ohne solche Probleme.


Roy - Sa 14.02.15 15:23

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Den Fehler invalid apk kenne ich hauptsächlich von gerooteten Geräten. Eine Lösung habe ich dafür nicht gefunden.

Patch9? Vielleicht ist das gemeint:
http://docwiki.embarcadero.com/RADStudio/XE7/en/Using_9-patch_Images_in_Android

Welche Fehler kommen denn?

Beim Standard Galaxy S4 + S5 ohne Root lief bei mir alles ohne solche Probleme.


Was heißt gerootet. Habe das so von Vodafon bekommen!


jaenicke - Sa 14.02.15 17:43

Dann kann es daran auch nicht liegen.

Jedenfalls hast du immer noch nicht genauer geschrieben was für Fehler sonst noch kommen. Du kannst auch Screenshots davon zeigen, wenn du es nicht so gut beschreiben kannst.


Roy - So 15.02.15 01:56

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dann kann es daran auch nicht liegen.

Jedenfalls hast du immer noch nicht genauer geschrieben was für Fehler sonst noch kommen. Du kannst auch Screenshots davon zeigen, wenn du es nicht so gut beschreiben kannst.


Es kommen weder beim comleieren noch beim erzeugen Fehler, nur beim debuggen


jaenicke - So 15.02.15 10:05

Wenn da nur der Fehler INSTALL_FAILED_INVALID_APK kommt, bis du genau an der Stelle, an der ich mit einem gerooteten Chinaphone war. Mit unveränderten Samsung Geräten hatte ich das noch nicht, aber das hilft dir leider auch nicht weiter, denn eine Lösung habe ich leider nicht.
Es gibt ein paar bekannte Ursachen, die Google ausspuckt, z.B. mit Leerzeichen oder Bindestrichen im Dateinamen:
http://qc.embarcadero.com/wc/qcmain.aspx?d=119756
Aber auch viele, die einfach das Problem haben:
http://codeverge.com/embarcadero.delphi.firemonkey/can-t-run-firemonkey-app-on-gal/1059835

Und das passiert auch mit einer leeren neuen App direkt?

Um deine App zumindest zu testen, kannst du in den Einstellungen des Geräts die Installation von Apps aus unbekannten Quellen erlauben. Dann sollte deine .apk auch ohne Signatur funktionieren.


Roy - Di 17.02.15 18:16

Das werde ich als nächstes versuchen. Gebe noch nicht auf :-)


Roy - Mo 08.06.15 20:55

Also so langsam drehe ich durch, bei erzeugen im Debugmodus kommen diese zwei meldungen


Roy - Fr 12.06.15 16:48

Könnte mir jemand beim Einrichten der Einstellungen bei Embarcadero über TeamViewer helfen?


Roy - Di 08.09.15 16:39

So ich habe jetzt ein Samsung S4 wieder mit Vertrag und es kommt immer noch die gleiche Meldung!
Mein vorheriges Handy war ein S4 Mini mit Vertrag also kein China-Handy, daran kann es nicht liegen


Delete - Di 08.09.15 20:14

- Nachträglich durch die Entwickler-Ecke gelöscht -


Delphi-Laie - Mi 09.09.15 00:14

Da möchte jemand mit XE7 ein Android-Programm schreiben, fragt aber, was Debuggen ist...Sebastian, ich staune immer wieder über Deine Geduld!


Roy - Mi 09.09.15 10:15

Mein Gertät ist aber aber nicht gerootet, frei für alle Netze


JoelH - Mi 09.09.15 15:20

Funktioniert die App denn wenn du sie auf deinem Rechner erstellst, die apk zum Handy kopierst und dort direkt installierst. Also ohne debugging und aufspielen durch die IDE?

Des Weiteren, kompilierst du auch mit einer Android-Version die dein Handy kann?


Delete - Mi 09.09.15 15:51

Gib Deinem Programm einen ordentlichen Namen!
Project1 existiert vielleicht schon...


Roy - Sa 19.08.17 10:01

Ich habe jetzt mal das Projectbeispiel von Delphi XE7 WebBrowser Komponente getestet.
Kann mir jemand sagen warum die Webseite die er aus Text Edit liest nur aus dem Cache gelesen wird wenn ich die App auf dem Handy starte.
Änderungen die ich auf meiner Webseite vornehme zeigt er nur an wenn ich im Project eine neue Edit mit Adresse setze und neu debugge!


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
unit uMain;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Edit,
  FMX.WebBrowser, FMX.Layouts, FMX.Controls.Presentation;

type
  TWebBrowserForm = class(TForm)
    WebBrowser1: TWebBrowser;
    btnGO: TButton;
    btnBack: TButton;
    btnForward: TButton;
    ToolBar1: TToolBar;
    StatusBar1: TStatusBar;
    edtURL: TClearingEdit;
    Button1: TButton;
    procedure btnGOClick(Sender: TObject);
    procedure btnBackClick(Sender: TObject);
    procedure btnForwardClick(Sender: TObject);
    procedure edtURLKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  WebBrowserForm: TWebBrowserForm;

implementation

{$R *.fmx}
{$R *.LgXhdpiPh.fmx ANDROID}

{Android: The required permissions have been set under Project-Options}

procedure TWebBrowserForm.btnGOClick(Sender: TObject);
begin
  { Passing the URL entered in the edit-box to the Web Browser component. }
  WebBrowser1.URL := edtURL.Text;
end;



procedure TWebBrowserForm.edtURLKeyDown(Sender: TObject; var Key: Word;
  var KeyChar: Char; Shift: TShiftState);
begin
  if Key = vkReturn then
  begin
    { navigate and hide the virtual keyboard when setting focus to GO button }
    WebBrowser1.URL := edtURL.Text;
    btnGO.SetFocus;
  end;
end;

procedure TWebBrowserForm.FormCreate(Sender: TObject);
begin
WebBrowser1.URL := edtURL.Text;
end;

procedure TWebBrowserForm.btnBackClick(Sender: TObject);
begin
  { move back one page in the history }
  WebBrowser1.GoBack;
end;

procedure TWebBrowserForm.btnForwardClick(Sender: TObject);
begin
  { move forward one page in the history }
  WebBrowser1.GoForward;
end;

end.


Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt


jaenicke - Sa 19.08.17 13:36

Das ist aber ein neues Thema. ;-)

Jedenfalls gibt es dafür entsprechende Events, auf die du reagieren kannst:
http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.Platform.TApplicationEvent
http://www.delphipraxis.net/193597-erkennen-wenn-programm-zwangsweise-beendet-wird.html#post1379006
In deinem Fall interessiert dich vor allem BecameActive. Dort kannst du dann die Webseite neu laden.