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...
Webbrowser ' de margin ayarı
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Selam..
- Zaten çözümünü vermişsiniz.
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.
- Zaten çözümünü vermişsiniz.
Kod: Tümünü seç
<body leftmargin="0" topmargin="0">
- 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.

Delphi'den Webbrowser nesnesinin içindeki sayfanın DOM unu yönetebilirsiniz. Tıpki javascriptteki gibi.
veya
İ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.
Kod: Tümünü seç
(webbrowser1.Document As IHTMLDocument2).body.style.marginLeft = 10;
Kod: Tümünü seç
olevariant(webbrowser1.Document).body.style.marginLeft := 10;
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...
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...