Тема: Delphi Var list class

Як узнать список змін які є у певного класу.

2

Re: Delphi Var list class

подивитися в файлі заголовків

3

Re: Delphi Var list class

type
  TForm3 = class(TForm)
    PageControl1: TPageControl;
    pnl1: TPanel;
    ts1: TTabSheet;
    options_grp_language: TGroupBox;
    options_grp_font: TGroupBox;
    options_grp_stylyWindow: TGroupBox;
    options_combb_Font: TComboBox;
    se1: TSpinEdit;
    options_combb_style: TComboBox;
    options_combb_language: TComboBox;
    options_butt_Default: TSpeedButton;
    options_butt_Save: TSpeedButton;
    ColorBox1: TColorBox;
    options_butt_1: TSpeedButton;
    options_butt_2: TSpeedButton;
    options_butt_3: TSpeedButton;
    options_butt_4: TSpeedButton;
    options_butt_5: TSpeedButton;
    options_butt_Apply: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure options_butt_4Click(Sender: TObject);
    procedure options_butt_3Click(Sender: TObject);
    procedure options_butt_2Click(Sender: TObject);
    procedure options_butt_1Click(Sender: TObject);
    procedure options_butt_5Click(Sender: TObject);
    procedure options_butt_DefaultClick(Sender: TObject);
    procedure options_butt_ApplyClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

прогрмно получить

4

Re: Delphi Var list class

і чи можна це зпрбить

5

Re: Delphi Var list class

Це зветься рефлексією і існує тільки в інтерпретованих мовах.

6

Re: Delphi Var list class

Мені потрібно узнать список таких

PageControl1: TPageControl;
    pnl1: TPanel;
    ts1: TTabSheet;
    options_grp_language: TGroupBox;
    options_grp_font: TGroupBox;
    options_grp_stylyWindow: TGroupBox;
    options_combb_Font: TComboBox;
    se1: TSpinEdit;
    options_combb_style: TComboBox;
    options_combb_language: TComboBox;
    options_butt_Default: TSpeedButton;
    options_butt_Save: TSpeedButton;
    ColorBox1: TColorBox;
    options_butt_1: TSpeedButton;
    options_butt_2: TSpeedButton;
    options_butt_3: TSpeedButton;
    options_butt_4: TSpeedButton;
    options_butt_5: TSpeedButton;
    options_butt_Apply: TSpeedButton;

7

Re: Delphi Var list class

Ви в курсі взагалі - Delphi компільована мова чи інтерпретована?
Хоча якщо тільки елементи управління - то http://docs.embarcadero.com/products/ra … trols.html

8

Re: Delphi Var list class

Якщо я Вас правильно зрозумів, то Вам потрібно перерахувати усі поля, методи та властивості якогось класу. Якщо це так, то копайте в сторону RTTI.
Наступний код працює, здається, з Delphi 2009. Особисто я тестував у Delphi XE7.

Приклад для консолі
uses
  System.SysUtils,
  System.Rtti;

 var
  LContext: TRttiContext;
  LType: TRttiType;
  LMethod: TRttiMethod;
  LProperty: TRttiProperty;
  LField: TRttiField;
begin
  try
    LContext := TRttiContext.Create;
    try
      LType := LContext.GetType(Self.ClassInfo); //Ваша форма
      Writeln('Methods:');
      for LMethod in LType.GetDeclaredMethods do
      begin
        //if LMethod.Visibility = TMemberVisibility.mvPublic then
          Writeln(LMethod.ToString);
      end;

      Writeln('Properties:');
      for LProperty in LType.GetDeclaredProperties do
      begin
          Writeln(LProperty.ToString);
      end;

      Writeln('Fields');
      for LField in LType.GetDeclaredFields do
      begin
        Writeln(LField.ToString);
      end;
    finally
      LContext.Free;
    end;
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
Подякували: koala, Torbins, Stanislav Stecenko3

9

Re: Delphi Var list class

Якщо усе ж йдеться не про список полів та методів, а про зміни цих полів, то можна спочатку зберегти стан класу, потім змінити його і в кінці порівняти новий стан та попередній. Копати в цю сторону: http://docwiki.embarcadero.com/CodeExam … 8Delphi%29