Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Регистрация классов

Delphi , Компоненты и Классы , Классы

Регистрация классов



unit InfoForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  StdCtrls, ExtCtrls, Buttons, Clipbrd, Comctrls, Db, Dbcgrids,
  Dbctrls, Dbgrids, Dblookup, Dbtables, Ddeman, Dialogs,
  Filectrl, Grids, Mask, Menus, Mplayer, Oleconst, Olectnrs,
  Olectrls, Outline, Tabnotbk, Tabs;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    ButtonShow: TButton;
    Label3: TLabel;
    Panel1: TPanel;
    ComboBox1: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure ButtonShowClick(Sender: TObject);
    procedure ComboBox1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

type
  TClassArray = array [1..140] of TPersistentClass;

const
  ClassArray: TClassArray = (
    TBitmap, TGraphic, TOutlineNode, TGraphicsObject,
    TBrush, THeaderSection, TParams, TCanvas,
    THeaderSections, TPen, TIcon, TPicture,
    TIconOptions, TCollection, TCollectionItem, TColumn,
    TStatusPanel, TColumnTitle, TStatusPanels, TClipboard,
    TControlScrollBar, TListColumn, TStringList, TListItem,
    TStrings, TListItems, TMetafile, TMetafileCanvas,
    TTreeNode, TFont, TParaAttributes, TTreeNodes,
    TApplication, TDDEServerItem, TPanel, TAutoIncField,
    TDirectoryListBox, TPopupMenu, TBatchMove, TDrawGrid,
    TPrintDialog, TBCDField, TDriveComboBox, TPrinterSetupDialog,
    TBevel, TEdit, TProgressBar, TBitBtn,
    TField, TQuery, TBlobField, TFileListBox,
    TRadioButton, TBooleanField, TFilterComboBox, TRadioGroup,
    TButton, TFindDialog, TReplaceDialog, TBytesField,
    TFloatField, TCheckBox, TFontDialog,
    TRichEdit, TColorDialog, TForm, TSaveDialog,
    TComboBox, TGraphicField, TScreen, TCurrencyField,
    TGroupBox, TScrollBar, TDatabase, THeader,
    TScrollBox, TDataSource, THeaderControl, TSession,
    TDateField, THotKey, TShape, TDateTimeField,
    TImage, TSmallIntField, TDBCheckBox, TImageList,
    TSpeedButton, TDBComboBox, TIntegerField, TStatusBar,
    TDBCtrlGrid, TLabel, TStoredProc, TDBEdit,
    TListBox, TStringField, TDBGrid, TListView,
    TStringGrid, TDBImage, TMainMenu, TTabbedNotebook,
    TDBListBox, TMaskEdit, TTabControl, TDBLookupCombo,
    TMediaPlayer, TTable, TMemoField, TDBLookupComboBox,
    TMemo, TTabSet, TDBLookupList, TTabSheet,
    TDBLookupListBox, TMenuItem, TTimeField, TDBMemo,
    TNotebook, TTable, TDBNavigator, TOleContainer,
    TTimer, TDBRadioGroup, TOpenDialog, TTrackBar,
    TDBText, TOutline, TTreeView, TDDEClientConv,
    TOutline, TUpdateSQL, TDDEClientItem, TPageControl,
    TUpDown, TDDEServerConv, TPaintBox, TVarBytesField,
    TWordField);


procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  // register all of the classes
  RegisterClasses (ClassArray);
  // copy class names to the listbox
  for I := Low (ClassArray) to High (ClassArray) do
    ComboBox1.Items.Add (ClassArray [I].ClassName);
end;

procedure TForm1.ButtonShowClick(Sender: TObject);
var
  MyClass: TClass;
begin
  MyClass := GetClass (ComboBox1.Text);
  if MyClass = nil then
    Beep
  else
  begin
    Edit1.Text := Format ('Name: %s - Size: %d bytes',
      [MyClass.ClassName, MyClass.InstanceSize]);
    with Listbox1.Items do
    begin
      Clear;
      while MyClass.ClassParent <> nil do
      begin
        MyClass := MyClass.ClassParent;
        Add (MyClass.ClassName);
      end; // while
    end; // with
  end; // else
end;

procedure TForm1.ComboBox1DblClick(Sender: TObject);
begin
  ButtonShowClick (Sender);
end;

end.

Загрузить весь проект

Программа на Delphi, которая регистрирует и отображает информацию о различных классах в библиотеке VCL (Visual Component Library). Проект состоит из одного окна (TForm1), которое содержит несколько контролов:

  • Список (ListBox1) для отображения имен классов
  • Редактор (Edit1) для отображения информации о классе
  • Комбо-бокс (ComboBox1) для выбора класса
  • Кнопка (ButtonShow) для отображения информации о выбранном классе
  • Панель (Panel1) для группировки других контролов

Проект имеет два основные процедуры:

  • FormCreate: эта процедура вызывается при создании окна. Она регистрирует все классы в VCL с помощью функции RegisterClasses и заполняет комбо-бокс их именами.
  • ButtonShowClick: эта процедура вызывается при клике кнопки. Она получает выбранный класс из комбо-бокса, получает его имя и размер экземпляра, и отображает эту информацию в редакторе. Она также отображает предков (родителей) класса в списке.

Проект также имеет третью процедуру:

  • ComboBox1DblClick: эта процедура вызывается при двойном клике на элементе в комбо-боксе. Она просто вызывает процедуру ButtonShowClick для отображения информации о выбранном классе.

Чтобы использовать этот проект, вам нужно загрузить его в Delphi и запустить. Затем вы можете выбрать класс из комбо-бокса и кликнуть кнопку для отображения его информации. Список будет отображать предков класса.

Вот некоторые возможные улучшения:

  • Обработка ошибок: процедура ButtonShowClick не обрабатывает ошибки, которые могут возникнуть при получении или отображении информации о классе.
  • Организация кода: процедуры можно организовать в отдельных модулях для лучшей поддерживаемости и повторного использования.
  • Интерфейс пользователя: окно можно переделать для улучшения удобства использования и внешнего вида.

В целом, это проект демонстрирует использование классов Delphi'а VCL и предоставляет базовый пример отображения информации о классе.

Регистрация классов в Delphi: пример регистрации и использования классового массива.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Классы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:48:33/0.0060510635375977/1