Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-35327
GTA 3
2002-07-29 21:03
2002.08.12
Сохранение строки в файл, НО в опр. строку по счёту


4-35526
Юрий Зотов
2002-06-03 18:51
2002.08.12
Отмена показа подменю


14-35420
DenKop
2002-07-15 17:29
2002.08.12
Спецификация COM


4-35491
Serd_hhc
2002-06-02 16:24
2002.08.12
Невидимый процесс.


4-35512
Help
2002-06-03 16:15
2002.08.12
HTML Title