Webbrowser ' de margin ayarı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

Webbrowser ' de margin ayarı

Mesaj gönderen nosedive »

HTML bilenler bilirler

body tag ında leftmargin ve topmargin diye iki özellik verilir..web sayfanızı yaptığınzda sayfanız internet explorer penceresinde soldan ve yukardan 2-3 mm içerde görüntülenir..Leftmargin ve topmargin özelliklerini 0 yaptığınızda sayfanız sol ve üst kenarlar ile birelişir..

şimdi web browserde bi resmin linkini görüntülüyorum...ve aynı şekilde resim biraz içerde görüntüleniyor...bunu web browserde çözmenin bi yöntemi varmı...

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

Mesaj gönderen mrmarman »

Selam..

- Zaten çözümünü vermişsiniz.

Kod: Tümünü seç

<body leftmargin="0" topmargin="0">
ile ama, bu çözümü ne için istediğinizi açar mısınız ? Proje dahilindeki TWebBrowser'da mı yoksa açık olan bir Internet Explorer / Opera / Firefox penceresinde mi ?

- Sorumdaki ikinci duruma dikkatinizi çekerim, açık pencere blgisi alınarak ona göre işlem yapmak gerekeceğinden kontrolünüz dışında farklı bir browser ile yapılan işlemde sonuç olumsuz olacaktır.

- Bu nedenle TWebBrowser da olsa harici başkası da olsa değişmeyecek şey, resmi navigate ettirmek için küçük bir HTML dosya vb. generate edip, bu html'yi gösterime sunun. HTML'nin Body tanımı da yukardaki gibi olsun. Böylece hangi ortanda gösterilmek istenirse istensin, dileğiniz yerine gelmiş olacaktır. :idea:
Resim
Resim ....Resim
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Delphi'den Webbrowser nesnesinin içindeki sayfanın DOM unu yönetebilirsiniz. Tıpki javascriptteki gibi.

Kod: Tümünü seç

(webbrowser1.Document As IHTMLDocument2).body.style.marginLeft = 10;
veya

Kod: Tümünü seç

olevariant(webbrowser1.Document).body.style.marginLeft := 10;
İlkinde interface ile erişmiş olursun ve diğer özellikleride görebilirsin kod yazarken ama bunun için import type library'den Microsof internet controls u import etmen gerekli. 2. kodda intefacesiz bağlanmış olursun. Fonksiyon runtime'da late binding olur ama projene çok büyük bir dosyayı import etmemiş olursun.
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

cevap

Mesaj gönderen nosedive »

Microsoft internet Controls ' u import etmeme sanırım gerek yok. TWebbrowser ve diğer nesneler ekli diyor.

İkinci yöntemde interface siz bağlanmış olursun dediğiniz kısmı açarmısınız biraz...tam anlamadım...
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Microsoft internet Controls'u ekletmemin sebebi interfaceleri elde etmekti.
Sorunuza gelince.

COM teknolojisi ile ilgili birşey. Webbrowser'ın içindeki DOM aslında Automation Objectlerden oluşan hiyerarşik bir yapı.

COM objectlerinin çalışan instance'ının metodlarına ulaşmak için 2 yol vardır.
Early binding (erken bağlama) ve Late binding(geç bağlama).

Early binding'te compiler, COM objectinin metodlarının objecte ait Vtable daki pointerının pozisyonunu önceden interfacei elinde olduğu için bilir.

Late binding sadece Automation objectleri için geçerlidir. Her automation object IDispatch ı destekler. IDispatch runtime'da metod isimlerinin çözümünü ve çalıştırılmasını sağlayan standart metodlar ihtiva eder. Yani önceden metodun adresini bilmesek bile runtimeda ismini vererek onu çağırabilecek bir yöntem sağlar. Script'le kontrol edilebilen objectler böyle objectlerdir. Internet explorer'ın nesneleri, Word, excel in nesneleri (VBA'dan kontrol edilebilir), ASP nesneleri böyle nesnelerdir.

Eğer elimizde Automation objectlerinin interfacei varsa runtimeda metod çözümüne gerek kalmaz. Yani early binding olur.

Delphi'de Automation nesnelerine variantlarla erişebiliriz. myvariant.mymetod dersek myvaraint'ın metod çözümüne ilişkin kodlar compiler tarafından otomatik olarak dahil edilir programa.

Bazı kavramlar yabancı gelmiş olaiblir. Bunları internetten araştırabilirsiniz.

Kolay gelsin...
Cevapla