Форум: "Сети";
Текущий архив: 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.007 c