TWebBrowser'da sağ click engelleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

:D Tebrikler... Çözümünüz çok mantıklı...

:idea: Olayı çözmüşsünüz.. Eklemeniz gereken tek şey Navigasyonu durudurup, tetiklemeyi gerçekleştirmek...

Kod: Tümünü seç

  If Pos('=', URL) > 0 then
  begin 
    Cancel := True;
    // Burada ='den sonraki değere göre istediğiniz sorguyu yaptırın...
  end;
:idea: Navigasyon içinde = görülürse WordBool tipindeki Cancel değşkenine True değeri verdirirseniz navigasyon yapılmaz ama siz değer okumuş olursunuz...

- Çalışmalarınızda başarılar...
Resim
Resim ....Resim
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

hocam Merhaba

Kırpma işlemi tamamdır

Kod: Tümünü seç

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
 Headers: OleVariant; var Cancel: WordBool);
var
NewUrl,kategori,icerik: string;
  i,Yol:Integer;

begin
Memo1.Clear;

NewUrl:=VarToStr(URL);         { Url yi str ye Cevir       }
Yol:=Length(GetCurrentDir);    { Path uzunluk bul          }
Delete(NewUrl,1,Yol+1);        { Path uzunluk kadarını sil }
i:=pos('=',NewUrl);            { = Kacıncı karakter        }
Kategori:=LeftStr(NewUrl,i-1); { Kategoriyi url den cıkar  }

Memo1.Lines.Add('Kategori No :'+Kategori);{ Kategori alındı }

Delete(NewUrl,1,i);            { = e kadar tüm karakterleri sil }
icerik:=NewUrl;                { Geri kalan bizimdir }

Memo1.Lines.Add('Icerik No :'+icerik);{ icerik alındı }

end;
baska bir sorunla karsılastım

yukarda ki koda bunu ekleyince sapıtıyor

Kod: Tümünü seç

//db bilgilerini aldıktan sonra sayfayı acıyoruz
WebBrowser1.Navigate(GetCurrentDir+'/'+'OutputQuery1.htm'); 
Sorunu daha fazla irdelemedim aksam tekrar bakıcam

hocam birazdan etkinligimize katılmak için cıkacam
İnsaallah bir gün sizinlede tanısmak nasip olur

Saygılar.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

- Procedure dahilinde kontrolü ele almak için if bloğu içine almak ve her navigasyonda devreye girmemesini sağlamak lazım... Bunu daha önceki cevabında belirtmiştim....

- Bunun için alacağın if bloğu sonunada Cancel := True; demek lazım ki navigasyon iptal edilsin...

- Sonuç olarak demek istediğim şekil şu...

Kod: Tümünü seç

var
  kategori,
  icerik   : string;
begin
  If Pos('=', URL) > 0 then // Diğer navigasyonlara dokunulmayacak...
  begin // = (eşittir) işareti olduğuna göre parametre okunmuş...
    Memo1.Clear;
    // --- Kategoriyi ödünç kullanıyoruz... url den cıkar --- //
    Kategori   := Copy(URL, Length(ExtractFilePath(URL))+1, 9999); // 9999 yazmanda sakınca yok, kısa olsa da hata vermez...
    // --- İçerik oku --- //
    icerik     := Copy(Kategori, 3, 9999); // ='den sonrası 3. karakter
    // --- Geri kalan bizimdir ---     //
    Kategori   := Kategori[1]; // ilk karakter ise kategori...
    Memo1.Lines.Add('Kategori No :'+Kategori); // Kategori alındı
    Memo1.Lines.Add('Icerik No :'+icerik);// icerik alındı
    Cancel := True; // Mevcut navigasyonu durdurduk..
    // Burada END blok sonundan önce yeni navigasyonunu yaptırabilirsin...
    // ...
    //db bilgilerini aldıktan sonra sayfayı acıyoruz
    WebBrowser1.Navigate(GetCurrentDir+'/'+'OutputQuery1.htm');
    // ...
  end;
