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

•  DeLiKaTeS Tetris (Тетрис)  4 034

•  TDictionary Custom Sort  6 137

•  Fast Watermark Sources  5 937

•  3D Designer  8 795

•  Sik Screen Capture  6 265

•  Patch Maker  6 687

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

•  ListBox Drag & Drop  5 537

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

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

•  Рисование по маске  6 134

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

•  Canvas Drawing  5 441

•  Рисование Луны  5 155

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

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

•  Paint on Shape  2 551

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

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

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

•  Пазл Numbrix  2 329

•  Заборы и коммивояжеры  3 019

•  Игра HIP  1 972

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

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

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

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

•  Проверка числового ввода  2 085

•  HEX View  2 413

•  Физический маятник  2 044

 
скрыть

  Форум  

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

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