اگه شما روي فرمتون در دلفي يك كنترل WebBrowser داشته باشيد و در اون يك صفحه رو باز كرده باشيد، و اون فرم وب شامل يك يا چند فرم باشه، با كدهاي زير ميتونيد كنترلهاي اون فرم وب رو مقدار دهي و همچنين اون فرم وب رو Submit كنيد: با اين پروسيجر ميتونيد يك كنترل (فيلد) خاص رو از يك فرم مقداردهي كنيد: [TABLE] [TR] [TD="class: gutter"]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [/TD] [TD="class: code"]procedure WebFormSetFieldValue(const document: IHTMLDocument2; const formNumber: integer; const fieldName, newValue: string) ; var form : IHTMLFormElement; field: IHTMLElement; begin form := WebFormGet(formNumber, document) ; field := form.Item(fieldName,'') as IHTMLElement; if field = nil then Exit; if field.tagName = 'INPUT' then (field as IHTMLInputElement).value := newValue else if field.tagName = 'SELECT' then (field as IHTMLSelectElement).value := newValue else if field.tagName = 'TEXTAREA' then (field as IHTMLTextAreaElement).value := newValue; end; [/TD] [/TR] [/TABLE] البته تابع WebFormGet كه در پروسيجر بالا به كار برده شده، اين شكليه: [TABLE] [TR] [TD="class: gutter"]1 2 3 4 5 6 7 8 [/TD] [TD="class: code"]function WebFormGet(const formNumber: Integer; const document: IHTMLDocument2): IHTMLFormElement; var forms: IHTMLElementCollection; begin forms := document.forms as IHTMLElementCollection; Result := forms.item(formNumber, '') as IHTMLFormElement; end; [/TD] [/TR] [/TABLE] و نحوه استفاده: [TABLE] [TR] [TD="class: gutter"]1 [/TD] [TD="class: code"]WebFormSetFieldValue((WebBrowser1.Document as IHTMLDocument2), 0, 'q', 'test'); [/TD] [/TR] [/TABLE] پارامتر اول كه Document كنترل WeBrowserتون رو ارسال ميكنه، پارامتر دوم شماره فرم وب هست، اگه صفحه باز شده در WebBrowser فقط يك فرم داشته باشه شمارهاش صفره و اگه بيشتر شمارهاش هم بيشتر ميشه (از صفر شروع ميشه). پارامتر سوم، اسم كنترل هست. مثلاً در فرم صفحه اول سايت گوگل، كنترلي كه داخلش متن رو براي جستجو تايپ ميكنيد اسمش q است. و پارامتر آخر مقداريه كه بايد داخل اون كنترل قرار بگيره. اما نحوه Submit كردن فرم: [TABLE] [TR] [TD="class: gutter"]1 2 [/TD] [TD="class: code"]form := WebFormGet(0, WebBrowser1.Document AS IHTMLDocument2); form.submit; [/TD] [/TR] [/TABLE] مشخصه كه اون صفر شماره فرمه، (يعني اگه بيشتر از يك فرم داشتيد بايد شماره فرم مورد نظر رو به جاي صفر قرار بديد). ضمن اينكه اين متغير form از نوع IHTMLFormElement هست. اما يك تابع براي اينكه اسم كنترلهاي فرم وب رو بتونيد بدست بياريد: [TABLE] [TR] [TD="class: gutter"]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [/TD] [TD="class: code"]function WebFormFields(wBrowser: TWebBrowser; const formNo: Integer): TStringList; var form: IHTMLFormElement; field: IHTMLElement; fName: string; idx : integer; begin form := WebFormGet(formNo, wBrowser.Document as IHTMLDocument2); Result := TStringList.Create; for idx := 0 to form.length - 1 do begin field := form.item(idx, '') as IHTMLElement; if field = nil then Continue; fName := field.id; if field.tagName = 'INPUT' then fName := (field as IHTMLInputElement).name else if field.tagName = 'SELECT' then fName := (field as IHTMLSelectElement).name else if field.tagName = 'TEXTAREA' then fName := (field as IHTMLTextAreaElement).name; Result.Add(fName); end; end; [/TD] [/TR] [/TABLE] و البته حتماً ميخواهيد كه اسامي فرمهاي داخل صفحه وب رو هم داشته باشيد. شايد اون صفحه بيشتر از يك فرم داشته باشه: [TABLE] [TR] [TD="class: gutter"]1 2 3 4 5 6 7 8 9 10 11 12 13 14 [/TD] [TD="class: code"]function WebFormNames(const document: IHTMLDocument2): TStringList; var forms: IHTMLElementCollection; form: IHTMLFormElement; idx: Integer; begin forms := document.forms as IHTMLElementCollection; Result := TStringList.Create; for idx := 0 to forms.length - 1 do begin form := forms.item(idx, 0) as IHTMLFormElement; Result.Add(form.name); end; end; [/TD] [/TR] [/TABLE] همون طور كه ميبينيد كه مقداري كه دو تابع آخر برميگردونن از نوع TStringList هست، ميتونيد اونها رو به شكل زير به Memo نسبت بديد: ابتدا در قسمت var يك متغير از نوع TStringList تعريف كنيد: [TABLE] [TR] [TD="class: gutter"]1 [/TD] [TD="class: code"]Str: TStringList; [/TD] [/TR] [/TABLE] حال در يك پروسيجر مثلاً در OnClick يك Button بنويسيد: [TABLE] [TR] [TD="class: gutter"]1 2 [/TD] [TD="class: code"]Str := WebFormFields(WebBrowser1, 0); Memo1.Lines.Assign(Str); [/TD] [/TR] [/TABLE] منبع: delphi.about.com