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

Вниз

может быть кто-нибудь сможет ответить.......   Найти похожие ветки 

 
Николай Быков ©   (2003-01-18 21:45) [0]

вот есть Browser типа TWebBrowser.
в него загружена страничка с фреймами (имя одного из них = main)
во фрейме main есть кнопка с именем combats.
Вопрос: Как сделать клик на ней?
Я писал:
Browser.OleDocument.document.frames["main"].forms[0].combats.click;
-
Browser.OleObject.document.frames["main"].combats.click;
-
еще были какие-то варианты + то же самое, но вместо "[" были "("


 
Ihor Osov'yak ©   (2003-01-18 22:50) [1]


Это (GetInput) немножко не то, о чем ты просишь - так, более общий случай - но на основании этого можешь сделать то, что тебе надо. Сия вещь рекурсивно проходится по всем фреймам, до встречи перврго инпут элемента с соотв. именем и возвращает на него интерфейс, для которого ты возовешь клик.




function fGetInputOneFrame(iDoc:IHtmlDocument2; addPrm:integer):boolean;

//(pDisp: IDispatch; const subStr:string):IHtmlElement;
var
ov:OleVariant;
iDisp: IDispatch;
iColl:IHTMLElementCollection;
iInp:IHTMLInputElement;
i:integer;
name:string;
begin
result := false;
if addPrm=0 then Exit;



if not assigned(iDoc) then Exit;
name := lowercase(pdataFor_fGetLinkOneFrame(addPrm)^.pStr^);
ov := "INPUT";

IDisp:=iDoc.all.tags(ov);
if not assigned(IDisp) then exit;

IDisp.QueryInterface(IHTMLElementCollection,iColl);
if not assigned(iColl) then exit;

for i:=1 to iColl.Get_length do begin
iDisp:=iColl.item(pred(i),0);
if not assigned(iDisp) then continue;
iDisp.QueryInterface(IHTMLInputElement,iInp);
if not assigned(iInp) then continue;
if (name= lowercase(iInp.Get_Name)) then begin
result := true;
pdataFor_fGetLinkOneFrame(addPrm)^.iElem := iInp as IHtmlElement;
Exit;
end;
end;

end;




function FinderFirstCondForHtmlDocWithFrames(iDoc:IHtmlDocument2;
addPrm:integer;
aDoer:TOneStepSearchCondForHtmlDocWithFrames):boolean;
{ The procedure aDoer will be caused for each IHtmlDocument2, beginning
from main and finishing any level of frames
while aDoer will return false;
}
var frames:IHTMLFramesCollection2;
i:integer;
ov1:OleVariant;
iDisp:IDispatch;
IWindow2:IHTMLWindow2;
begin
result := false;
if not assigned(aDoer) then Exit;
result:=aDoer(iDoc,addPrm);
if result then Exit;
frames:=iDoc.frames;
if not assigned(frames) then exit;
if frames.length=0 then exit;

for i:=1 to frames.length do begin
ov1:=i-1;
try
iDisp:=frames.item(ov1);
iDisp.QueryInterface(IHTMLWindow2,IWindow2);
if assigned(IWindow2)
then begin
result := false;
try
if assigned(IWindow2.document)
then
result := FinderFirstCondForHtmlDocWithFrames(IWindow2.document,addPrm,aDoer);
except
end;
if result then exit;
end;
except
{ ShowMessage("Find error !!!");}
end;
end;
end;



function GetInput(pDisp: IDispatch; const name:string):IHtmlElement;
var iDoc:IHtmlDocument2;
var data:dataFor_fGetLinkOneFrame;

begin
result := nil;

iDoc:=(pDisp as IWebBrowser2).Document as IHtmlDocument2;
if not assigned(iDoc) then Exit;

fillChar(data,sizeof(data),0);
data.pStr := @name;
if FinderFirstCondForHtmlDocWithFrames(iDoc,integer(@Data),fGetInputOneFrame)
then begin
result := data.iElem;
data.iElem := nil;
end;
data.pStr := nil;

end;


 
Николай Быков ©   (2003-01-18 22:50) [2]

up

P.S.
Это не по сетям вопрос


 
Ihor Osov'yak ©   (2003-01-18 22:54) [3]

2 Николай Быков © (18.01.03 22:50)

А ты внимательно описание рубрик почитай. Все, что связано с сетями. Интернет поже сеть.

А если о ловли рыбки спросить захочешь - то вероятно сюда тоже. Ибо рыбку сетями поже ловят :-)


 
Николай Быков ©   (2003-01-18 22:54) [4]


> Ihor Osov"yak © (18.01.03 22:50)

Поделитесь ссылочками на темы "IDispatch" "OleVariant" "Variant" "IHTMLDocument" "IHTMLElementCollection" "IHTMLInput" ?


 
Николай Быков ©   (2003-01-18 22:55) [5]


> Ihor Osov"yak © (18.01.03 22:54)

:)))


> Николай Быков © (18.01.03 22:54)

А еще на "^"


 
Ihor Osov'yak ©   (2003-01-18 22:57) [6]

msdn
можешь также для начала http://delphi.vitpc.com/mastering/tweb.htm


 
Николай Быков ©   (2003-01-18 23:01) [7]


> Ihor Osov"yak © (18.01.03 22:57)

MSDN у меня тоже есть вместе с MSVS.NET, только толку от нее мало для меня (он есть, но мало). ИМХО в MSDN очень сложно найти то, что мне вот сейчас надо. (до форума я смотрел в MSDN+Delphi Help+Спаровчник по JavaScript+Rambler)


сейчас статью пойду читать


 
M_a_x   (2003-01-18 23:49) [8]

WebBrowser1.OleObject.document.frames.item(0).document.all.combats.click()
Просто для того что-бы обраться к n-оиу фрейму нужно написать не frames[n], a frames.items(n).. Тоже самое: не documane.all(n), а document.all.items(n)

P.S. Кстати.. а что за программу ты пишешь? :)


 
Николай Быков ©   (2003-01-19 04:55) [9]


> M_a_x (18.01.03 23:49)

В прошлый раз, когда сказал, всем не понравилось (очень много было постов, которые "Удалено модератором")



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

Текущий архив: 2003.03.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
1-17156
Шишкин Илья
2003-02-23 13:23
2003.03.06
Как изменить курсоры мыши?


1-17091
Tim_gothic
2003-02-25 20:19
2003.03.06
Про хэлпы...


1-16997
jinn
2003-02-23 15:20
2003.03.06
нахождение нужной суммы в списке чисел


1-17144
leter
2003-02-23 02:10
2003.03.06
ScrollBox и RichEdit


4-17457
AlexandrRya
2003-01-15 22:56
2003.03.06
Выгрузка DLL