Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
Здравствуйте!
Подскажите, пожалуйста, как открыть сайт в cef4delphi TChromium?

Кинул на форму TChromium1 и ChromiumWindow1, дальше что нужно сделать?
19 фев 21, 20:57    [22283777]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Softologic
Member

Откуда: Питер
Сообщений: 244
"Наша песня хороша, начинай сначала"

Женя32, стопиццот раз уже рассказывали ведь... и советы давали и ссылки. Так и не сдвинулось ничего в освоении cef4delphi ???
19 фев 21, 21:33    [22283800]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
Softologic
"Наша песня хороша, начинай сначала"

Женя32, стопиццот раз уже рассказывали ведь... и советы давали и ссылки. Так и не сдвинулось ничего в освоении cef4delphi ???


Не получается..... Я логику не пойму... В старой версии кинул компонент TChromium на форму, прописал Chromium1.load('ya.ru'), ВСЕ!!! Страница загружена! А тут...... Что нужно сделать...., не понятно.
19 фев 21, 21:44    [22283807]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Softologic
Member

Откуда: Питер
Сообщений: 244
Я самолично вам писал - есть примеры, они в папке с библиотекой. Достаточно открыть самый простой пример и попробовать понять. Все.

Вместо того чтобы внять моему (и многих других) совету, вы продолжаете плодить одну и ту же тему раз в полгода. С одним и тем же вопросом.
19 фев 21, 22:35    [22283829]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
Softologic
Я самолично вам писал - есть примеры, они в папке с библиотекой. Достаточно открыть самый простой пример и попробовать понять. Все.

Вместо того чтобы внять моему (и многих других) совету, вы продолжаете плодить одну и ту же тему раз в полгода. С одним и тем же вопросом.

Посмотрите, пожалуйста, что я ни так делаю?... https://disk.yandex.ru/d/0KtvK9zOiHQNbg
20 фев 21, 14:00    [22284066]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
zedxxx
Member

Откуда:
Сообщений: 69
Женя32
Кинул на форму TChromium1 и ChromiumWindow1, дальше что нужно сделать?


Вот что: https://www.briskbard.com/index.php?lang=en&pageid=cef#usage

Вам ещё надо dpr правильно написать, ну и не забыть распаковать бинарники и ресурсы фреймворка в папку с вашим exe.

Демка с подробными комментариями: https://github.com/salvadordf/CEF4Delphi/tree/master/demos/Delphi_VCL/SimpleBrowser
20 фев 21, 15:50    [22284128]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 15029
С компонентой поставляются примеры. Посмотри, как там реализовано.
20 фев 21, 19:12    [22284213]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
X11
С компонентой поставляются примеры. Посмотри, как там реализовано.

// Если браузер еще не инициализирован, мы используем простой таймер для создания браузера позже.
if not(ChromiumWindow1.CreateBrowser) then Timer1.Enabled := True;
Я все делаю как в примере SimpleBrowser, но реакции ноль!

1). Помещаю на форму компонент ChromiumWindow1
2).
procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
// Если он еще не инициализирован, мы используем простой таймер для создания браузера позже.
  if not(ChromiumWindow1.CreateBrowser) then Timer1.Enabled := True;
end;

3).
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  if not(ChromiumWindow1.CreateBrowser) and not(ChromiumWindow1.Initialized) then
  Timer1.Enabled := True;
end;

4).
procedure TForm1.ChromiumWindow1AfterCreated(Sender: TObject);
begin
  ChromiumWindow1.LoadURL('ya.ru');
end;



