Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 669

•  TDictionary Custom Sort  5 800

•  Fast Watermark Sources  5 603

•  3D Designer  8 215

•  Sik Screen Capture  5 913

•  Patch Maker  6 388

•  Айболит (remote control)  6 378

•  ListBox Drag & Drop  5 237

•  Доска для игры Реверси  94 551

•  Графические эффекты  6 570

•  Рисование по маске  5 643

•  Перетаскивание изображений  4 759

•  Canvas Drawing  5 135

•  Рисование Луны  4 863

•  Поворот изображения  4 411

•  Рисование стержней  3 116

•  Paint on Shape  2 360

•  Генератор кроссвордов  3 228

•  Головоломка Paletto  2 551

•  Теорема Монжа об окружностях  3 328

•  Пазл Numbrix  2 200

•  Заборы и коммивояжеры  2 849

•  Игра HIP  1 820

•  Игра Go (Го)  1 740

•  Симулятор лифта  2 072

•  Программа укладки плитки  1 798

•  Генератор лабиринта  2 240

•  Проверка числового ввода  1 925

•  HEX View  2 225

•  Физический маятник  1 911

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Получить список свойств перечисляемого типа и список их значений





unit ListForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Panel1: TPanel;
    ComboBox1: TComboBox;
    procedure ComboBox1Change(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    SelPropName: string;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses
  TypInfo;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
  PropInfo: PPropInfo;
  ptd: PTypeData;
  I: Integer;
  PropValue: Integer;
begin
  // set the name of the current property
  if ComboBox1.Text <> '' then
    SelPropName := ComboBox1.Text;
  // add to the listbox the values
  // of the enumerated type
  ListBox1.Items.Clear;
  PropInfo := GetPropInfo (
    ClassInfo, SelPropName);
    // Note: ClassInfo refers to the form, self
  ptd := GetTypeData (PropInfo.PropType^);
  // list the values
  for I := ptd.MinValue to ptd.MaxValue do
    ListBox1.Items.Add (GetEnumName (
      PropInfo.PropType^, I));
  // select the current value
  PropValue := GetOrdProp (self, PropInfo);
  ListBox1.ItemIndex := ptd.MinValue + PropValue;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
  PropInfo: PPropInfo;
  ptd: PTypeData;
  itemIndex: Integer;
begin
  if SelPropName <> '' then
  begin
    PropInfo := GetPropInfo (
      ClassInfo, SelPropName);
    // Note: ClassInfo refers to the form, self
    ptd := GetTypeData(PropInfo.PropType^);
    // save combo box index
    itemIndex := ComboBox1.ItemIndex;
    // select the current value
    SetOrdProp (self, PropInfo,
      ListBox1.ItemIndex - ptd.MinValue);
    // restore combo box index
    ComboBox1.OnChange  := nil;
    ComboBox1.ItemIndex := itemIndex;
    ComboBox1.OnChange  := ComboBox1Change;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  pProps: PPropList;
  nTotProps, nProps, I: Integer;
begin
  // set the initial value
  SelPropName := '';

  // get the total number of properties
  nTotProps := GetTypeData(ClassInfo).PropCount;
  // allocate the required memory
  GetMem (pProps, sizeof (PPropInfo) * nTotProps);
  // protect the memory allocation
  try
    // fill the pProps with a filtered list
    nProps := GetPropList (ClassInfo,
      [tkEnumeration], pProps);
    // fill the combo box
    for I := 0 to nProps - 1 do
      ComboBox1.Items.Add (pProps[I].Name);
  finally
    // free the allocated memmory
    FreeMem (pProps, sizeof (PPropInfo) * nTotProps);
  end;
end;


end.

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





Похожие по теме исходники

Список запущенных процессов

Список установленных устройств




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте