首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 主程序调用bpl非模式MDI窗口有关问题

2013-03-22 
delphi 主程序调用bpl非模式MDI窗口问题。delphi 主程序调用bpl非模式MDI窗口,也就是Show主程序 和 窗口 是

delphi 主程序调用bpl非模式MDI窗口问题。
delphi 主程序调用bpl非模式MDI窗口,也就是Show
主程序 和 窗口 是mdi的关系
打开窗口 嵌入在主程序的框框中
现在要实现的是 点击了这个窗口后 如果再点击 就不能重复show出来
如果在同一个窗口中 那好实现 有现成的方法可以找到 如果存在 就show出来即可
可是通过bpl窗口 就找不到了 我用了 findwindow函数 也不行
还请大家直接
主程序调用bpl窗口代码如下:
procedure TfrmMain.miDD_DDClick(Sender: TObject);
type
  TLoadBpl = procedure(App: TApplication; RConnectDB: TRConnectDB; TeacherID: string; Right: TStringList); stdcall;
var
  BplHandle: THandle;
  LoadBpl: TLoadBpl;
  FarProc: TFarProc;
begin
  if MDIExist('frmDD') then Exit;
  BplHandle := LoadPackage('DD.bpl');
  if BplHandle <> 0 then
    try
      FarProc := GetProcAddress(BplHandle, PAnsiChar('ShowForm'));
      if FarProc <> nil then
      begin
        LoadBpl := TLoadBpl(FarProc);
        LoadBpl(Application, RConnectDB, TeacherID, Right);
      end
      else
        ShowMessage('过程ShowForm没有找到');
    except
      UnloadPackage(BplHandle);
    end
  else
    ShowMessage('DD.bpl' + '文件不存在');
end;

bpl对外函数如下:
procedure ShowForm(App: TApplication; RConnectDB: TRConnectDB; TeacherID: string; Right: TStringList);
begin
  Application := App;
  with TfrmDD.Create(Application.MainForm, RConnectDB, TeacherID, Right) do
  begin
    try
      Show;
    except
      Free;
    end;
  end;
end;
这里RConnectDB就是个记录类型,存储数据库的连接信息

还请大家帮忙 谢谢。。

[解决办法]
with TfrmDD.Create(Application.MainForm, RConnectDB, TeacherID, Right) do
--------------------------------------
如果是嵌入到MainForm或MainForm作为拥有者, 都是可以获得的TfrmDD的实例化对象的

热点排行