Код полностью:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, uCEFWinControl, uCEFChromiumWindow, Vcl.ComCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Panel2: TPanel;
    Panel3: TPanel;
    ChromiumWindow1: TChromiumWindow;
    Timer1: TTimer;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
    procedure ChromiumWindow1Close(Sender: TObject);
    procedure ChromiumWindow1AfterCreated(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure ChromiumWindow1BeforeClose(Sender: TObject);
  private
    { Private declarations }
  protected
      // Переменные для контроля когда мы можем безопасно уничтожить форму
    FCanClose : boolean;  // Установите значение True в Chromium.OnBeforeClose
    FClosing  : boolean;  // Установите значение True в событии CloseQuery.
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  uCEFApplication;

procedure TForm1.ChromiumWindow1AfterCreated(Sender: TObject);
begin
  ChromiumWindow1.LoadURL('ya.ru');
end;

procedure TForm1.ChromiumWindow1BeforeClose(Sender: TObject);
begin
  FCanClose := True;
  PostMessage(Handle, WM_CLOSE, 0, 0);
end;

procedure TForm1.ChromiumWindow1Close(Sender: TObject);
begin
  // Destroy Child Window уничтожит дочернее окно, созданное шеф-поваром в верхней части Z-порядка.
  if not(ChromiumWindow1.DestroyChildWindow) then
    begin
      FCanClose := True;
      PostMessage(Handle, WM_CLOSE, 0, 0);
    end;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := FCanClose;

  if not(FClosing) then
    begin
      FClosing := True;
      Visible  := False;
      ChromiumWindow1.CloseBrowser(True);
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FCanClose := False;
  FClosing  := False;
end;

procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
  // GlobalCEFApp.Global Context Initialized должен быть истинным перед созданием любого браузера
  // Если он еще не инициализирован, мы используем простой таймер для создания браузера позже.
  if not(ChromiumWindow1.CreateBrowser) then Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  if not(ChromiumWindow1.CreateBrowser) and not(ChromiumWindow1.Initialized) then
  Timer1.Enabled := True;
end;

end.


Сообщение было отредактировано: 21 фев 21, 13:55
21 фев 21, 13:59    [22284395]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52445

Женя32
все делаю как в примере SimpleBrowser

В каком месте примера ты нашёл вызов LoadURL в событии AfterCreate?
В каком месте примера ты нашёл инициализацию в событии ShortCut?
В каком месте примера ты нашёл вызовы PostMessage(WM_CLOSE)?

Posted via ActualForum NNTP Server 1.5

21 фев 21, 14:14    [22284399]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Softologic
Member

Откуда: Питер
Сообщений: 244
Сдается мне, реакции ноль (в изначальном примере simplebrowser) еще и потому что бинарники не были распакованы в нужное место и не инициализируются. Женя, читайте внимательно ссылки, которые вам предоставляют. Там все расписано, где и какие библиотеки брать и куда распаковывать.

Сообщение было отредактировано: 21 фев 21, 18:51
21 фев 21, 18:56    [22284496]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Softologic
Member

Откуда: Питер
Сообщений: 244
https://www.briskbard.com/index.php?lang=en&pageid=cef#usage

К сообщению приложен файл. Размер - 26Kb


Сообщение было отредактировано: 21 фев 21, 18:53
21 фев 21, 19:00    [22284498]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
Softologic
Сдается мне, реакции ноль (в изначальном примере simplebrowser) еще и потому что бинарники не были распакованы в нужное место и не инициализируются. Женя, читайте внимательно ссылки, которые вам предоставляют. Там все расписано, где и какие библиотеки брать и куда распаковывать.

Да причем здесь бинарники? Если бы бинарников не было, тогда демо-проекты не запускались бы, и выходила бы ошибка:

К сообщению приложен файл. Размер - 17Kb
22 фев 21, 13:36    [22284726]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Softologic
Member

Откуда: Питер
Сообщений: 244
Женя32
Softologic
Сдается мне, реакции ноль (в изначальном примере simplebrowser) еще и потому что бинарники не были распакованы в нужное место и не инициализируются. Женя, читайте внимательно ссылки, которые вам предоставляют. Там все расписано, где и какие библиотеки брать и куда распаковывать.

Да причем здесь бинарники? Если бы бинарников не было, тогда демо-проекты не запускались бы, и выходила бы ошибка:

Картинка с другого сайта.

Так если демо-пример самый простой запускается, в чем проблема тогда? Вставляйте туда ваш "ya.ru" и вперед.
22 фев 21, 15:19    [22284767]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
Softologic

Так если демо-пример самый простой запускается, в чем проблема тогда? Вставляйте туда ваш "ya.ru" и вперед.

Да, можно и так... Но, мне хотелось бы понять, как создавать проекты с нуля?
22 фев 21, 16:03    [22284785]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52445

Женя32
Но, мне хотелось бы понять, как создавать проекты с нуля?

В случае с Дельфи это просто: достаточно размещать правильный код в обработчиках
правильных событий. Копи-пасту правильного кода ты уже освоил, теперь изучай когда, в
какой последовательности и при каких обстоятельствах вызываются события чтобы научиться
выбирать то правильное, в обработчике которого и надо писать код.

Posted via ActualForum NNTP Server 1.5

22 фев 21, 16:06    [22284786]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Softologic
Member

Откуда: Питер
Сообщений: 244
Женя32
Softologic

Так если демо-пример самый простой запускается, в чем проблема тогда? Вставляйте туда ваш "ya.ru" и вперед.

Да, можно и так... Но, мне хотелось бы понять, как создавать проекты с нуля?

Тут помогут более простые примеры. Их туча в интернете - например есть книги с примерами-исходниками, где пошагово с самых азов объясняется старт.
Cef4Delphi - фреймворк не из простых (для новичков), там есть нюансы, которые вам пока рано еще осваивать (на мой взгляд). Начните с самых простых основ, но применительно к конкретным задачам (чтобы мотивация посильнее была:))

