Properties are the most visible parts of a Delphi control / component. When designing the user interface of your Delphi, at design-time, application you use the Object Inspector to set control properties.
Properties can be simple (string, boolean and integer values, for example) or can be of a more complex type, like enumerations, sets or arrays.
Enum / Enumerated properties at Run-Time
At design-time properties of enumerated types (including Boolean) appear as editable strings. You can also cycle through the possible values by double-clicking the value column, and there is a drop-down list that shows all possible values.
ListView's ViewStyles in RadioGroup
For example, let's consider the ViewStyle property of the TListView control. ViewStyle determines the visual display of items in a list view. The items can be displayed as a set of movable icons, or as columns of text.If you need to allow a user of your application to change the display of the ListView at run-time, you need to provide some sort of "selectable" user interface. Controls like ComboBox, RadioGroup or ListBox can be used - they all display a collection of selectable items.
For this example, we'll use a TRadioGroup control (group of radio buttons). When the user checks a radio button, all other radio buttons in its group become unchecked. If each radio button represents one enum value from an enumerated type property of a control - when the item is selected - the enum value can be assigned.
Here's how to populate a radio group control with the possible values for the ViewStyle ListView's property:
uses TypInfo, ...You first iterate over the set of possible enum values for ViewStyle. Next, Delphi's RTTI function GetEnumName is used to convert an enum to its string representation.
//List ListView VievStyle's in a Radio Button List
var
vs : TViewStyle;
vss : string;
begin
for vs in [Low(TViewStyle) .. High(TViewStyle)] do
begin
//get enum name as string
vss := GetEnumName(TypeInfo(TViewStyle), integer(vs)) ;
//add enum to a radio button list
RadioGroup.Items.AddObject(vss, TObject(vs)) ;
end;
end;
Finally, the enum as string is added to the radio group's Items collection, by using the AddObject method which adds a string to the list, and associates an object with the string.
The object associated is the actual enum value.
When any of the radio group option buttons is selected / clicked we need to handle the RadioButton.OnClick event.
procedure TForm.RadioGroupClick(Sender: TObject) ;We extract the enum value from the selected option button by type casting the object to the actual enum value.
var
vs : TViewStyle;
begin
//get the enum value
vs := TViewStyle(RadioGroup.Items.Objects[RadioGroup.ItemIndex]) ;
//change the enumerated property of a control
ListView1.ViewStyle := vs;
end;
Finally, the ListView's ViewStyle is set to the new value.
That's it. As simple as it should be with Delphi :)
Delphi tips navigator:
» Force TListView's Edit Mode using a Keyboard Shortcut
« Disable CTRL+V Shortcut Key for a TEdit / TMemo (TCustomEdit)


