CEF4Delphi for lazarus在gtk3可以输入中文:
2025-01-02:
CEF 131最新版本不用按以下方法修改就可以使用。
测试环境:
树莓派5(aarch64)
CEF4Delphi-104.0.5112.102
lazarus 4.0RC1 fpc 3.3.1
1)系统安装gtk3:
sudo apt install libgtk-3-dev
2)修改cef源码
打开uCEFLinuxFunctions.pas
将 Gdk3_library改为ibgtk-3.so.0(红色代码部分)
function gdk_screen_width:gint; cdecl; external 'libgdk-3.so'; function gdk_screen_width_mm:gint; cdecl; external 'libgdk-3.so'; function gdk_screen_get_default:PGdkScreen; cdecl; external 'libgdk-3.so'; function gdk_screen_get_resolution(screen:PGdkScreen):gdouble; cdecl; external 'libgdk-3.so'; {$ENDIF} {$IFDEF FPC} {$IFDEF LCLGTK3} function gdk_x11_window_get_xid(window: PGdkWindow): TWindow; cdecl; external 'libgtk-3.so.0'; function gdk_x11_get_default_xdisplay: PDisplay; cdecl; external 'libgtk-3.so.0'; procedure gdk_set_allowed_backends(const backends: PGchar); cdecl; external 'libgtk-3.so.0'; {$ENDIF} procedure ShowX11Message(const aMessage : string); {$ENDIF}{$ENDIF} implementation uses {$IFDEF DELPHI16_UP} System.SysUtils,
找到GetCefStateModifiers,按下面代码修改:
function GetCefStateModifiers(state : uint32) : integer; begin Result := EVENTFLAG_NONE; if ((uint32(state) and uint32(GDK_SHIFT_MASK)) <> 0) then Result := Result or EVENTFLAG_SHIFT_DOWN; if ((uint32(state) and uint32(GDK_LOCK_MASK)) <> 0) then Result := Result or EVENTFLAG_CAPS_LOCK_ON; if ((uint32(state) and uint32(GDK_CONTROL_MASK)) <> 0) then Result := Result or EVENTFLAG_CONTROL_DOWN; if ((uint32(state) and uint32(GDK_MOD1_MASK)) <> 0) then Result := Result or EVENTFLAG_ALT_DOWN; if ((uint32(state) and uint32(GDK_BUTTON1_MASK)) <> 0) then Result := Result or EVENTFLAG_LEFT_MOUSE_BUTTON; if ((uint32(state) and uint32(GDK_BUTTON2_MASK)) <> 0) then Result := Result or EVENTFLAG_MIDDLE_MOUSE_BUTTON; if ((uint32(state) and uint32(GDK_BUTTON3_MASK)) <> 0) then Result := Result or EVENTFLAG_RIGHT_MOUSE_BUTTON; end;
重新编译cef4delphi_lazarus.lpk
3)设置CEF应用为GTK3
然后重新编译CEF应用就可以。
这篇博客就是用CEF4Delphi自带的demo--TinyBrowser2编辑的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~