Сообщение было отредактировано: 22 фев 21, 16:55
22 фев 21, 17:01    [22284800]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
Dimitry Sibiryakov

В случае с Дельфи это просто: достаточно размещать правильный код в обработчиках
правильных событий. Копи-пасту правильного кода ты уже освоил, теперь изучай когда, в
какой последовательности и при каких обстоятельствах вызываются события чтобы научиться
выбирать то правильное, в обработчике которого и надо писать код.


Приведу 2 примера, в чем отличие? 1). Код, максимально урезанного SimpleBrowser, ВСЕ РАБОТАЕТ:
unit uSimpleBrowser;

interface

uses
  {$IFDEF DELPHI16_UP}
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls,
  {$ELSE}
  Windows, Messages, SysUtils, Variants, Classes,
  Controls, Forms, Dialogs, StdCtrls,
  {$ENDIF}
  uCEFChromiumWindow, uCEFWinControl, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    ChromiumWindow1: TChromiumWindow;
    AddressPnl: TPanel;
    AddressEdt: TEdit;
    GoBtn: TButton;
    Timer1: TTimer;

    procedure Timer1Timer(Sender: TObject);

    procedure FormShow(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);

    procedure ChromiumWindow1AfterCreated(Sender: TObject);
    procedure ChromiumWindow1Close(Sender: TObject);

  private

  protected
    // Variables to control when can we destroy the form safely
    // Переменные для контроля когда мы можем безопасно уничтожить форму
    FCanClose : boolean;  // Set to True in TChromium.OnBeforeClose / Установите значение True в Chromium.OnBeforeClose
    FClosing  : boolean;  // Set to True in the CloseQuery event / Установите значение True в событии CloseQuery.

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := FCanClose;

  if not(FClosing) then
    begin
      FClosing := True;
      Visible  := False;
      ChromiumWindow1.CloseBrowser(True);
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FCanClose := False;
  FClosing  := False;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  // GlobalCEFApp.Global Context Initialized должен быть истинным перед созданием любого браузера
  // Если он еще не инициализирован, мы используем простой таймер для создания браузера позже.
  if not(ChromiumWindow1.CreateBrowser) then Timer1.Enabled := True;
end;

procedure TForm1.ChromiumWindow1Close(Sender: TObject);
begin
  // DestroyChildWindow will destroy the child window created by CEF at the top of the Z order.
  // Destroy Child Window уничтожит дочернее окно, созданное шеф-поваром в верхней части Z-порядка.
  if not(ChromiumWindow1.DestroyChildWindow) then
    begin
      FCanClose := True;
      PostMessage(Handle, WM_CLOSE, 0, 0);
    end;
end;

procedure TForm1.ChromiumWindow1AfterCreated(Sender: TObject);
begin
  ChromiumWindow1.LoadURL('http://www.google.com');
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  if not(ChromiumWindow1.CreateBrowser) and not(ChromiumWindow1.Initialized) then
    Timer1.Enabled := True;
