Главная страница
    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.007 c
1-35287
BlackSun
2002-07-31 17:13
2002.08.12
ClientSocket и ServerSocket


3-35164
jim
2002-07-22 15:14
2002.08.12
ApplyUpdates в ClientDataSet


6-35399
adress
2002-05-30 18:47
2002.08.12
POSTDATA = ????????????????????????????????????? ЧТО ЭТО ТАКОЕ?


3-35225
werr
2002-07-19 11:02
2002.08.12
помогите сделать sql запрос


1-35242
Poirot
2002-07-30 21:10
2002.08.12
Перерисовка формы методами из компонента от TComponent





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский