These are some of the most common questions about our products. They have been grouped by the corresponding product name.
If your question isn’t answered here, you may want to search in our online forums or send your query to our techincal support group.
VLButtonBar
A versatile, outlook styled sidebar navigation control.
- Can you explain the term ButtonFlow, is it same as orientation?
- What is the difference between ButtonHighlightChanged and MouseMove event?
- What is the use of "Prompt" property of the button object of VLButtonBar?
- I want to show selected button same as any other button in the control. Can this be done?
- Why doesn't VLButtonBar control close when user clicks on the close button on the caption bar?
- I want to add a lots of groups and buttons, can I do this at design time and/or without writing a lot of code?
No, not strictly. ButtonFlow on its own does not fully govern the layout of buttons. ButtonFlow and ButtonLayout together decide the actual layout of buttons. Following table specifies how the buttons will be arranged for different combination of ButtonFlow and ButtonLayout properties:
- ButtonFlow: vlVertical, ButtonLayout: vlLinear Buttons are tiled vertically from top to bottom in a single column. The button information (picture and caption) is centered in the available width. If all buttons cannot be accommodated in the available button area, then control will automatically display vertical scroll buttons.
- ButtonFlow: vlVertical, ButtonLayout: vlTiled Buttons are tiled moving from left to right, and top to bottom in multiple columns. Only as many buttons (minimum of one in the row) are put in a row as are fully visible. If all buttons cannot be accommodated in the available button area, then control will automatically display vertical scroll buttons.
- ButtonFlow: vlHorizontal, ButtonLayout: vlLinear Buttons are tiled horizontally from left to right in a single row. The button information (picture and caption) is centered in the available height. If all buttons can't be accommodated in the available button area, then control will automatically display horizontal scroll buttons.
- ButtonFlow: vlHorizontal, ButtonLayout: vlTiled Buttons are tiled moving from top to bottom, and right to left in multiple rows. Only as many buttons (minimum of one in the column) are put in a column as are fully visible. If all buttons cannot be accommodated in the available button area, then control will automatically display horizontal scroll buttons.
MouseMove event will be triggered whenever the mouse moves over any part (including buttons) of the VLButtonBar control. ButtonHighlightChanged is fired whenever the button highlight state changes. The highlight state could change either due to mouse moving over the button area, or due to keyboard cursors keys activity. Please note that if the mouse continues to move over the same button, ButtonHighlightChanged will not be repeatedly fired.
Prompt property of the button object is typically used to store brief help message for display in status bar when mouse hovers over the button button. Following code snippet shows how you can do this:
Private Sub VLButtonBar1_ButtonHighlightChange (aButton As CButton, ByVal bHighlighted As Boolean)
If (bHighlighted) Then
StatusBar1.Panels(1).Text = aButton.Prompt
Else
StatusBar1.Panels(1).Text = ""
End If
End Sub
Yes, you can achieve this by specifing the same values for SelectedButtonAppearance and ButtonAppearance, also specify the same foreground and background colors for Selected and unselected buttons.
This behavior is by design. VLButtonBar will trigger CloseButtonClick event when user clicks on the close button. You can write code to either unload the form hosting the control or simply hide the control by setting its Visible property to False.
Certainly. You can add groups and buttons in each group without writing a single line of code. This can be done through the Group and Button property pages. For displaying property pages in VB IDE, right click on the control and select the "Properties" from the context menu that appears. The groups and buttons as well as their properties that you add at design time will be stored in the corresponding frm file (also exe file) and will automatically get loaded at runtime. With this mechanism, you can minimize the code you need to write for providing a professional navigation interface in your application.
VLFormDesigner
Runtime form designer for Visual Basic (Classic)
- How can I ensure that user cannot resize or move certain controls?
- Is there any easy way of setting width / height of selected controls to same value?
- Is there any easy way of aligning selected controls?
- Do you offer any other components useful for making a form designer application?
- Is VLFormDesigners design mode identical to VB IDE's design mode?
- Does VLFormDesigner support runtime resizing and repositioning of controls using keyboard?
- Does VLFormDesigner support runtime resizing and repositioning of windowless controls?
- Does VLFormDesigner support runtime resizing and repositioning of nested controls?
You can mark any of the contained controls as locked. User will not be able to resize or reposition any control that has been marked as locked. Though, through your program you are free to change its size and position.
Yes, you can "equi-size" selected controls in a single line of code ...using ResizeSelectedControls method.
Yes, you can align selected controls with a single line of code ... by calling AlignSelectedControls method.
Yes, we have two more controls VLPropertyList and VLButtonBar that will help you deliver a complete form designing solution with minimal code. Details of these products are also available on our site.
In fact we do offer form designer component suite that includes VLFormDesigner, VLButtonBar and VLPropertyList. You will get better pricing when you buy these controls as a suite.
No, VLFormDesigner's draw and select modes are not true design mode like VB IDE. It is just a simulation, we call it peudo design mode. In this mode, though the end user can resize and reposition contained controls, the controls themselves will be in runtime mode.
If this is a bit confusing, don't worry, user will be able to re-size and reposition any of the contained controls ... that's what matters.
Yes.
Yes. For example, it allows runtime resizing and repositioning of label, line, shape and image controls of Visual Basic.
Yes.
VLMenuPlus
A drop-in menu enhancer control for your applications
You can specify a different help string in ShowMenuHelp event. Following piece of code demonstrates how to do this:
Private Sub VLMenuPlus1_ShowMenuHelp(ByVal mnuItem As CMenuItem, sHelpMessage As String)
If (mnuItem.Caption = "&Open") Then
sHelpMessage = "Select this menu to open an existing document"
End If
End Sub
Yes, you can. The particular menu item will be automatically made larger to accommodate the additional size of the bitmap. Using non-standard sized bitmaps may look odd, unless all your icons are of the same size.
Yes you can. VLMenuPlus will automatically display icons for standard menus, but if you want to use one of the default icons for a different menu item, you can get access to the default icon using GetDefaultPicture property and set it for the appropriate menu item in SetMenuItemAttribute event. Following piece of code demonstrates this :
Private Sub VLMenuPlus1_SetMenuItemAttributes(ByVal mnuItem As CMenuItem)
If (mnuItem.Caption = "&Revert") Then
Set mnuItem.Picture = VLMenuPlus1.GetDefaultPicture("UNDO")
End If
End Sub
There are two ways in which you can display custom icons for your menu items:
- You can add the icons into an image list control with appropriate setting for KEY property (see "How does it work ?" in the help file), and then use SetImageList method to set the Image list to the VLMenuPlus control.
- You can specify the icon during menu attribute setting in the SetMenuItemAttributes event through "picture" property of MenuItem object. Following piece of code demonstrates this:
Private Sub VLMenuPlus1_SetMenuItemAttributes(ByVal mnuItem As CMenuItem) Dim sCaption As String sCaption = VLMenuPlus1.GetCleanCaption(mnuItem.Caption) With ImageList1.ListImages Select Case sCaption Case "OPEN", "CLOSE" Set mnuItem.Picture = .Item(sCaption).Picture End Select End With End Sub
VLPropertyList
Easy to use object properties browser for Visual Basic applications
- What is the use of PropertyDeleted event?
- I want to let my users browse the object but I don't want to let them to change a value?
- What is the use of "AutoUpdateSource" property of CProperty object?
- Can I use a dialogbox (modal form) as an editor for a property?
- Can I create a custom in-place editor for a property?
- Can I specify different background color for different properties?
- Can I use a category other than Misc as default category?
- Can I use a category separator other than | ?
- Can I have multi-level categorization of properties?
- I want to display properties in a categorized list, can I do this?
- How can I reduce flicker when adding a bunch of properties?
- How can I add properties in VLPropertyList?
Frankly, nothing
. May be you can use it to free property specific resources that you might have allocated in your application.
You need to set ReadOnly attribute for each property to True. This is not as painful as it sounds. You can use PropertyAdded event to set this attribute from a single point as shown here:
Sub VLPropertyList1_PropertyAdded(aProperty as CProperty)
With aProperty
Select Case .Name
Case "BackColor", "ForeColor"
'do nothing
Case Else
.ReadOnly = True
End Select
End With
End Sub
In this example we are marking all properties except for "BackColor" and "ForeColor" as readonly. In fact same concept can be used to set backcolor etc. for a set of properties with minimum amount of code.
VLPropertyList object allows you to associate an object with a property (SourceObject), and it will automatically apply changes to the property value to the associated object if AutoUpdateSouce for that CProperty object is set to True.
Yes. our sample application that ships with the product includes an example of a dialog based editor the the property.
Yes. This is an advanced topic. It is discussed in detail in the online documentation (see help on CEditor) and also the sample application that ships with the application. It includes a demontration of custom in-place editor that uses a checkbox.
Yes you can. Each CProperty object has a BackColor attribute. When you want the property to use the default color, specify -1 for the BackColor attribute of CProperty object, otherwise specify the color of your choice.
Yes you can. You will need to assign a default category value of your choice to "DefaultCategory" property of the control. Please note that this change will affect only those categories which are added after the new default category value has been specified.
Yes you can. You will need to assign a separator value of your choice to "CategorySeparator" property of the control. The category attribute of all previously added properties will automatically be modified by the control.
Yes, you can have multi-level categorization of properties. For example, Lets say you want to display a property by name Bold under a category by name Font, which itself is to be displayed under appearance category. You will have to specify "Appearance|Font" as the category when you are adding a property by name "Bold".
Yes, VLPropertyList provides dual view of the properties that you add. You get an alphabetic flat view as well as categorized view. The category attribute of a property can be specified at when the property is being added to the control. You can chose to display only one of the views of both views on a tabbed panel.
By default the control automatically refreshes when a new property is added. The automatic refreshing can be avoided by setting LockRefresh property to true before you start adding a bunch of properties. After you have added the properties you should set LockRefresh to false and call Refresh method of the control to reflect the changes in the view.
There are two ways of adding properties in VLPropertyList control:
- Using Add method of Properties collection (accessible as VLPropertyList1.Properties)
- For adding properties of COM objects that implement IDispatch interface, you can use LoadObjectProperties method.
