1:
|
The control's release notes can be found on our web site, looking for
the Release Notes column in the control's main page. Click here
for direct link.
|
2:
|
The control provides the following ways to add new items to the control:
The Add method allows adding new items to the control. The following sample
shows how to add few items to the control as a simple list:
Private Sub Form_Load()
With PropertiesList1
.BeginUpdate
.Add "Property 1", 0, Edit, "Just a property"
.Add "Property 2", True, EditBoolean, "Just a boolean property"
.EndUpdate
End With
End Sub
The following sample adds items as a simple tree:With PropertiesList1
.BeginUpdate
With .Add("Group 1", "", ReadOnly, "Just a group")
.ID = 1234 ' Assign a identifier to the group
End With
With .Add("Property 1", 0, Edit, "Just a property", 1234)
.Numeric = True
End With
.Add "Property 2", True, EditBoolean, "Just a boolean property", 1234
.Add "Group 2", "", ReadOnly, "Just a group"
.Add "Property 1", True, EditBoolean, "Just a boolean property", "Group 2"
.Add "Property 2", False, EditBoolean, "Just a boolean property", "Group 2"
.EndUpdate
End With
If you have a COM object ( C++: an object that exposes the IDispatch
implementation, VB: any Object, Class implements the IDispatch interface
), and you want to display its properties in the control you have to use the
Select method. For instance the following sample browses the properties of the
Form object:
PropertiesList1.Select Me
The following sample shows how to browse the properties and fields of an ADO
Recordset:
Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Authors", "Provider=Microsoft.Jet.OLEDB.3.51;Data Source= D:\Program Files\Microsoft Visual Studio\VB98\Biblio.MDB", 3 ' Opens the table using static mode
PropertiesList1.Select rs
The following sample shows how to browse only the fields of the recordset (
Please noticed that this time the rs is declared as global, because ShowReadOnly
property requires it as global )
Dim rs As Object
Private Sub Form_Load()
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Authors", "Provider=Microsoft.Jet.OLEDB.3.51;Data Source= D:\Program Files\Microsoft Visual Studio\VB98\Biblio.MDB", 3 ' Opens the table using static mode
With PropertiesList1
.BeginUpdate
.ShowReadOnly = False
.Select rs.Fields
.EndUpdate
End With
End Sub
If you are writing your own classes in VB environment you will be able to browse
them as well using the control like in the following sample. Let's suppose that
we have the following class Class1 definition:
Dim clr As OLE_COLOR
Private Sub Class_Initialize()
clr = vbBlue
End Sub
Property Get BackColor() As OLE_COLOR
BackColor = clr
End Property
Property Let BackColor(ByVal newVal As OLE_COLOR)
clr = newVal
End Property
We can browse the Class1 class using the statement:
PropertiesList1.Select new Class1
|
3:
|
The control provides a Property property that helps you to find an property
given its identifier or its name. The property's ID property defines the
property's identifier. The following sample changes the foreground color for the
property called "BackColor" :
PropertiesList1.Property("BackColor").ForeColor = vbBlue
|
4:
|
The ExpandItem property expands an item given the property's identifier or
the property's name. For instance the ExpandItem(1234) = True expands the
property that has the identifier 1234 ( Property.ID ), or
ExpandItem("Group 2") = False collapses the property called
Group 2.
|
5:
|
The Property object provides the properties like:
CellForeColor,
CellBackColor that helps you to colorize the
cells in the control. The control provides also a property called
BackColorAlternate that provides alternate colors for odd/even items. If the
BackColorAlternate is 0 the control doesn't use the BackColorAlternate
property.
|
6:
|
Yes, you can. The following method uses a for each statement..
Dim p As Property
For Each p In PropertiesList1
Debug.Print p.Name
Next
The following method uses the Item
and Count
properties:
With PropertiesList1
Dim i As Long
For i = 0 To .Count - 1
Debug.Print .Item(i).Name
Next
End With
|
7:
|
The
ColumnAutoResize property is what you are looking for. If the control's
ColumnAutoResize property is True, the control arranges all visible columns to
fit the control's client area. In this case no horizontal scroll bar is
displayed. If the ColumnAutoResize property if False, control displays a
horizontal scroll bar if the width of visible columns doesn't fit the width of
the client area. You can use HeaderVisible property to show the control's
header bar.
|
8:
|
Yes. You can find UNICODE versions here.
|
9:
|
Changing the Name property of the Font object doesn't notify the control that the used font has been changed, so calling
PropertiesList1.Font.Name = "Arial Unicode MS" has effect only for the control's drop-down window, but it doesn't change the font for control inside text editors. Remember that Font is a system object, and it is not implemented by the control, so that's the
reason why the control is not notified that the user has changed the font's name.
The following sample changes the font used by inside text editors as well for the drop-down window:
Dim f As New StdFont
f.Name = "Arial Unicode MS"
PropertiesList1.Font = f
|
10:
|
The control exposes an Interfaces property ( it is hidden and your VB
context window will not display it ) that allows you to get the list of
implemented interfaces. The following sample displays the list of interfaces
implemented by a Form object:
Debug.Print PropertiesList1.Interfaces(Me)
|
11:
|
The following samples adds an Enum type property:
With PropertiesList1
With .Add("Enum", 1, EditEnum, "A property that uses a list of predefined values")
.AddValue 1, "Item 1"
.AddValue 2, "Item 2"
.AddValue 3, "Item 3"
End With
.Refresh
End With Please notice that the Refresh method was called after adding
values to the predefined list. The Refresh method is required because when the
property is added the list of predefined values is unknown, since they've been
added later.
|
12:
|
When you adding that property using the
Add method you have to use the
EditPassword type.
|
13:
|
The control's
ReadOnly
property is what you are looking for.
|
14:
|
The control fires the EditChange event while user alters the text into
an edit fields. The event passes in the Value argument the current text in the
edit field. By changing that value you can handle situation like this.
Private Sub PropertiesList1_EditChange(ByVal Property As EXPROPERTIESLISTLibCtl.IProperty, Value As Variant)
Debug.Print Value
End Sub
|
15:
|
Yes. The following sample helps you to make your control looks like in the .NET environment:
With PropertiesList1
.BeginUpdate
.HasGridLines = True
.HasLines = False
' Shows the categories
.ShowCategories = True
.MarkCategories = True
.DefaultCategory = "Misc"
.GridLineColor = &H80000003
.EndUpdate
End With
|
16:
|
The control provides a property called
InvalidValueMessage that helps you to
change the caption for that error. If the property is empty no message box
occurs.
|
17:
|
The
NameItemsCollection property provides a list of values that indicates the
name of the properties that control looks for when it browses a collection. For
instance, if you have a collection of objects of the Field type. When control
loads the collection it interrogates each element for any property named
in the NameItemsCollection. If the property is not found, the control displays
the element's index instead. So make sure that one of the Field properties that
you want to be displayed instead its index is listed in the NameItemsCollection
property.
|
18:
|
The control loads only the required data from the object's type library. For
instance, when a property of Object type is expanded the control queries the
object's type library and loads the object properties on the fly.
|
19:
|
You have to check the control's
AllowToolTip property. If the AllowTooltip
property is False the control doesn't enable the tooltip feature. By default,
the control's tooltip feature is disabled.
|
20:
|
Yes. The Property object provides two new properties
Mask and
MaskChar that
helps you to use masked edit in the control. You can use the Mask to enter any data that includes literals and requires a mask to filter
characters during data input. The Mask property is composed by a combination of regular characters, literal escape characters, and
masking characters. The Mask property can contain also alternative characters, or range rules. A literal escape character is preceded
by a \ character, and it is used to display a character that is used in masking rules.
Here's the list of all rules and masking characters:
# ( Digit - masks a digit character [0-9]);
x ( Lower Hexa - masks a lower hexa character. [0-9],[a-f]);
X ( Upper Hexa - masks an upper hexa character. [0-9],[A-F]);
A (AlphaNumeric - masks a letter or a digit. [0-9], [a-z], [A-Z]);
? ( Alphabetic - masks a letter. [a-z],[A-Z] );
< ( Lower Alphabetic - masks a lower letter. [a-z] );
> ( Upper Alpabetic - masks an upper letter [A-Z] );
* ( Any - mask any combination of characters );
\ ( Literal escape - Displays any masking characters: \#,\x,\X,\A,\?,\<,\>,\\,\{,\[ );
{nMin,nMax} ( Range - masks a number in a range );
[] ( Alternative - masks any characters that are contained by brackets []. For instance, the
[abcA-C] masks any character: a,b,c,A,B,C
The following sample shows how to mask a telephone number
PropertiesList1.Property("Telephone" ).Mask = "+40 (###) - ### ####".
The following sample shows how to mask an IP address:
PropertiesList1.Property("IP Address" ).Mask = "{0,255}.{0,255}.{0,255}.{0,255}".
You have to use the MaskChar in order to change the masking character. By
default the '_' character is used to mask characters.
|
21:
|
Here's a snippet of VB code that helps you to delete the picture object when
user presses the Delete key.
Private Sub PropertiesList1_KeyPress(KeyAscii As Integer, Shift As Integer)
On Error Resume Next
If (KeyAscii = vbKeyDelete) Then
With PropertiesList1
If Not (.SelectedProperty.Value Is Nothing) Then
If TypeOf .SelectedProperty.Value Is IPictureDisp Then
.SelectedProperty.Value = Nothing
.Refresh
End If
End If
End With
End If
End Sub
|
22:
|
Yes, that's possible. You need to use the Add method and EditObject type like
in the following sample:
With PropertiesList1
.BeginUpdate
.Add "From", Me, EditObject
.Add "PropertiesList", PropertiesList1, EditObject
.EndUpdate
End With
The "From" item will include all properties of the form
object ( me ), and the PropertiesList item includes the properties of the
PropertiesList1 object.
|
23:
|
The SelectedProperty property of the control helps you to get the selected
property as well as changing the selected property as follows:
PropertiesList1.SelectedProperty = PropertiesList1.Property("Appearance")
|
24:
|
Yes, the Exontrol ExPrint component ( exprint.dll ) provides Print and Print
Preview capabilities for the exPropertiesLisy component. Once that you can have
the exPrint component in your Components list, insert a new instance of "ExPrint
1.0 Control Library" to your form and add the following code:
Private Sub Command1_Click()
With Print1
Set .PrintExt = PropertiesList1.Object
.Preview
End With
End Sub
The Exontrol Print Preview mainframe looks like follows:
|
25:
|
The Exontrol ExPrint component ( exprint.dll ) provides Print and Print
Preview capabilities for the Exontrol ExList component.
The requirements for the FitToPage option:
-
Exontrol.ExPrint version 5.2 ( or greater )
-
Exontrol.ExPropertiesList version 8.1 ( or greater )
If these are not meet, the Options("FitToPage") property has NO
effect.
The FitToPage option could be one of the following:
- On, (Fit-To-Page) the control's content is printed to a single page
( version 6.1 )
- p%, (Adjust-To) where p is a positive number that indicates the
percent from normal size to adjust to. For instance, the "FitToPage =
50%" adjusts the control's content to 50% from normal size. ( version
8.1 )
- w x, (Fit-To Wide) where w is a positive number that indicates that the control's content fits w pages wide by
how many pages tall are required. For instance,
"FitToPage = 3 x" fits the control's content to 3 pages wide by
how many pages tall is are required. ( version
8.1 )
- x t, (Fit-To Tall) where t is a positive number that specifies
that the control's content fits t pages tall by how many pages wide are
required. For instance,
"FitToPage = x 2" fits the control's content to 2 pages tall by
how many pages wide are required. ( version
8.1 )
- w x t, (Fit-To) where w and t are positive numbers that specifies
that the control's content fits w pages wide by t pages tall. For instance,
"FitToPage = 3 x 2" fits the control's content to 3 pages wide by
2 pages tall. ( version
8.1 )
The following VB6 sample shows how to show the eXProperties/COM's content to one page
when print or print preview the component:
Private Sub Command1_Click()
With Print1
.Options = "FitToPage = On"
Set .PrintExt = PropertiesList1.Object
.Preview
End With
End Sub
The following VB/NET sample shows how to show the eXPropertiesList/NET's content to one page
when print or print preview the component:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
With Exprint1
.Options = "FitToPage = On"
.PrintExt = Expropertieslist1
.Preview()
End With
End Sub
|
26:
|
The
Description property of
Property object specifies the selected property's
description. Use the Property property to access a Property by its name or its
identifier. Use the DescriptionVisible property to show the control's description
panel.
|
27:
|
The
ToolTip
property of the Property
object allows you to specify a custom tooltip to the
property. The tooltip pops up if the AllowToolTip
property is True, and the mouse pointer is over the property's
name.
The following sample assign a tooltip to a property:
With PropertiesList1
.AllowTooltip = True
With .Add("Border", True, EditBoolean)
.ToolTip = "Specifies whether the object displays a border."
End With
End With
|
28:
|
The
NumericFloat
property allows you to enter a property of float type. The format
of the number could be like follows [+/-]digit[.]digit[e/E/d/D][+/-]digit,
where digit is any combination of digit characters. If the
NumericFloat property is True, the control filters the input
characters that have no sense in the format of the number.
|
29:
|
Set
the ShowObjects
property on False, before adding new properties using the Add
method. It has no effect if you are using the Select
method.
|
30:
|
|
31:
|
Use
the Option property to customize a specified editor. The following
sample customizes the EditDate editor to display strings in
Romanian language:
The following sample customizes the EditDate editor to display
strings in Romanian language:
With PropertiesList1
.Option(exDateTodayCaption) = "Azi"
.Option(exDateMonths) = "Ianuarie Februarie Martie Aprilie Mai Iunie Iulie August Septembrie Octombrie Decembrie"
.Option(exDateWeekDays) = "D L M M J V S"
.Option(exDateFirstWeekDay) = 1
.Add "Date", Date, EditDate
End With
|
32:
|
Set
the ShowItemsCollection
property on False. The Me object exposes a collection of controls
that displays in the form, and also it exports a property for each
control in the collection, that's why the PropertiesList1 object
is listed twice.
|
33:
|
The
following sample shows you how you can browse the properties of
the Microsoft's ListBox ActiveX control:
Private Sub Form_Load()
Set l = Controls.Add("Forms.ListBox.1", "list1")
l.Visible = True
PropertiesList1.Select l
End Sub
|
34:
|
The
Select method browses properties of the giving object, which means
it loads the properties with their values in the eXPropertiesList
control. The control's property is changed as soon as the user
changes the Property in the eXPropertiesList control. The
eXPropertiesList control fires the PropertyChanged event when the
user changes a Property in the browser control. The following
sample uses the browser's Template/TemplateDef properties to
change the properties of your object at runtime. Also it uses the
DisplayCaption property to retrieve the name of the property to be
serialized in the Template format.
The following VB sample builds a string with the
properties/values the user changes:
Private sChanged As String
Private Sub PropertiesList1_PropertyChanged(ByVal Property As EXPROPERTIESLISTLibCtl.IProperty)
With Property
Dim sQuote As String
If (.Type = "BSTR") Then
sQuote = """"
End If
sChanged = sChanged + .DisplayCaption(exDisplayTemplate) & " = " & sQuote & .Value & sQuote & vbCrLf
End With
End Sub
The sample builds strings like follows:
BackColor = 65535
Columns("B").Def(4) = 255
SortBarVisible = True
Now, all we need is to apply this kind of strings to your
object. Let's say your object is Object1 in the following sample,
so the procedure will be:
Private Sub ApplyTemplateTo(ByVal o As Object, ByVal sTemplate As String)
With PropertiesList1
.TemplateDef = "Dim obj" ' Allocates a member variable called obj
.TemplateDef = o ' Assigns a value to the variable obj, in this case your object
.Template = "obj{" & sTemplate & "}" ' Applies the giving template ( sTemplate ) to obj, in this case your object
End With
End Sub
The sample uses the TemplateDef property to allocates a
member variable obj to holds a reference to your object, and
executes the code (x-script, template code ) of this object.
Shortly, all you need is to save / load the sChanged string to
a file, and pass it so ApplyTemplateTo method whenever you need to
apply the changed properties to your object. You can optimize the
code, so the sChanged ( Template code ) holds just a line with a
specified property, as currently, any change in the browser is
saved to a new line to the sChanged string, so multiple values for
the same property may occurs. For instance, you can use a hash
table to store the property's name and value, and so, lines will
not save multiple values for the same property.
|