Главная страница
    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.006 c
3-60520
shubin
2002-07-30 11:44
2002.08.19
День добрый!


1-60555
Peroon
2002-08-07 16:16
2002.08.19
Программная очистка поля изображения


14-60835
kaif
2002-07-22 15:44
2002.08.19
Есть ли среди нас экстраординарные личности?


1-60560
GreatQuaker
2002-08-07 10:23
2002.08.19
Сетевой принтер


4-60894
Andrew_k
2002-06-14 09:51
2002.08.19
ICQ`s window





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