webbrowser sayfanın tamamı değil div alanı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

webbrowser sayfanın tamamı değil div alanı

Mesaj gönderen Lord_Ares »

merhaba, web sayfasındaki belli bir alanı webbrowser içinde göstermeye çalışıyorum. Bu konu hakkında yardımcı olursanız sevinirim.
1) Yapmaya çalıştığım , facebooktaki, sadece sohbet kısmını ( sohbetteki arkadaş listesi kısmı ) webbrowser içinde göstermek istiyorum.
2) Yeni mesaj geldiğinde ayrı bir pencere açılıyor bunu yakalayıp ayrı pencerede gösterme şansım varmı.
konu hakkında html olarak epey aradım, fakat yeni pencereyi ajax ile oluşturduğu için pek birşey bulamadım.
teşekkürler
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: webbrowser sayfanın tamamı değil div alanı

Mesaj gönderen mrmarman »

Merhaba..

1. Yapmak istediğin (konuşma bloğunu almak) için; vereceğin bir <div class="..." bloğunu takibe alan bir fonksiyon hazırladım.

Not: Adını FaceKonusma koydum ama bu sadece facebook'a özel değildir. Fonksiyon parametrelerinden de görebileceğiniz gibi HTML içinden seçerek vereceğiniz herhangi bir DIV Class tanımını takibe alır. Örneğimizde : Konusma = '<div class="conversation"';

// Yapılacak işlem strDIV parametresinde verileni bulursak, bulunan <DIV>'e konumlanmak
// sonra da alt <DIV Class oluşumlarını (+) / (-) yönde sayarak istediğimiz DIV'in
// yani tüm ana DIV bloğunu yakalamak.

Fonksiyonun içine açıklamaları ekledim.

// Kullanımı //

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
Const
  Konusma = '<div class="conversation"';
begin
  Memo1.Lines.Text := FaceKonusma( Konusma, WebBrowser1.Oleobject.Document.Body.InnerHTML );
end;
// Fonksiyon //

Kod: Tümünü seç

Function FaceKonusma( strDIV, strIcerik:String ):String;
Var
  strBlok, strUrun: String;
  iDIVsay, iAc, iKapa: Integer;
begin
 // Yapılacak işlem strDIV parametresinde verileni bulursak, bulunan <DIV>'e konumlanmak
 // sonra da alt <DIV Class oluşumlarını (+) / (-) yönde sayarak istediğimiz DIV'in
 // yani tüm ana DIV bloğunu yakalamak.
  Result := '';
  if Pos( strDIV, strIcerik ) <= 0 then EXIT;
  strBlok := strIcerik;
  System.Delete( strBlok, 1, Pos( strDIV, strBlok )-1 );
  iDIVSay := 1; // bizim ana <DIV> bunu (0) olana kadar gidip gelicez...
  strUrun := '';
  // Başlıyoruz...
  // Önce aradığımız ana strDIV'i ekleyip, strBloktakini imha ediyoruz. Ayağımıza dolaşmasın :)
  strUrun := strUrun + Copy( strBlok, 1, Pos('strDIV', strBlok) + Length(strDIV)-1 );
    System.Delete( strBlok, 1, Pos('strDIV', strBlok) + Length(strDIV)-1 );
  while iDIVSay > 0 do
  begin
    iAc   := Pos( '<DIV',   UpperCase( strBlok ) );
    iKapa := Pos( '</DIV>', UpperCase( strBlok ) );
    // bir '<div' başlangıcı ve bir '</div' sonlandırıcı bulduk.
    // Şimdi (iAc ve iKapa) hangi pozisyon büyük / küçük onu sorgulayarak
    // aradığımız master <DIV> 'i kapsıyor mu onu öğrenicez...
    if iAc < iKapa then
    begin // kurallı bir blok ama bizim için yeterli değil...
      strUrun := strUrun + Copy( strBlok, 1, iAc + 3 ); // en yakındaki = '<div'
        System.Delete( strBlok, 1, iAc + 3 ); // yakındakine kadar (dahil) sil...
      inc(iDIVSay); // bir iç blok ekledik...
    end else
    begin // kırık kural bulduk...
      strUrun := strUrun + Copy( strBlok, 1, iKapa + 5 ); // en yakındaki = '</div'
        System.Delete( strBlok, 1, iKapa + 5 ); // yakındakine kadar (dahil) sil...
      dec(iDIVSay); // bir iç blok düştük...
    end;
  end; // while
  Result := strUrun;
end;
2. Belli aralıklar ile HTML içeriğini kontrol etmek ile sonuç alabileceğini değerlendiriyorum.

Ekleme : :idea:
// Conversation ID olarak DIV Class yanında id="u_0_p" şeklinde ifade var bunları da takip içine alırsan o zaman sadece o ID'li DIV bloğunu yakalarsın ..
Örneğin :

Kod: Tümünü seç

Const
  Konusma = '<div class="conversation" id="u_0_p"'; // Sadece "u_0_p" ait konuşmayı yakalarsın...
Başarılar. :bravo:
Resim
Resim ....Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: webbrowser sayfanın tamamı değil div alanı

Mesaj gönderen Lord_Ares »

vallahi abi süpersin. hemen deniyorum. teşekkürler.
Cevapla