分可以再加!

解决方案 »

  1.   

    读form文本的内容?隐藏form?
      

  2.   

    unit Unit5;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;const
      ClassMap: array[0..7] of TClass = (TButton, TGroupBox, TEdit, TRadioButton,
                                         TLabel, TMemo, TCheckBox, TComboBox);type
      TMainForm = class(TForm)
        lbClassName: TListBox;
        mmProps: TMemo;
        procedure FormCreate(Sender: TObject);
        procedure lbClassNameClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure FillWithProp(AClass: TClass);
      end;var
      MainForm: TMainForm;implementationuses TypInfo;{$R *.dfm}procedure TMainForm.FillWithProp(AClass: TClass);
    var
      pl: PPropList;
      i: Integer;
      j: Integer;
      PropCount: Integer;
      td: PTypeData;
    begin
      mmProps.Lines.Clear;
      pl := nil;
      PropCount := GetPropList(PTypeInfo(AClass.ClassInfo), pl);
      if pl <> nil then
      begin
        SortPropList(pl, PropCount);
        mmProps.Lines.Add(AClass.ClassName + '的属性如下:');
        for i := 0 to PropCount - 1 do
          mmProps.Lines.Add('   ' + pl[i].Name);
        SendMessage(mmProps.Handle, EM_LINESCROLL, 0, -mmProps.Lines.Count);
        FreeMem(pl);
      end;
    end;procedure TMainForm.FormCreate(Sender: TObject);
    var
      i: Integer;
    begin
      for i := Low(ClassMap) to High(ClassMap) do
        lbClassName.Items.Add(ClassMap[i].ClassName);
    end;procedure TMainForm.lbClassNameClick(Sender: TObject);
    begin
      if lbClassName.ItemIndex >= 0 then
        FillWithProp(ClassMap[lbClassName.ItemIndex]);
    end;end.
      

  3.   

    同意 
    myy做一个如同
    PE Exploere 
    eXeScope
      

  4.   

    同意楼上的。
    有时候解决问题很简单,但却往往先把自己捆起来然后再考虑解决办法。就象曾经有人问:不用if语句如何实现“实数变量的值是否大于零”条件判断?(尽管可以实现,但已经走了很远的弯路。)
    准确地说,用对象引用如Form1.Controls[I]或Form1.Components[I]以及其它相关属性可以很简单地解决楼主的问题,为什么非要加一个限制呢?
    俺提一个特别无聊的高难度问题:不直接也不间接使用任何Win32 API,只使用Object Pascal标准例程,如何得到当前操作系统的版本信息?
      

  5.   

    各位朋友,可能我说的不清楚,之所以我说不创建是因为该窗体比较大,并且我不希望创建他时占用系统资源而且花费很长的时间(因为要对好多窗体进行这样的操作).所以才有了这样的问题.
        之所以我将此问题提出来是因为我认为是有办法解决的(创建以后很容易,不创建也应该同样可以)知是我不明白关于他的Create方法是怎么回事.
        多谢各位回复,同时也希望大家都来研究研究.
      

  6.   

    建议看一下VCL中的类(好象是第二层)从资源中读出属性的方法,不地估计在程序发布后,多半无法实现,或者说你可以想其他办法来达到目的;例如将属性存放于数据库中,或者在程序中写死!!
      

  7.   

    真累。
    (1)假如允许直接从类中获取类的成员或域,那么体现面向对象技术的如下限定词该如何起作用?(private、protected、public、published)
    (2)观察TComponent中的属性ComponentCount来源,就可以知道FComponentCount的变化是由其孩子组件的Create和Destroy引起的;观察TWinControl中的ControlCount来源,就可以知道与之相关的FWinControls或FControls的变化是由其孩子控件Create和Destroy引起的。
    楼主真是死心眼,非认定“创建以后很容易,不创建也应该同样可以”不可。
    真累。说的婉转一些:请楼主仔细研究一下Delphi是如何读取的(skypeople(飞飞) 说的)。
    说的直接一些:请楼主认真复习一下面向对象技术,特别是类和对象的基本概念。
      

  8.   

    同意楼上的,像DELPHI那样自已去解释它就行了
      

  9.   

    同意楼上说的,可以换一个角度来考虑,能实现功能就好,如果不创建窗体,我有个建议,可以写一个分析器自己去读.dfm文本的内容,肯定可以得到你要的属性,不过显然没有必要这样做。
      

  10.   

    to  findya(满地找牙) 同志:
        你好,显然你的那个建议是没有任何用处的,我们给用户的只是 exe 程序,而不是带有源代码的 pas 和 dfm。    楼主,你这样做肯定有你的原因,但是我们想知道是什么促使你要这样做?
      

  11.   

    CloneCenter(复制中心) 同志:
        我可以说一下这个问题是怎样产生的:
            首先我在一个MIS的台帐窗口(许多这样的窗口)中放置了许多DBEDIT,而在另外一个统计窗口中我又要将这些DBEDIT动态添加过来(从某一个窗口中,运行时确定).不创建的原因是窗口太多(20多个),耗资源太大.
      

  12.   

    这个问题我也遇到,如果你有使用datamodule,可以把公用的控件或变量创建在此窗口,然后从这里调用
      

  13.   

    建议你别偷懒了DBTEXT动态建立吧:)
      

  14.   

    编译以后dfm就成为Exe的资源,可以在exe中读取和分析的
    这样太麻烦了,而且不实际
    你可以以自己优化程序的,我有些工程有20多个Form,都是使用时再动态创建的
      

  15.   

    Type it carefully ,and u will see the result !1
      

  16.   

    用(sender as 类名).属性
    看看可以吗?