调用C++;delphi代码中的builderxe表单 我使用绝地JCL包中的大TabutTeCar来显示C++ Builder XE项目中的未处理异常,所有运行的OK都是OK。我决定通过编写自己的自定义表单,通过FTP将崩溃报告上传到服务器,从而对其进行一些改进
问题是,我无法从delphi PAS单元打开我的自定义表单,试图定义为外部(这里没有delphi程序员,抱歉:(),但不知道如何正确编码。我读了很多教程,但除了为我的自定义表单编写DLL或OLE容器外,找不到任何有用的东西,这对于这个项目来说真是太过分了调用C++;delphi代码中的builderxe表单 我使用绝地JCL包中的大TabutTeCar来显示C++ Builder XE项目中的未处理异常,所有运行的OK都是OK。我决定通过编写自己的自定义表单,通过FTP将崩溃报告上传到服务器,从而对其进行一些改进,delphi,interop,c++builder,Delphi,Interop,C++builder,问题是,我无法从delphi PAS单元打开我的自定义表单,试图定义为外部(这里没有delphi程序员,抱歉:(),但不知道如何正确编码。我读了很多教程,但除了为我的自定义表单编写DLL或OLE容器外,找不到任何有用的东西,这对于这个项目来说真是太过分了 问题是,如何正确执行这个任务?如何在C++单元中定义一个窗体(从PASDelphi单元?> P>),我找到了一个简单实用的方法,有点难看,但是很有用! 诀窍是通过使用Screen.forms对象遍历所有表单来获取表单。我已经将表单的TAG属性设
问题是,如何正确执行这个任务?如何在C++单元中定义一个窗体(从PASDelphi单元?
> P>),我找到了一个简单实用的方法,有点难看,但是很有用! 诀窍是通过使用Screen.forms对象遍历所有表单来获取表单。我已经将表单的TAG属性设置为预定义的数字,只是为了获取表单的简单id 简而言之,我的形式里面C++的单位,我会这样做:MyForm->Tag=9999; // easy way of Iding my form
然后,在TExceptionDialog的my delphi单元中,在发送按钮单击方法中:
procedure TExceptionDialog.SendBtnClick(Sender: TObject);
var
i: integer;
form: TForm;
begin
for i := 0 to Screen.FormCount-1 do // all forms
begin
form := Screen.Forms[i]; // get a form
if(form.Tag = 9999) then // check if its my form
begin
form.ShowModal; // if its mine, call showmodal
break;
end;
end;
ModalResult := mrOk; // return to my app
end;
我们可以清楚地了解组织。你有一个使用C++ Builder?DLL项目的Delphi?exe项目?它在“C++ Builder XE项目里面”。它是一个C++ Builder XE项目,它有一个单一的表格Trace.PAS,它是由JCL调试向导自动生成的。我需要调用一个从Trace.pASPASS方法变量中显示的表单方法。(
procedure of object
)到tracer.pas
中的表单。所以,就像事件处理程序一样。谢谢你的回答。你能给我看一些代码吗?我不是Delphi程序员,我尝试过,但我总是有一个“不满意的转发或外部声明…”BTW,为了澄清自己,我必须调用一个窗体之外的窗体的显示模式,它位于C++文件中。调用应该在Trace.Pas.O.,我不知道C++ Builder,所以我不知道这方面。