end;

end.

Код моего проект, сайт не грузится:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uCEFWinControl, uCEFChromiumWindow,
  Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    ChromiumWindow1: TChromiumWindow;
    Timer1: TTimer;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ChromiumWindow1AfterCreated(Sender: TObject);
    procedure ChromiumWindow1Close(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  protected
    // Variables to control when can we destroy the form safely
    // Переменные для контроля когда мы можем безопасно уничтожить форму
    FCanClose : boolean;  // Set to True in TChromium.OnBeforeClose / Установите значение True в Chromium.OnBeforeClose
    FClosing  : boolean;  // Set to True in the CloseQuery event / Установите значение True в событии CloseQuery.

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ChromiumWindow1AfterCreated(Sender: TObject);
begin
  ChromiumWindow1.LoadURL('http://www.google.com');
end;

procedure TForm1.ChromiumWindow1Close(Sender: TObject);
begin
  // Destroy Child Window уничтожит дочернее окно, созданное шеф-поваром в верхней части Z-порядка.
  if not(ChromiumWindow1.DestroyChildWindow) then
    begin
      FCanClose := True;
      PostMessage(Handle, WM_CLOSE, 0, 0);
    end;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := FCanClose;

  if not(FClosing) then
    begin
      FClosing := True;
      Visible  := False;
      ChromiumWindow1.CloseBrowser(True);
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FCanClose := False;
  FClosing  := False;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  // GlobalCEFApp.Global Context Initialized должен быть истинным перед созданием любого браузера
  // Если он еще не инициализирован, мы используем простой таймер для создания браузера позже.
  if not(ChromiumWindow1.CreateBrowser) then Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  if not(ChromiumWindow1.CreateBrowser) and not(ChromiumWindow1.Initialized) then
    Timer1.Enabled := True;
end;

end.
22 фев 21, 17:10    [22284803]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52445

Женя32
Приведу 2 примера, в чем отличие?

Вангую: обработчики событий недостаточно скопипастить, их ещё надо привязать к
соответствующим событиям (свойствам компонент).

Posted via ActualForum NNTP Server 1.5

22 фев 21, 17:17    [22284806]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
Скажите, пожалуйста, кто-нибудь пробовал создавать подобный проект с нуля? Просто интересно, получилось или нет.....
22 фев 21, 17:20    [22284808]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
DHDD
Member

Откуда:
Сообщений: 47
Женя32,

Два проекта на CEF4:
1. Chromium 85, создавался с нуля.
2. Chromium 87, переносился с CEF3 (а ранее с CEF1).
Проблем нет.
22 фев 21, 17:26    [22284813]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
zedxxx
Member

Откуда:
Сообщений: 69
Женя32,
Я уже говорил про dpr файл, что у вас там в проекте, который не работает?
22 фев 21, 17:30    [22284815]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
Dimitry Sibiryakov

Вангую: обработчики событий недостаточно скопипастить, их ещё надо привязать к
соответствующим событиям (свойствам компонент).

Понятное дело, что сами процедуры не копируются, а только то, что находится в теле процедуры, между begin и end; Двойной щелчок по соответствующему событию, потом вставляю тело процедуры.
22 фев 21, 17:36    [22284818]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
zedxxx
Женя32,
Я уже говорил про dpr файл, что у вас там в проекте, который не работает?


Проект запускается, но сайт не грузится.......
22 фев 21, 17:40    [22284820]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
DHDD
Женя32,

Два проекта на CEF4:
1. Chromium 85, создавался с нуля.
2. Chromium 87, переносился с CEF3 (а ранее с CEF1).
Проблем нет.


А, можете пошагово рассказать, самый минимум, что нужно сделать, чтоб только сайт открыть?
22 фев 21, 17:48    [22284825]     Ответить | Цитировать Сообщить модератору
 Re: cef4delphi TChromium. Как загрузить сайт?  [new]
Женя32
Member

Откуда:
Сообщений: 170
Вот здесь все просто, Chromium1.load('google.com'); и все, страница загружена!:
22 фев 21, 17:58    [22284828]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить