Как получить строковое значение перечисляемого типа?

Ниже представлен пример кода:

 

 How can I assign all property values (or if it's not possible only published property values, or some of them) of one class (TComponent) to another instance of the same class? What I want to do is:

 

Code:

MyComponent1.{property1} := MyComponent2.{property1};

{...}

MyComponent2.{propertyN} := MyComponent2.{propertyN};

 

How can I save properties of a TList to a stream? I need the entire list to be saved as a whole and not as individual objects.

 A TList doesn't have any intrinsic streaming capability built into it, but it is very easy to stream anything that you want with a little elbow grease. Think about it: a stream is data. Classes have properties, whose values are data. It isn't too hard to write property data to a stream. Here's a simple example to get you going. This is but just one of many possible approaches to saving object property data to a stream:

 You may need to know at runtime what properties are available for a particular component at runtime. The list can be obtained by a call to GetPropList. The types, functions and procedures, including GetPropList, that allow access to this property information reside in the VCL source file TYPINFO.PAS.

 

Копирование свойств одного компонента другому

Ниже представлен фрагмент кода:

Как прочитать свойство напрямую из его ресурса?

Ниже представлен пример кода:

 

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

 I need to get a list of strings (like a StringList) with the possible values for a TBrushStyle property (bsSolid, bsClear, bsHorizontal, for example). I want to build a ComboBox with this options. How can I set the property Items of my ComboBox directly with all the values from the enumerated type TBrushStyle? My ComboBox will be alike the Property Editor for this type.

 You can use runtime type information (RTTI) to do that. Below is an example: