Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Вниз

TWebBrowser - как узнать содержимое формы   Найти похожие ветки 

 
ZED   (2002-05-30 00:33) [0]

Уважаемые Мастера! Пишу программу, использующую компонент TWebBrowser для просмотра html в offline. На html есть форма с checkbox"ами и кнопка "Ответ". Как узнать в программе, что именно отметил user? Понимаю, что-то нужно прописать в свойстве onBeforeNavigate2.


 
int64   (2002-05-30 07:23) [1]

Вот код. В стринг через пробел записывает значения checkbox"ов, если они отмечены, и если их имена "checkbox_group1".

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
Coll : HTMLElementCollection;
Doc: HTMLDocument;
i: integer;
s: string;
begin
s:= "";
Doc:= HTMLDocument(WebBrowser1.Document);
if assigned(Doc) then
begin
Coll:=HTMLElementCollection(Doc.All.Tags("INPUT"));
for i:=0 to Coll.length-1 do
with HTMLInputElement(Coll.item(i,varEmpty)) do
if checked and
(type_="checkbox") and
(name="checkbox_group1"){имя элемента INPUT}
then
s:= s + " " + value;
end;
Caption:= s;
end;


ps. Если чё непонятно, интересуйся.


 
ZED   (2002-05-31 01:44) [2]

Огромное спасибо!

Пара вопросов:
1. Coll : HTMLElementCollection; //Что за тип?
2. with HTMLInputElement(Coll.item(i,varEmpty)) // Что откуда берется?

Сам тоже не сидел сложа руки и вот как решение вопроса получилось у меня:

procedure TFormBrowser.WebBrowser1BeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
var
I, J : Integer;
FormItem: Variant;
FieldName, CheckBox : array[0..NumOfValue-1] of String;

//no form on document
if WebBrowser1.OleObject.Document.all.tags("FORM").Length = 0 then
begin
Exit;
end;
//count forms on document
for I := 0 to WebBrowser1.OleObject.Document.forms.Length - 1 do
begin
FormItem := WebBrowser1.OleObject.Document.forms.Item(I);
for j := 0 to FormItem.Length - 1 do
begin
try
//when the fieldname is found, try to read
FieldName[j]:=FormItem.Item(j).Name;
CheckBox[j]:=FormItem.Item(j).Checked;
except
Exit;
end;
end;
end;



В данном случае значение value меня мало интересует - мне нужно знать номер checkbox"a на форме (четкий порядок расположения). Можно также записать в цикле

Value[j]:=FormItem.Item(j).Value; // И узнаем значение Value

P.S. В моем случае определяются имена не только checkbox"ов, но и других элементов (Button и т.п.).

Еще раз спасибо!



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
1-35330
Владик_1
2002-07-29 17:56
2002.08.12
Как к гриду?


1-35328
valdn
2002-07-25 17:02
2002.08.12
просмотр перед печатью


1-35343
Skif
2002-07-30 12:02
2002.08.12
DOS и текстовый файл


1-35250
Lola
2002-07-31 09:30
2002.08.12
Куда физически TQuery пишет сформированный запрос?


14-35457
Baz
2002-07-18 17:05
2002.08.12
Домены.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский