RunPropF.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit RunPropF;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   ExtCtrls, StdCtrls, Spin;
  6. type
  7.   TForm1 = class(TForm)
  8.     Edit1: TEdit;
  9.     Label1: TLabel;
  10.     Button1: TButton;
  11.     ListBox1: TListBox;
  12.     RadioButton1: TRadioButton;
  13.     CheckBox1: TCheckBox;
  14.     ScrollBar1: TScrollBar;
  15.     SpinEdit1: TSpinEdit;
  16.     ComboBox1: TComboBox;
  17.     Bevel1: TBevel;
  18.     procedure Button1Click(Sender: TObject);
  19.   private
  20.     { Private declarations }
  21.   public
  22.     { Public declarations }
  23.   end;
  24. var
  25.   Form1: TForm1;
  26. implementation
  27. {$R *.DFM}
  28. uses
  29.   TypInfo;
  30. procedure TForm1.Button1Click(Sender: TObject);
  31. var
  32.   I: Integer;
  33. //  PropInfo: PPropInfo;
  34.   Value: Variant;
  35. begin
  36.   ListBox1.Clear;
  37.   for I := 0 to ComponentCount -1 do
  38.   begin
  39.     // Delphi 5 version
  40.     Value := GetPropValue (Components[I], Edit1.Text);
  41.     if Value <> varNULL then
  42.       ListBox1.Items.Add (Components[I].Name + '.' +
  43.         Edit1.Text + ' = ' + string (Value))
  44.     else
  45.       ListBox1.Items.Add ('No ' + Components[I].Name + '.' +
  46.         Edit1.Text);
  47.     // pre-Delphi 5 version, limited to strings
  48. {
  49.     // get property RTTI
  50.     PropInfo := GetPropInfo (
  51.       Components[I].ClassInfo, Edit1.Text);
  52.     if PropInfo = nil then
  53.       // if not found output a message
  54.       ListBox1.Items.Add (Descr + ' doesn''t exist')
  55.     else if PropInfo.PropType^.Kind <> tkLString then
  56.       // if not a strign output a message
  57.       ListBox1.Items.Add (Descr + ' is not a string')
  58.     else
  59.       // show the value
  60.       ListBox1.Items.Add (Descr + ' = [' +
  61.         GetStrProp (Components[I], PropInfo) + ']');
  62. }
  63.   end;
  64. end;
  65. end.