본문 바로가기

프로그래밍/Chromium(CEF4Delphi)

[Chromium] CEF4Delphi - Context Menu추가 구현하기

1. 개요

크롬 웹브라우저를 임베딩(Embedding) 시킨 상태에서 웹브라우저의 팝업메뉴(Context Menu)에 사용자 정의 메뉴 항목을 추가하고 구현해 보자.

2. Context 메뉴 ID 정의

unit uCEFConstants 에 기본정의된 사용자ID 상수로 부터 출발 하도록 하나.

const

    MENU_ID_USER_FIRST                 = 26500;

사용자 정의 Context ID

const

MENU_ID_MYFIRST_CONTEXT  = MENU_ID_USER_FIRST  + 1;

3. Context Menu 항목 추가

TChromium.OnBeforeContextMenu 이벤트 핸들러에서 항목 추가

procedure TForm1.Chromium1BeforeContextMenu(Sender: TObject;  
const browser: ICefBrowser; const frame: ICefFrame;  
const params: ICefContextMenuParams; const model: ICefMenuModel);  
begin  
// 여기에 메뉴 항목을 추가 한다.  
model.AddSeparator;  
model.AddItem(MENU_ID_MYFIRST_CONTEXT, 'Show "Hello"');  
end;

4. Context Menu 실행코드 등록

TChromium.OnContextMenuCommand 이벤트 핸들러에 작성

procedure TForm1.Chromium1ContextMenuCommand(Sender: TObject;
  const browser: ICefBrowser; const frame: ICefFrame;
  const params: ICefContextMenuParams; commandId: Integer;
  eventFlags: Cardinal; out Result: Boolean);
begin
  Result := False;

  case commandId of
    MENU_ID_MYFIRST_CONTEXT ://추가한 메뉴의 실행 코드를 등록한다
        begin
            ShowMessage('Hello');
        end;

  end;
end;