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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2009, 15:44   #1
Verst
Пользователь
 
Аватар для Verst
 
Регистрация: 22.11.2009
Сообщений: 12
По умолчанию Проверка наличия элемента в Webbrowser

Доброго времени суток!
В программе есть таймер, который через заданное время обращается к элементу на странице. Но страница (с тем что запращивается) в программе открыта не всегда, т.е. нужно получать его только когда он вообще существует.
Код:
WebBrowser1.OleObject.Document.Frames.Item(3).Frames.Item(0).Document
Вот какой элемент нужно получить. при запуске программы, она естественно его не находит и вылетает ошибка. Можно сделать по определению адреса сайта, но бывает и там вылетает ошибка о недоступности элемента.
Вопрос: как узнать есть ли на странице нужный мне элемент или нету и соответственно выполнять дальше программу или пропустить.
У тебя нет права судить человека до тех пор, пока ты не сможешь сделать то же, что он, лучше, чем он.

Последний раз редактировалось mihali4; 28.11.2009 в 16:32.
Verst вне форума Ответить с цитированием
Старый 29.11.2009, 13:21   #2
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Verst, зачем тебе засовывать этот код в таймер?

Пропиши вот так:

Код:
procedure TfrmMyBrowser.WebBrowser1DocumentComplete(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
var
  CurrentWB: TWebbrowser;
begin
  CurrentWB := TWebbrowser(PageControl.ActivePage.Controls[0]);
  CurrentWB .OleObject.Document.Frames.Item(3).Frames.Item(0).Document;
end;
Т.е. эта процедура будет выполнятся каждый раз когда будет загружена страница в веббраузер, причем если вместо Webbrowser1 написать CurrentWB эта процедура будет выполняться для каждой страницы PageControl'а
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 29.11.2009, 16:12   #3
Verst
Пользователь
 
Аватар для Verst
 
Регистрация: 22.11.2009
Сообщений: 12
По умолчанию

Marsel737, потому что мне надо получать лог чата, а чат находиться во фрейме.
И к тому же, твой вариант не решает проблему есть элемент на странице или нету, если его не будет, то выдаст ошибку.
У тебя нет права судить человека до тех пор, пока ты не сможешь сделать то же, что он, лучше, чем он.
Verst вне форума Ответить с цитированием
Старый 29.11.2009, 16:41   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

И еще раз -
try..except
Ошибка будет выдаваться при запуске из-под Дельфи, и это - естественно...
А вот если вы просто экзешник запустите, то все будет ок.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
try
WebBrowser1.OleObject.Document.Frames.Item(3).Frames.Item(0).Document;
ShowMessage('Good');
except
ShowMessage('Bad');
end;
end;
mihali4 вне форума Ответить с цитированием
Старый 29.11.2009, 16:49   #5
Verst
Пользователь
 
Аватар для Verst
 
Регистрация: 22.11.2009
Сообщений: 12
По умолчанию

mihali4, Спасибо огромное что объяснили
А при запуске из-под Дельфи можно как то выключить выводимые ошибки?
У тебя нет права судить человека до тех пор, пока ты не сможешь сделать то же, что он, лучше, чем он.

Последний раз редактировалось Verst; 29.11.2009 в 16:51.
Verst вне форума Ответить с цитированием
Старый 29.11.2009, 16:55   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да.
Меню->Tools->Debugger Options->снять птицу с Integrated debugging (внизу слева)
mihali4 вне форума Ответить с цитированием
Старый 29.11.2009, 16:56   #7
Verst
Пользователь
 
Аватар для Verst
 
Регистрация: 22.11.2009
Сообщений: 12
По умолчанию

mihali4, еще раз огромное спасибо
У тебя нет права судить человека до тех пор, пока ты не сможешь сделать то же, что он, лучше, чем он.
Verst вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка наличия записи в таблице MargoNik БД в Delphi 2 08.07.2009 06:20
проверка наличия файла Juffin Общие вопросы Delphi 2 18.04.2009 14:17
Проверка наличия файла russian-stalker Общие вопросы Delphi 4 31.08.2008 19:27
Проверка наличия директории SANIOK_AV Общие вопросы Delphi 2 16.01.2008 11:05