0

我正在使用 JEDI JCL 包中的出色 TExceptionDialog 来显示 C++ builder XE 项目中未处理的异常,到目前为止一切正常。我决定通过编写我自己的自定义表单以通过 FTP 将崩溃报告上传到服务器来稍微增强它。

问题是我无法从delphi PAS单元打开我的自定义表单,试图定义为外部(这里没有delphi程序员,抱歉:()但不知道如何正确编码。我已经阅读了很多教程但除了为我的自定义表单编写 DLL 或 OLE 容器之外,找不到任何有用的东西,对于这个项目来说真的是矫枉过正。

问题是,我怎样才能正确执行此任务?如何从 PAS delphi 单元执行 C++ 单元中定义的表单的 ShowModal()?

4

1 回答 1

0

我找到了一种简单实用的方法,有点丑但有效!

诀窍是通过使用 Screen.Forms 对象遍历所有表单来获取表单。我已将表单的 TAG 属性设置为预定义的数字,只是为了获得它的简单 ID。

简而言之,在我的表单的 C++ 单元中,我会这样做:

MyForm->Tag=9999; // easy way of Iding my form

然后,在我的 TExceptionDialog 的 delphi 单元中,在 SEND 按钮单击方法中:

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;
于 2012-07-11T13:33:30.540 回答