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

Вниз

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

 
Николай Быков   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
7-17417
Suroga
2003-01-09 11:35
2003.03.06
Сигналы RTS / DTR


4-17462
xGrey
2003-01-17 11:51
2003.03.06
CreateProcess и “DOS архиватор”.


1-17026
Ravshan
2003-02-25 10:03
2003.03.06
как можно заставить combobox реагировать на OnMouseDown и т.д.


3-16909
nkrainev
2003-02-14 22:05
2003.03.06
Повтор вопроса - как выполнить запросы без ошибок?


8-17212
GROL
2002-11-20 16:29
2003.03.06
Изменение изображения на экране





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