我在使用TChromium(DCEF1)的OnLoadEnd事件时遇到问题.
我有一个带有TButton和TChromium的表格.
按钮的OnClick事件调用一个函数,该函数列出已加载页面的形式.如果我等待页面完成加载然后单击按钮,此功能正常; 但是如果我从TChromium OnLoadEnd事件处理程序调用此函数,则永远不会调用回调函数,因此,我得到一个空列表.
按钮代码(将注释读入代码):
procedure TForm2.Button3Click(Sender: TObject);
var
Q: TWebChromium;
begin
Q := TWebChromium.Create(Chromium1); // <- class to access DOM
Q.WebFormNames; // <- method to get forms name
ShowMessage(Q.Forms.Text); // <- show forms
end;
Run Code Online (Sandbox Code Playgroud)
OnLoadEnd代码:
procedure TForm2.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
if (browser <> nil) and (browser.GetWindowHandle = TChromium(Sender).BrowserHandle) and ((frame = nil) or (frame.IsMain)) then
begin
Button3Click(nil);
end;
end;
Run Code Online (Sandbox Code Playgroud)
获取表单名称的方法代码(将注释读入代码):
procedure TWebChromium.WebFormNames;
var
Finish: Boolean;
EndTime: TTime;
begin …
Run Code Online (Sandbox Code Playgroud) 我尝试获取所有加载页面形式的名称.我这样做了:
procedure TForm2.Button2Click(Sender: TObject);
var
L: TStringList;
begin
L := TStringList.Create;
try
Chromium1.Browser.MainFrame.VisitDomProc(
procedure (const doc: ICefDomDocument)
procedure IterateNodes(Node: ICefDomNode);
begin
if not Assigned(Node) then Exit;
repeat
if Node.ElementTagName = 'FORM' then
L.Add(Node.GetElementAttribute('name'));
if Node.HasChildren then IterateNodes(Node.FirstChild);
Node := Node.NextSibling;
until not Assigned(Node);
end;
begin
IterateNodes(doc.Body);
end
);
ShowMessage(L.Text);
finally
FreeAndNil(L);
end;
end;
Run Code Online (Sandbox Code Playgroud)
但我没有任何结果.任何的想法?
谢谢
我正在做一些组件,我想使它们与VCL和FMX兼容。所以我有一个遵循这种模式的结构:
General_dpk(使用TCustomMyClass)+ VCL_dpk(使用TMyClass)+ FMX_dpk(使用TMyClassFMX)
每个软件包都有其注册过程,用于注册其组件。在组件面板中会同时出现两个组件(VCL和FMX)。怎么做才能像其他Delphi组件那样仅根据所选项目的类型(VCL或FMX)显示组件?
谢谢
我正在寻找在 Firebird 中执行此操作的方法
SELECT field1, field2, field3
FROM table1
WHERE (field1, field2) IN
(SELECT fieldA, fieldB
FROM table2
WHERE fieldA = 'XXXXX')
Run Code Online (Sandbox Code Playgroud)
我搜索了一个解决方案,找到了一些适用于其他数据库的解决方案,但没有找到适用于 Firebird 的解决方案。
问候
我有一个可编辑的折线,我需要知道这条折线何时改变它们的路径变量.可以在我的折线中添加一个新事件("path_change"或类似的东西)吗?
谢谢
关心cadetill