powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Chromium запуск при открытии формы
12 сообщений из 12, страница 1 из 1
Chromium запуск при открытии формы
    #39970091
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу сделать так, чтобы при старте формы, загружался URL.
Проблема в том, что URL загружается как бы три раза. Точнее, событие OnAddressChange срабатывает 3 раза. Т.е. два лишних раза. Соответственно другие события тоже срабатывают два "лишних" раза.

Хотелось бы, чтобы страничка загружалась 1 раз и, соответственно, события тоже срабатывали по одному разу.
В частности, есть событие OnLoadingStateChange, которое срабатывает 2 раза вместо одного.
Т.е. в событии есть
if not isLoading then - и это срабатывает 2 раза. А нужно, чтобы один раз.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
procedure CefOpenUrl2(const url: string);
begin

  if not Assigned(fmBrowser2) then
    fmBrowser2 := TfmBrowser2.Create(Application);

  //fmBrowser2.Chromium2.DefaultURL := url;
  //fmBrowser2.Memo1.Lines.Add('fmBrowser2.Chromium2.DefaultURL = ' + url);
  fmBrowser2.edUrl.Text := url;
  fmBrowser2.Show;

  if fmBrowser2.Chromium2.Initialized then
  begin
    fmBrowser2.Chromium2.LoadURL(url);
    fmBrowser2.Memo1.Lines.Add('Initialized, URL = ' + url);
  end
  else
  begin

    fmBrowser2.Chromium2.CreateBrowser(fmBrowser2.CEFWindowParent1);
    Sleep(500);
    Application.ProcessMessages;
    fmBrowser2.Chromium2.LoadURL(url);
    fmBrowser2.Memo1.Lines.Add('not Initialized, URL = ' + url);
  end;

end;


procedure TfmBrowser2.Chromium2AddressChange(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
begin
  edUrl.Text := url;
  Memo1.Lines.Add('AddressChange: ' + url);
end;



в такой лог выводится в мемо:

авторnot Initialized, URL = https://www.......
AddressChange: about:blank
AddressChange: https://www......
AddressChange: https://www......
AddressChange: https://www......
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970092
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделать переменную, в первый взводить ее, а потом проверять - не?
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970094
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
костыль?
по идее ж не должно так работать?

Я про то, что может это я что-то делаю не так?
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970097
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Хочу сделать так, чтобы при старте формы, загружался URL.
Проблема в том, что URL загружается как бы три раза. Точнее, событие OnAddressChange срабатывает 3 раза. Т.е. два лишних раза. Соответственно другие события тоже срабатывают два "лишних" раза.

Хотелось бы, чтобы страничка загружалась 1 раз и, соответственно, события тоже срабатывали по одному разу.
В частности, есть событие OnLoadingStateChange, которое срабатывает 2 раза вместо одного.
Т.е. в событии есть
if not isLoading then - и это срабатывает 2 раза. А нужно, чтобы один раз.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
procedure CefOpenUrl2(const url: string);
begin

  if not Assigned(fmBrowser2) then
    fmBrowser2 := TfmBrowser2.Create(Application);

  //fmBrowser2.Chromium2.DefaultURL := url;
  //fmBrowser2.Memo1.Lines.Add('fmBrowser2.Chromium2.DefaultURL = ' + url);
  fmBrowser2.edUrl.Text := url;
  fmBrowser2.Show;

  if fmBrowser2.Chromium2.Initialized then
  begin
    fmBrowser2.Chromium2.LoadURL(url);
    fmBrowser2.Memo1.Lines.Add('Initialized, URL = ' + url);
  end
  else
  begin

    fmBrowser2.Chromium2.CreateBrowser(fmBrowser2.CEFWindowParent1);
    Sleep(500);
    Application.ProcessMessages;
    fmBrowser2.Chromium2.LoadURL(url);
    fmBrowser2.Memo1.Lines.Add('not Initialized, URL = ' + url);
  end;

end;


procedure TfmBrowser2.Chromium2AddressChange(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
begin
  edUrl.Text := url;
  Memo1.Lines.Add('AddressChange: ' + url);
end;



в такой лог выводится в мемо:

авторnot Initialized, URL = https://www.......
AddressChange: about:blank
AddressChange: https://www......
AddressChange: https://www......
AddressChange: https://www......
if fmBrowser2.Tag = 0 then... else...
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970102
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
костыль?
по идее ж не должно так работать?

Я про то, что может это я что-то делаю не так?
А на какие события повешены CefOpenUrl2 ?
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970105
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на кнопку на основной форме приложения
Есть таблица с URL и рядом кнопка
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970106
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
на кнопку на основной форме приложения
Есть таблица с URL и рядом кнопка
Не очень согласуется с желанием
авторХочу сделать так, чтобы при старте формы , загружался URL.
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970107
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenko,
что именно не понятно?

Есть 2 формы: одна с таблицей URL и кнопкой, другая - с браузером.
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970108
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Gerasimenko,
что именно не понятно?

Есть 2 формы: одна с таблицей URL и кнопкой, другая - с браузером.
не понят, в какой момент происходит первый вызов. По нажатию кнопки или все же при "старте формы"
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970112
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по нажатию кнопки вызывается процедура

CefOpenUrl2(....);
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970116
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
по нажатию кнопки вызывается процедура

CefOpenUrl2(....);
Теперь понятно:
1) есть форма 1: в ней табличка адресов и кнопка.
2) по нажатию кнопки создаётся fmBrowser2
3) в fmBrowser2 загружается URL из таблички с первой формы.
...
Рейтинг: 0 / 0
Chromium запуск при открытии формы
    #39970118
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.
Извиняюсь, что сразу не описал более подробно.

Добавлю, что в событиях OnCreate/onShow формы fmBrowser2 нет кода для старта загрузки URL.

Ещё добавлю, что на fmBrowser2 есть TEdit, куда можно ввести URL и нажать кнопку Старт. При этом событие OnAddressChange тоже три раза срабатывает вместо одного раза.

Поясню ещё вот что.
В событии OnAddressChange есть строка (как видно из кода в первом сообщении)
edUrl.Text := url;
для того, чтобы в edUrl менялся адрес, если пользователь ходит по ссылкам в браузере.

edUrl - это строка адреса браузера
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Chromium запуск при открытии формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]