FMX Webbrowser

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
kadrikaya
Üye
Mesajlar: 38
Kayıt: 02 Ara 2016 12:31

FMX Webbrowser

Mesaj gönderen kadrikaya »

Selamlar,
Windows form da
WebBrowser1.OleObject.Document.... in karşılığı FMX formda nedir?
element click ve text olaylarını tetiklemem ve textlere ulaşmam gerekli. Windows formda sorun yok ama FMX formda nasıl yapılır bulamadım.
Yardımlarınızı rica ediyorum.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: FMX Webbrowser

Mesaj gönderen SimaWB »

WebBrowser.EvaluateJavaScript yardımıyla sayfada Javascript çalıştırarak yapılabilir sanırım.

Mesela buton click eventi için:

Kod: Tümünü seç

WebBrowser.EvaluateJavaScript('document.getElementById("buton_id").click();');
There's no place like 127.0.0.1
kadrikaya
Üye
Mesajlar: 38
Kayıt: 02 Ara 2016 12:31

Re: FMX Webbrowser

Mesaj gönderen kadrikaya »

Teşekkürler,
Aramalarda bu sonuca ulaştım. Ancak aynı şekilde bir elemanın değerini öğrenme işlemi nasıl yapılır bulamadım, Bunun yanında TitleChange olayına ihtiyacım var, yada sayfada gerçekleşen bir duruma göre davranmam gerekli bu durumu nasıl dinlerim.

Aslında bunların hepsi winform da yapılabilen şeyler. WinWebbrowser ı Fmx de kullanmanın bir yolu olsa güzel olur.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: FMX Webbrowser

Mesaj gönderen SimaWB »

Desktop uygulamasındaki TWebBrowser ile Firemonkey'de tamamen farklı. Herşeyden önce; biliyorsunuzdur, OLE-COM teknolojileri Windows'a özgü.

JS ile yapabileceklerinize odaklanmalısınız yada TWebBrowser'dan vazgeçeceksiniz.

JS'de addEventListener, attachEvent vs. işinize yarayabilir.
There's no place like 127.0.0.1
kadrikaya
Üye
Mesajlar: 38
Kayıt: 02 Ara 2016 12:31

Re: FMX Webbrowser

Mesaj gönderen kadrikaya »

Farklı olduğunu biliyorum,
Ancak aramalarda yeniden düzenlenmiş ve TWebBrowser ile yapılan işlemlerin aynısının yapılabileceği söylenenen WebBrowserEx unit ile karşılaştım github da, ancak son olarak Seatle desteği var. Ben berlin kullanıyorum ve uniti kullanamadım.

Teşekkürler.
kadrikaya
Üye
Mesajlar: 38
Kayıt: 02 Ara 2016 12:31

Re: FMX Webbrowser

Mesaj gönderen kadrikaya »

Selam,
bu durumda bir şey sormak isterim

FMX WebBrowser bir text veya edit alanın değerini nasıl alabilirim.
Bu konuda bir yardımınız olabilir mi?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: FMX Webbrowser

Mesaj gönderen SimaWB »

Yanlış bilmiyorsam EvaluateJavaScript yada execScript size bir cevap döndürmez.
Bir parametre alıp, bu parametrenin değerini değiştiren bir JS fonksiyonu yazılmış olursa istediğiniz olur.
İlgili web sayfasında değişiklik şansınız varsa böyle bir JS fonksiyonu yazabilirsiniz.
There's no place like 127.0.0.1
kadrikaya
Üye
Mesajlar: 38
Kayıt: 02 Ara 2016 12:31

Re: FMX Webbrowser

Mesaj gönderen kadrikaya »

Selam,
Böyle bir JS yazdığımızı varsayalım, soru yine aynı.
Bu js nin değiştirdiği değeri delphide bir değişkene nasıl aktaracağım.
Konu dönüp dolaşıp browserdan değer almaya geliyor.
Teşekkür ederim.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: FMX Webbrowser

Mesaj gönderen SimaWB »

Şöyle bir JS fonksiyonu var diyelim:

Kod: Tümünü seç

function getCount(cnt) { cnt = 10; }
Bunu Delphi'den çağırmak için

Kod: Tümünü seç

WebBrowser1.EvaluateJavaScript('getCount('+BirDelphiDegiskeni+');')
Yine denemeden yazdım ama bu şekilde BirDelphiDegiskeni'nin değeri değişmesi lazım.

Ayrıca aşağıdaki sayfaya göz atabilirsiniz:
https://community.embarcadero.com/blogs ... phi-xe6-55
There's no place like 127.0.0.1
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: FMX Webbrowser

Mesaj gönderen SimaWB »

Vakit bulup son gönderdiğim şekilde bir örnek denediğimde başarısız olduğunu gördüm. Bunu sebebi Javascript'te fonksiyon parametreleri değiştiremiyor oluşumuz(Parametre JS Object ise durum farklı). Dolayısıyla getCount'a gönderilen bir integer değişkenin değeri değişmeyecektir.
There's no place like 127.0.0.1
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: FMX Webbrowser

Mesaj gönderen SimaWB »

Bunu aşmak için şöyle bir yol olabilir ama bilmem ne kadar ihtiyacınız karşılar:
Yukarıda belirttiğim şekilde Delphi'den JS'ye değer atayabiliyorsunuz. JS'deki değeri sayfa içindeki bulunan hidden input'a atarsınız. Sonra "HTML parse" ile bu input'un değerini alırsınız. Yani değişen tek şey DOM kullanarak element değerleri ulaşmak yerine HTML parse kullanmak.
There's no place like 127.0.0.1
kadrikaya
Üye
Mesajlar: 38
Kayıt: 02 Ara 2016 12:31

Re: FMX Webbrowser

Mesaj gönderen kadrikaya »

Bende deneme yaptım olmadı ancak cevap yazmadan önce biraz araştırma yapayım belki bir sonuca ulaşırım dedim oda olmadı.
HTML parse edebilmek için de sonuçta veriye ulaşmak gerek. WEbBrowserdan html kaynağı nasıl alabilirim.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: FMX Webbrowser

Mesaj gönderen SimaWB »

Şöyle birşey buldum:
https://github.com/freeonterminate/delp ... WebBrowser
FMX desteği olduğu yazıyor ve GetTagValue adında bir fonksiyonu var HTML elemanlarının değerlerini almak için

Ayrıca:
https://delphihtmlcomponents.com/
https://jonlennartaasenden.wordpress.co ... ng-engine/
There's no place like 127.0.0.1
kadrikaya
Üye
Mesajlar: 38
Kayıt: 02 Ara 2016 12:31

Re: FMX Webbrowser

Mesaj gönderen kadrikaya »

github WebBrowserEx, bunu inceledim. Daha öncede söylediğim gibi berlinde çalışmıyor malesef.
HtmlComponent bunu da inceledim. Editöryel anlamda işler yapıyor. O anda browser içinde çalışan html in değişen eleman değerleri veya javascript ile değişen değerler ile ilgilendiğim için buda işimi görmüyor malesef.

WebBrowserEx'i berlin için çalışır duruma getirebilseydim çok iyi olurdu ancak o kadar derinlemesine bilgi sahibi değilim.
Teşekkür ederim.
Cevapla