Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Webbrowser form element item adları
#1
Kod:
Form=00 item=01 - Name="keywords"
Form=00 item=02 - Name=""
Form=01 item=01 - Name="username"
Form=01 item=02 - Name="password"
Form=01 item=03 - Name="autologin"
Form=01 item=04 - Name="viewonline"
Form=01 item=05 - Name="redirect"
Form=01 item=06 - Name="sid"
Form=01 item=07 - Name="login"
Webbrowser içinden nasıl bu şekilde liste alabiliyoruz.  Form isimlerine ulaştım ama item numaralarına ve adlarına ulaşamadım. Yardımcı olursanız sevinirim.
Cevapla
#2
kod paylaşırsanız onun üzerinden gidelim. Daha rahat olur.
There's no place like 127.0.0.1
WWW
Cevapla
#3
function VariantIsObject(const value:OleVariant):boolean;
begin
   result := (VarType(value) = varDispatch);
end;

procedure Browser2TreeView(WebBrowser: TWebBrowser; root:TTreeNodes);
var
 i,j, k :Integer;
 FormItem, Element, SubElement: OleVariant;
 child, child2, child3 : TTreeNode;
 s_type : string;

begin
  Assert(Assigned(WebBrowser));
  Assert(Assigned(root));

  root.Clear;


 //count forms on document
 for I:=0 to WebBrowser.OleObject.Document.forms.Length -1 do
 begin
   FormItem := WebBrowser.OleObject.Document.forms.Item(I);

   if VariantIsObject(FormItem.Name) then
      child := root.AddChild(nil, 'Form'+IntToStr(i)+': '+FormItem.Name.Name)
   else
      child := root.AddChild(nil, 'Form'+IntToStr(i)+': '+FormItem.Name);
   child.ImageIndex := 3;


   For j:= 0 to FormItem.Length-1 do
   begin
     try
        Element := FormItem.Item(j);
        //when the fieldname is found, try to fill out
        child2 := root.AddChild(child, Element.Name+' = '+Element.Value);

        s_type := Element.Type;

        if s_type = 'submit' then
           child2.ImageIndex := 1
        else if s_type = 'text' then
           child2.ImageIndex := 0
        else if s_type = 'file' then
           child2.ImageIndex := 2
        else if s_type = 'hidden' then
           child2.ImageIndex := 4
        else if s_type = 'checkbox' then
           child2.ImageIndex := 5
        else if s_type = 'radio' then
           child2.ImageIndex := 6
        else if s_type = 'select-one' then
           child2.ImageIndex := 7
        else
           child2.ImageIndex := -1;

        child3 := root.AddChild(child2, 'Type='+s_type);
        child3.ImageIndex := -1;


        if s_type = 'text' then
        begin
           child3 := root.AddChild(child2, 'MaxLen='+IntToStr(Element.maxLength));
           child3.ImageIndex := -1;
        end
        else if s_type = 'select-one' then
        begin
           for k := 0 to Element.Options.Length-1 do
           begin
              SubElement := Element.Options.Item(k);
              child3 := root.AddChild(child2, SubElement.Text+ ' = <'+SubElement.Value+'>');
              child3.ImageIndex := -1;

           end;

// ShowMessage(IntToStr(Element.Options.Length));
        end;


     except
       on E:Exception do
        root.AddChild(child, E.Message);
     end;
   end;
 end;

  if root.Count > 0 then
     root.GetFirstNode.Expand(True);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  Browser2TreeView(WebBrowser1, TreeView1.Items);
end;

En son denediğim ve başka sitelerde sonuç aldığım kodlar bunlar.
Cevapla
#4
Form elemanlarının adlarına ulaşamadığınızı belirtmiştiniz. Şimdi ise "başka sitelerde sonuç aldığım kodlar bunlar" diyorsunuz. Yazdığınız kodda form elemanlarına erişim var. Sorun nedir tam anlayamadım? Sizin sorun yaşadığınız belirli bir web sitesi mi var?

Sayfadaki formaların bir listesini almak için:
var
  doc: IHTMLDocument2;
  formList: IHTMLElementCollection;
begin
  doc := WebBrowser.Document as IHTMLDocument2;
  formList:= doc.Forms as IHTMLElementCollection;
Bundan sonra formList içerisinde sayfa içindeki formalarınız mevcuttur. formList.Length ile form sayısını alabilirsiniz. Bir döngü içinde bu liste içinde dolaşabilir istediğiniz formla ilgili çalışma yaparsınız.
Yada ilgilendiğiniz formun ismi belli ise;
var
  birForm: IHTMLFormElement;
begin
   birForm := formList.Item(IlgiliFormunIsmi,'') as IHTMLFormElement;
şeklinde istediğiniz forma ulaşabilirsiniz.
There's no place like 127.0.0.1
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Form create h.k (Çözüldü ) cinarbil 12 266 25-01-2018, Saat: 12:09
Son Yorum: cinarbil
  thread form donma sorunsalı seci20 3 136 22-01-2018, Saat: 09:42
Son Yorum: edo
  Çalışma anında form tasarımı boreas 4 220 10-01-2018, Saat: 17:10
Son Yorum: boreas
  FastReport Form'dan tarih bilgisi almak yhackup 2 145 20-11-2017, Saat: 10:42
Son Yorum: yhackup
  Form kapanmıyor Dostk 7 302 09-11-2017, Saat: 22:07
Son Yorum: SimaWB



Konuyu Okuyanlar: 1 Ziyaretçi