如何在不创建窗口对象的情况下获取该窗口中的控件数?

解决方案 »

  1.   

    情况是这样:
    系统有很多窗口。都用了tactionlist
    我想跟据窗口中的taction来创建一个权限列表。但是我又不想把系统中的窗口全都打开来遍例。手头上的数据有 所有窗体的类名称可以做到吗?
      

  2.   

    运行时不行,如果只是为了你设计需要,分析dfm文件就可以了
      

  3.   

    运行时是可以获取dfm文件信息的..2ccc有例子。
    http://www.2ccc.com/article.asp?articleid=3541
      

  4.   

    zhu_jiang()  这个方式我也知道啊。
    还是要创建了才能获取。
    有没有直接从程序中读出dfm资源的例子?
      

  5.   

    我提个思路,请楼主参考
    delphi生成的执行文件有 CODE,DATA,BSS,.idata,.rdata,.rsrc.我们dfm的信息就保存在
    .rsrc节中.也就是资源节.所以可以通过读取.rsrc节获取代码如下
    var
      sRes: TResourceStream;
      sText: TMemoryStream;
    begin
      sRes := TResourceStream.Create (hInstance, PChar('TFORM1'), RT_RCDATA );
      sText := TMemoryStream.Create;
      ObjectBinaryToText(sRes, sText);
      sText.Position := 0;
      Self.Memo1.Lines.LoadFromStream(sText);  //获取到了dfm
      sText.Free;
      sRes.Free;
    end;