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

Вниз

Заполнение формы   Найти похожие ветки 

 
BlackSun   (2002-07-28 16:33) [0]

Заполняю форму следующим образом, все работает, но хотелось бы это же самое проделать на страничке со фреймами, как бы это сделать, где указать, в каком фрейме работать?
procedure TForm1.Button1Click(Sender: TObject);
var
iDoc:IHtmlDocument2;
i:integer;
ov:OleVariant;
iDisp: IDispatch;
iElement:IHTMLElement;
iColl:IHTMLElementCollection;
iInputElement:IHTMLInputElement;
iEl:IHTMLElement;
s:string;
begin
ov:="INPUT";
WB.ControlInterface.Document.QueryInterface(IHtmlDocument2,iDoc);
IDisp:=iDoc.all.tags(ov);
if assigned(IDisp) then begin
IDisp.QueryInterface(IHTMLElementCollection,iColl);
if assigned(iColl) then begin
for i:=1 to iColl.Get_length do begin
iDisp:=iColl.item(pred(i),0);
iDisp.QueryInterface(IHTMLInputElement,iInputElement);
if assigned(iInputElement) then begin
memo1.lines.add(iinputelement.get_name);
if iInputElement.Get_name="login"
then iInputElement.Set_value("MyLogin");
if iInputElement.Get_name="pwd"
then iInputElement.Set_value("MyPassword");
if iInputElement.Get_name="submit"
then begin
iInputElement.QueryInterface(IHtmlElement,iEl);
iEl.click;
end;
end;
end;
end;
end;


end;


 
BlackSun   (2002-07-29 08:43) [1]

Мастера, неужто никто не поможет?


 
int64   (2002-07-29 14:48) [2]

Вот функция:

function GetFrame(WB: IWebbrowser2; FrameName: string): IWebbrowser2;
var
OleContainer: IOleContainer;
enum: IEnumUnknown;
TempUnk: IUnknown;
Fetched: PLongint;
FrameNo: integer;
Coll: HTMLElementCollection;
begin
With WB do
begin
while ReadyState <> READYSTATE_COMPLETE do
Forms.Application.ProcessMessages;
if Assigned(document) then
begin
Coll:=HTMLElementCollection(HTMLDocument(Document).All.Tags("FRAME"));
for FrameNo:=0 to Coll.length-1 do
if HTMLFrameElement(Coll.item(FrameNo,varEmpty)).name=FrameName then break;
Fetched := nil;
OleContainer := Document as IOleContainer;
OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum);
Enum.Skip(FrameNo);
Enum.Next(1, TempUnk, Fetched);
Result := TempUnk as IWebbrowser2;
end else Result := nil;
end;
end;


Функция ищет фреймы по их имени. Если усложнить, будет искать во вложенных фреймах (через рекурсию). Если упростить, будет искать по номеру фрейма.

Всё, что тебе нужно, заменить строчку:
WB.ControlInterface.Document.QueryInterface(IHtmlDocument2,iDoc);
На:
GetFrame(WB.ControlInterface, "MyNameFrame").Document.QueryInterface(IHtmlDocument2,iDoc);


 
BlackSun   (2002-07-30 20:43) [3]

Спасибо тебе, int64. Все работает!


 
ga3   (2002-08-03 03:28) [4]

а у меня ни фига не работает пишет "Undeclared identifier: IOLEContainer"
чо делать, мастер? может быть, тебя не затруднит запостить готовый кусок кода? может, это из-за того, что у меня Д6??? блин, замучился вконетс, а сделать надо через 2 недели. помоги, плиз, а то совсем плохо


 
ga3   (2002-08-03 03:29) [5]

да, еще пишет что метод EnumObjects неприменим пачимуто...


 
demona   (2002-08-05 18:40) [6]

Хм.. помоему Platform SDK надо подключить



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

Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
1-60578
anod
2002-08-07 00:40
2002.08.19
Скин


4-60919
_toltec
2002-06-12 04:10
2002.08.19
Как зная хендл окна убить его?


14-60815
Вадим
2002-07-18 21:39
2002.08.19
HTML редактор


4-60913
ga3
2002-06-15 01:12
2002.08.19
переменные окружения


3-60504
Александр Спелицин
2002-07-29 19:17
2002.08.19
Манипулящии в RunTime и DesignTime.





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