:arrow: Tebrikler çok iyi gidiyorsunuz... :)

:idea: Yemek için afiyet olsun... Görüştüğünüz herkese şahsen bir selam... buradan da okuyanlara selam... 8)
Resim
Resim ....Resim
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

Hocam öncelikle ilginizi candan tesekkür ederim

hocam verdiginiz kodla kategori ve içerikler sabit adet gibi görülmüs
bu sekilde sabit alanlar için gecerli olur

ben db den veri cekerken

Kod: Tümünü seç

var id,bolumid:string;
begin
   while not (Data.Eof) do
begin
id:=Data.FieldByName('id').AsString;
bolumid:=Data.FieldByName('bolumid').AsString;
Add('<a href="'+bolumid+'='+id+'">'+Data.FieldByName('Ad').AsString+'</a>');
Data.Next;
end;
end;
bu sekilde id ve bolum id 1 9999999 arasında degisebiliyor

Sonuc olarak

Kod: Tümünü seç

Cancel := True; { navigasyonu durdur }
WebBrowser1.Navigate(GetCurrentDir+'/'+'OutputQuery1.htm');
diger kodlara hic dokunmadan
navigasyonu durdurup sayfayı acınca işlem tamamdır

Biz bu sekilde

Kod: Tümünü seç

Where
  "YT.db"."Bolum1" =:"kategori" or "Bolum2" =:"icerik"
veritabanına gidecek sorguda kategori nolu kategorinin icerik nolu elemanını almıs olduk

simdilik bu iş görür sanırım sırada sonraki işlemler var
Henüz diger kodları yazmadım birazdaha geliştirecem(dinamiklestirecem)
terslik olursa tekrar yazarım

Hocam fikrinizi ve bilginizi bizimle paylastıgınız için cok tesekkür ederim

Saglıcakla kalın
..
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

- Kodlarınız bilinmediğinden verdiğim örnek zaten prensip şema idi... :) Geliştirmeye açık... Sadece Cancel olayını verip yeni sorunuzu yaptıracağınız noktaya işaret etmiştim... Tabii ki OutputQuery1.htm sorgusunu yaptırmanız lazım ki statik olmasın...

- Çalışmalarınız güzel gidiyor, başarılar dilerim...
Resim
Resim ....Resim
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

Hocam tesekkürler

Uygulamayı düsündügüm gibi bitirebilirsem harika olacak
webserver olmadan her pc de calısıbilen dinamik bir web Modülü olacak

Yapmak istediklerim
1-kategori ekle/düzenle/ sil
2-istedigin kategoriye icerik ekle
3-icerikleri/düzenle/sil
4-yardım/hakkımda/vs vs
simdilik aklımdakiler bunlar

Sayenizde epey ilerledim
Bu işlerin yarısı bitti Digerinide yapabilecegime inanıyorum
Cok bos vaktim olmadıgı için biraz agır gidiyorum

insaallah biterse calısır sekliyle Size postalarım

İş hayatınızda basarılar dilerim
Sevgiler...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Teşekkürler...

- Çalışır haldeki kodları yollamanız, WebBrowser'ı local ve dinamik kullanımını görmek adına diğer üyeler için faydalı olacaktır... :wink:

- Şahsıma değil @Admin aracılığıyla foruma postalarsanız faydalı olur...

- Program source'u sizin tasarrufunuzda olduğunu değerlendirdiğimden ilerleyen zamanlardan örnek teşkil edecek küçük bir program yazar gönderirsiniz.. Vakit bulduğumda ben de yazar gönderir, sizi meşgul etmemiş olurum...

- Çalışmalarınızda başarılar...
Resim
Resim ....Resim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

mrmcop yazdı:- Şahsıma değil @Admin aracılığıyla foruma postalarsanız faydalı olur...
budur, başka birşey demiyorum :)

Siz paylaşmanın dayanılmaz zevkini tatmadınız mı hala :wink:

İyi günler.
Cevapla