Merhaba.
- Size bir procedure hazırladım. Mümkün olduğunca anlaşılır olsun diye neyin ne olduğunu Türkçe değişken ismi kullandım. Bir bakışta çalışma sistemini anlayabileceksiniz.
- Bir HTML sayfanın hiyerarşik düzenle (
TAG'lar ile ayrılarak) oluştuğunu hepimiz biliyoruz. Bu örnekte bu hiyerarşi içerisindeki INPUT (
delphi'deki EDIT) ile TEXTAREA (
delphi'deki Memo) ilişkisini kurarak anlatmaya çalıştım.
- Bir sayfanın olgunlaştığını
if Assigned() veya
<> Nil şeklinde sorgulayabilirsiniz. Bir element'in de mevcut olup olmadığını da ya yine
if Assigned() ile veya
<> Nil şeklinde sorgulayabilirsiniz.
- Bir sayfada veri girişi yapılabilen alanlar (
bu başlıkta geçenler ile sınırlandırırsak)
<input ... ile başlayanlar EDIT tipindeki alanlardır veya
<textarea ... ile başlayanlar MEMO tipindeki alanlardır. Bu alanlarda atama yaparken kurallı olarak erişmek şarttır. Aşağıdaki procedure içerisinde bu kuralları göreceksiniz.
- Son söz olarak, kısadan
GetElementByID('itemadi').Value şeklinde kullanıyoruz ya, aşağıda bundan daha farklı bir şekilde, yani body bünyesindeki item'leri bir liste halinde alıp, her birini dolaşarak adının 'itemadi' olup olmadığını sorarak erişmeyi de örneklemiş olayım. Bu yapıyı, ileride başka URL'lerdeki html'lerin de veri noktalarını basitçe bir MEMO'ya dökecek şekle de rahatlıkla dönüştürebilirsiniz.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
Doc : IHTMLDocument2;
TumAlanlar : IHTMLElementCollection;
VeriGirisInput : IHTMLInputElement;
VeriGirisMemo : IHTMLTextAreaElement;
iSayac : Integer;
begin
if Assigned(WebBrowser1.Document) then // veya ( ... <> Nil ) şeklinde de sorabilirsiniz.
begin
Doc := WebBrowser1.Document as IHTMLDocument2;
TumAlanlar := Doc.body.all as IHTMLElementCollection;
if TumAlanlar <> Nil then // veya ( Assigned(...) ) şeklinde de sorabilirsiniz.
begin // listemiz hazır demektir.
for iSayac := 0 to TumAlanlar.Length - 1 do
begin
if ( TumAlanlar.Item(iSayac, EmptyParam) as IHTMLElement ).TagName = 'INPUT' then
begin // Edit Alanıdır. // <input ile başlayanların listesi
VeriGirisInput := ( TumAlanlar.Item(iSayac, EmptyParam) as IHTMLElement ) as IHTMLInputElement;
//http://www.bedavasiteekle.com/
if VeriGirisInput.Name = 'linkadi' then VeriGirisInput.Value := Edit1.Text;
if VeriGirisInput.Name = 'url' then VeriGirisInput.Value := Edit2.Text;
//www.site-ekle.net
if VeriGirisInput.Name = 'alk' then VeriGirisInput.Value := Edit1.Text;
if VeriGirisInput.Name = 'url' then VeriGirisInput.Value := Edit2.Text;
end;
if ( TumAlanlar.Item(iSayac, EmptyParam) as IHTMLElement ).TagName = 'TEXTAREA' then
begin // Memo Alanıdır. // <textarea ile başlayanların listesi
VeriGirisMemo := ( TumAlanlar.Item(iSayac, EmptyParam) as IHTMLElement ) as IHTMLTextAreaElement;
//http://www.bedavasiteekle.com/
if VeriGirisMemo.Name = 'kelimeler' then VeriGirisMemo.Value := Edit3.Text;
//www.site-ekle.net
if VeriGirisMemo.Name = 'aciklama' then VeriGirisMemo.Value := Edit3.Text;
end;
end;
end;
end;
end;
Başarılar.
