본문 바로가기

프로그래밍/Chromium(CEF4Delphi)

[Chromium] CEF4Delphi - 크롬브라우저 생성 절차

크롬 어플리케이션(CEFTCefApplication)을 초기화 하였으면 크롬 웹브라우저를 초기화

  TChromiumWindow 컴포넌트는 "TChromuim" 컴포넌트를 가진 컨테이너 컴포넌트 입니다. 예를 들어 TPanel 위에 TChromium 컴포넌트를 올려 놓은 것과 유사하다 할 수 있겠죠. 대신 컨테이너 역할 외에 TChromium 을 쉽게 다룰 수 있는 유용한 기능을 제공 합니다.

예제에서는 TChormium 컴포넌트 초기화시 실패를 감안하여 TTimer를 이용하는 방법을 제시 했습니다.

실패 하면 타이머를 재구동 하여 성공 할때까지 시도하는.... 아마도 실패하는 경우가 생기는가 봅니다. 경험상 실패하는 경우가 없다면 초기화 한 번으로 끝내버리도록 해도 될 것 같습니다.

1-1. 크롬 웹브라우저 초기화 부분

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  if not(ChromiumWindow1.CreateBrowser) and not(ChromiumWindow1.Initialized) then //초기화가 실패 했다면 재시도
    Timer1.Enabled := True;
end;

 

1-2. 크롬 웹브라우저가 생성(초기화) 되면 TChromiumWindow.OnAfterCreate 이벤트가 발생하는데 이 시점에서 부터 웹브라우징이 가능해 지며, 후속 처리가 가능해짐

procedure TForm1.ChromiumWindow1AfterCreated(Sender: TObject);
begin
  // 웹브라우저를 이용할 준비가 되었다.
  Caption            := 'Simple Browser';
  ChromiumWindow1.LoadURL('http://www.google.com'); //웹페이지 네비게이션 요청
end;

 

 

2. 일반 VCL 컨테이너와 TChromium 컴포넌트를 이용한 웹브라우저 생성

TChromium컴포넌트를 초기화 시키고 웹브라우저 컨테이너를 지정하여 사용

TChromium 컴포넌트는 NonVisual 컴포넌트이므로 VCL Form위에 올려 놓고 다음과 같이 초기화

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;

  if chrmosr.CreateBrowser(nil, '') then //크롬 웹브라우저를 직접 생성하는 부분
    chrmosr.InitializeDragAndDrop(Panel1) //생성후 TPanel 컴포넌트의 자식 컴포넌트로 등록
   else
    if not(chrmosr.Initialized) then Timer1.Enabled := True;
end;

TChromium컴포넌트의 OnAfterCreated 이벤트 핸들러에서

procedure TForm1.chrmosrAfterCreated(Sender: TObject);
begin
  // 웹브라우저를 이용할 준비가 되었다.
  Caption            := 'Simple Browser';
  chrmosr.LoadURL('http://www.google.com'); //웹페이지 네비게이션 요청
end;