Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2011, 12:42   #1
==Spider==
 
Регистрация: 14.12.2007
Сообщений: 4
По умолчанию Submit в TWebBrowser1

Добрый день. Помогите пожалуйста нажать кнопку в ТWebBrowser.
вот HTML
Код HTML:
<input type=hidden name=submit1 value=1>
Пробую вот таким кодом:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  ovElements: OleVariant;
  i: Integer;
begin
  ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
  for i := 0 to (ovElements.Length - 1) do
    if (ovElements.item(i).type = 'hidden') and
      (ovElements.item(i).name = 'submit1') then
    begin
      ShowMessage('oy');
      ovElements.item(i).Click;
    end;
end;
Но ничего непроисходит точнее сообщение "оу" выскакивает но сама кнопка ненажимаеться. Как вариант не то пытаюсь нажать.
вот html код где я думаю нажимается кнопка
Код HTML:
<a class="knopa9" onClick="f.submit(); return  false;" title=""><span>ПОЛУЧИТЬ БОНУС</span></a>
помогите пожалуйста реализовать на дельфи
==Spider== вне форума Ответить с цитированием
Старый 23.08.2011, 13:30   #2
==Spider==
 
Регистрация: 14.12.2007
Сообщений: 4
По умолчанию

Поступил следующим образом
http://forums.avtograd.ru/index.php?...post&p=1672104
теперь кнопка нажимается вот так
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
 WebBrowser1.RunJS('f.submit()');
end;
Простите что создал тему перед тем как перелопатить похожие проблемы.
==Spider== вне форума Ответить с цитированием
Старый 24.08.2011, 07:34   #3
Terti
Пользователь
 
Регистрация: 21.08.2011
Сообщений: 24
По умолчанию

У меня ошибка возникает :
Undeclared identifier: 'RunJS'
Что может быть помогите
Terti вне форума Ответить с цитированием
Старый 24.08.2011, 10:37   #4
Terti
Пользователь
 
Регистрация: 21.08.2011
Сообщений: 24
По умолчанию

Код:
interface
uses
Windows, SysUtils, Classes, SHDocVw, MSHTML, OleCtrls;
type
  TWebBrowser2 = class(TWebBrowser);
  TWebBrowser = class (TWebBrowser2)
    procedure RunJS(js:string);
    function getElementATTR(tag,id,attr:string):string;
    function GetJsParam(param:string):string;
    function GetJsArrayStrList(param:string): TStringList;
  end;

implementation

{ TWebBrowser }

function TWebBrowser.getElementATTR(tag, id, attr: string): string;
var
  Doc: IHTMLDocument2;   Body: IHTMLElement2;   Tags: IHTMLElementCollection;   Tagg: IHTMLElement;   i: Integer;
begin
  Result:='';
  if not Supports(self.Document, IHTMLDocument2, Doc) then
    raise Exception.Create('Invalid HTML document');
  if not Supports(Doc.body, IHTMLElement2, Body) then
    raise Exception.Create('Can''t find <body> element');
  Tags := Body.getElementsByTagName(UpperCase(tag));
  for i := 0 to Pred(Tags.length) do begin
    Tagg:=Tags.item(i, EmptyParam) as IHTMLElement;
    if Tagg.id=id then Result := Tagg.getAttribute(attr, 0);
  end;
end;

function TWebBrowser.GetJsArrayStrList(param: string): TStringList;
var i,k:integer;
begin
  result:=TStringList.Create;
  if (GetJsParam('(('+param+'!=null)&&(typeof('+param+'
)==''object'')&&(typeof('+param+'.length)==''
number''))')='true') then begin
    k:=strtoint(GetJsParam(param+'.length'));
    for i := 0 to k - 1 do begin
      result.Add(GetJsParam(param+'['+inttostr(i)+']'));
    end;
  end;
end;

function TWebBrowser.GetJsParam(param: string): string;
begin
self.RunJS('var d=document.getElementById(''delphi_result'');'+
'if (!d) {'+
'd=document.createElement(''input'');'+
'd.type=''hidden'';'+
'd.id=''delphi_result'';'+
'document.body.appendChild(d);}'+
'd.value='+param+';');
result:=self.getElementATTR('input','delphi_result','value'
)
end;

procedure TWebBrowser.RunJS(js: string);
var
Doc: IHTMLDocument2;      // current HTML document
HTMLWindow: IHTMLWindow2; // parent window of current HTML document
begin
        Doc:=IHTMLDocument2(self.Document);
        if not Assigned(Doc) then Exit;
        HTMLWindow := Doc.parentWindow;
        if not Assigned(HTMLWindow) then Exit;
        try
        //JSFn := Format('foo("%s",%d)', [S, I]);  // build function call
                HTMLwindow.execScript(js, 'Javascript'); // execute function
        except
                //
        end;
end;


end.
выделяет эту строчку ,ошибка:
Unterminated string
что может быть?!

Последний раз редактировалось dr.Chas; 31.08.2011 в 00:11.
Terti вне форума Ответить с цитированием
Старый 24.08.2011, 11:47   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

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

кстати строковые константы нельзя разрывать переносом строк.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 24.08.2011 в 11:50.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.08.2011, 11:53   #6
Terti
Пользователь
 
Регистрация: 21.08.2011
Сообщений: 24
По умолчанию

Во всем разобрался просто тупонул!
Спасибо!
Terti вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
привязка ссылки к форме типа submit в html RobinVit Помощь студентам 3 12.02.2013 22:39
Submit на javascript (не хочет работать) Krasi JavaScript, Ajax 7 17.06.2010 14:02
Выдать сообщение по нажатию submit Небесный PHP 3 26.05.2010 19:38
Написать Submit Krasi HTML и CSS 2 25.03.2010 10:52
submit button w/o name - вопрос по http post web surfer HTML и CSS 2 20.02.2007 04:10