SftTree/DLL 7.5 - Tree Control
SftBox/OCX 5.0 - Combo Box Control
SftButton/OCX 3.0 - Button Control
SftMask/OCX 7.0 - Masked Edit Control
SftTabs/OCX 6.5 - Tab Control (VB6 only)
SftTree/OCX 7.5 - Tree Control
SftPrintPreview/DLL 2.0 - Print Preview Control (discontinued)
SftTree/DLL 7.5 - Tree Control
SftBox/OCX 5.0 - Combo Box Control
SftButton/OCX 3.0 - Button Control
SftDirectory 3.5 - File/Folder Control (discontinued)
SftMask/OCX 7.0 - Masked Edit Control
SftOptions 1.0 - Registry/INI Control (discontinued)
SftPrintPreview/OCX 1.0 - Print Preview Control (discontinued)
SftTabs/OCX 6.5 - Tab Control (VB6 only)
SftTree/OCX 7.5 - Tree Control
SftTabs/NET 6.0 - Tab Control (discontinued)
SftTree/NET 2.0 - Tree Control
This sample illustrates images, checkboxes, radiobuttons, more.
The source code is located at C:\Program Files (x86)\Softelvdm\SftBox OCX 5.0\Samples\VB6\Pictures\Form1.frm or C:\Program Files\Softelvdm\SftBox OCX 5.0\Samples\VB6\Pictures\Form1.frm (on 32-bit Windows versions).
Option Explicit
Dim SortDirection As Boolean
Private Sub CopyImageFromCurrentItem()
Dim ItemIndex As Integer
Dim Img As SftPictureObject
ItemIndex = SftBox1.Items.Selection
If ItemIndex < 0 Then Exit Sub
' don't use images that are too large in the other areas
Set Img = SftBox1.Cell(ItemIndex, 0).Image
If Img.ActualHeight <= 20 And Img.ActualWidth <= 20 Then
SftBox1.RowColumnHeader.Image = Img
SftBox1.Header(1).Image = Img
Else
SftBox1.RowColumnHeader.Image.Clear
SftBox1.Header(1).Image.Clear
End If
End Sub
Private Sub ToggleImage(Img As SftPictureObject)
Select Case Img.Appearance
Case sftImageCheckboxNo
Img.Appearance = sftImageCheckboxYes
Case sftImageCheckboxYes
Img.Appearance = sftImageCheckboxNo
Case sftImageCheckboxUnknown
Img.Appearance = sftImageCheckboxNo
Case sftImageCheckboxNoDisabled
Img.Appearance = sftImageCheckboxYesDisabled
Case sftImageCheckboxYesDisabled
Img.Appearance = sftImageCheckboxNoDisabled
Case sftImageCheckboxUnknownDisabled
Img.Appearance = sftImageCheckboxNoDisabled
Case sftImageRadioButtonNo
Img.Appearance = sftImageRadioButtonYes
Case sftImageRadioButtonYes
Img.Appearance = sftImageRadioButtonNo
Case sftImageRadioButtonNoDisabled
Img.Appearance = sftImageRadioButtonYesDisabled
Case sftImageRadioButtonYesDisabled
Img.Appearance = sftImageRadioButtonNoDisabled
Case sftImageUp
Img.Appearance = sftImageDown
Case sftImageUpDisabled
Img.Appearance = sftImageDownDisabled
Case sftImageDown
Img.Appearance = sftImageUp
Case sftImageDownDisabled
Img.Appearance = sftImageUpDisabled
Case sftImageSortAsc
Img.Appearance = sftImageSortDesc
Case sftImageSortAscDisabled
Img.Appearance = sftImageSortDescDisabled
Case sftImageSortDesc
Img.Appearance = sftImageSortAsc
Case sftImageSortDescDisabled
Img.Appearance = sftImageSortAscDisabled
Case Else
' nothing
End Select
End Sub
Private Sub PropagateImage(ByVal ItemIndex As Integer, Img As SftPictureObject)
' don't use images that are too large in the other areas
If Img.ActualHeight <= 20 And Img.ActualWidth < 20 Then
SftBox1.Item(ItemIndex).Image = Img
SftBox1.Item(ItemIndex).LabelImage = Img
SftBox1.Item(ItemIndex).RowHeader.Image = Img
End If
End Sub
Private Sub UpdatePictures(ByVal ItemIndex As Integer, ByVal Pic As StdPicture, ByVal Align As SftBoxHAlignConstants)
Dim C As SftBoxCell
Set C = SftBox1.Cell(ItemIndex, 0)
Set C.Image.Picture = Pic
C.ImageHAlign = Align
PropagateImage ItemIndex, C.Image
End Sub
Private Sub UpdateImages(ByVal ItemIndex As Integer, ByVal Pic As LONG_PTR, ByVal Align As SftBoxHAlignConstants)
Dim C As SftBoxCell
Set C = SftBox1.Cell(ItemIndex, 0)
C.Image.SetImage Pic, True
C.ImageHAlign = Align
PropagateImage ItemIndex, C.Image
End Sub
Private Sub UpdateImageList(ByVal ItemIndex As Integer, ByVal ImageListControl As ImageList, ByVal I As Integer, ByVal Align As SftBoxHAlignConstants)
Dim C As SftBoxCell
Set C = SftBox1.Cell(ItemIndex, 0)
C.Image.SetImageList ImageListControl, I
C.ImageHAlign = Align
PropagateImage ItemIndex, C.Image
End Sub
Private Sub UpdateColor(ByVal ItemIndex As Integer, ByVal Clr As OLE_COLOR, ByVal Align As SftBoxHAlignConstants)
Dim C As SftBoxCell
Set C = SftBox1.Cell(ItemIndex, 0)
C.Image.SetColorSample Clr, vbBlack
C.Image.Width = 12
C.Image.Height = 12
C.ImageHAlign = Align
PropagateImage ItemIndex, C.Image
End Sub
Private Sub AddColor(ByVal Text As String, ByVal Clr As OLE_COLOR)
Dim I As Integer
I = SftBox1.Items.Add(Text)
SftBox1.Item(I).Level = 2
UpdateColor I, Clr, halignSftBoxRight
End Sub
Private Sub UpdateBuiltinImage(ByVal ItemIndex As Integer, ByVal Style As SftPictureImageConstants, ByVal wPix As Integer, ByVal hPix As Integer, ByVal Align As SftBoxHAlignConstants)
Dim C As SftBoxCell
Set C = SftBox1.Cell(ItemIndex, 0)
C.Image.Appearance = Style
C.Image.Width = wPix
C.Image.Height = hPix
C.ImageHAlign = Align
PropagateImage ItemIndex, C.Image
End Sub
Private Sub AddBuiltinImage(ByVal Text As String, ByVal Style As SftPictureImageConstants, ByVal wPix As Integer, ByVal hPix As Integer)
Dim I As Integer
I = SftBox1.Items.Add(Text)
SftBox1.Item(I).Level = 2
UpdateBuiltinImage I, Style, wPix, hPix, halignSftBoxRight
End Sub
Private Sub ShowSortDirection(ByVal Ascending As Boolean)
If Ascending Then
SftBox1.Header(0).Image.Appearance = sftImageSortAsc
Else
SftBox1.Header(0).Image.Appearance = sftImageSortDesc
End If
SortDirection = Ascending
End Sub
Private Sub SetSortDirection(ByVal NewDirection As Boolean)
ShowSortDirection NewDirection
If NewDirection Then
SftBox1.Items.Sort -1, 0, sortSftBoxAscending
Else
SftBox1.Items.Sort -1, 0, sortSftBoxDescending
End If
End Sub
Private Sub Command1_Click()
End
End Sub
Private Sub Form_Load()
Dim ItemIndex As Integer, I As Integer
Dim C As Integer, Count As Integer
SortDirection = False
With SftBox1
ItemIndex = .Items.Add("Supported Picture Types")
.Cell(ItemIndex, 1).Text = "SftBox/OCX supports numerous image types, such as GDI+ images, bitmaps, icons, ImageLists and also offers numerous built-in images."
' add GDI+ samples
ItemIndex = .Items.Add("GDI+ Images")
.Item(ItemIndex).Level = 1
.Cell(ItemIndex, 1).Text = "All GDI+ images are supported, like GIF, JPEG, Exif, PNG, TIFF and device-independent bitmaps (up to 64bpp) with semi-transparent and translucent areas."
I = .Items.Add("PNG Sample with alpha-channel for translucent edges")
.Item(I).Level = 2
Dim PicturePNG1 As LONG_PTR
PicturePNG1 = SftBox1.LoadGDIPlusImage(App.Path + "\pic_warn_32.png", False)
UpdateImages I, PicturePNG1, halignSftBoxRight
I = .Items.Add("Another PNG Sample with alpha-channel for translucent edges")
.Item(I).Level = 2
Dim PicturePNG2 As LONG_PTR
PicturePNG2 = SftBox1.LoadGDIPlusImage(App.Path + "\pic_world_48.png", False)
UpdateImages I, PicturePNG2, halignSftBoxRight
' add bitmap samples
ItemIndex = .Items.Add("Bitmaps")
.Item(ItemIndex).Level = 1
.Cell(ItemIndex, 1).Text = "Bitmaps can be of varying sizes and also support Bitmap Transparency, which allows the background to show through the image (in areas selected by the bitmap designer)."
I = .Items.Add("Large Bitmap")
.Item(I).Level = 2
UpdatePictures I, PictureLogo, halignSftBoxRight
I = .Items.Add("Various bitmap sizes")
.Item(I).Level = 2
UpdatePictures I, PictureSmallBitmap, halignSftBoxRight
' add icon samples
ItemIndex = .Items.Add("Icons")
.Item(ItemIndex).Level = 1
.Cell(ItemIndex, 1).Text = "The supported icons can be stardard size icons (32x32) or any other size supported by the operating system."
I = .Items.Add("Standard Icon (32x32)")
.Item(I).Level = 2
UpdatePictures I, PictureIcon, halignSftBoxRight
I = .Items.Add("Any other size")
.Item(I).Level = 2
UpdatePictures I, PictureIconSmall, halignSftBoxRight
' add imagelist samples
ItemIndex = .Items.Add("ImageLists")
.Item(ItemIndex).Level = 1
.Cell(ItemIndex, 1).Text = "Complete ImageList support simplifies bitmap handling and can avoid the limited resource availability on earlier Windows versions."
Count = ImageList1.ListImages.Count
For C = 1 To Count
I = .Items.Add("Image " & C)
.Item(I).Level = 2
UpdateImageList I, ImageList1, C, halignSftBoxRight
Next
' add color samples
ItemIndex = .Items.Add("Color Samples")
.Item(ItemIndex).Level = 1
.Cell(ItemIndex, 1).Text = "Using the built-in color sample image, simple color selection can easily be implemented. Color samples can display all colors available."
AddColor "Black", vbBlack
AddColor "Blue", vbBlue
AddColor "Cyan", vbCyan
AddColor "Green", vbGreen
AddColor "Magenta", vbMagenta
AddColor "Red", vbRed
AddColor "White", vbWhite
AddColor "Yellow", vbYellow
AddColor "3DDKSHADOW - Dark shadow for 3D elements", vb3DDKShadow
AddColor "3DFACE - Face color for 3D elements", vb3DFace
AddColor "3DHILIGHT - Edges facing the light source", vb3DHighlight
AddColor "3DLIGHT - Edges facing the light source", vb3DLight
AddColor "3DSHADOW - Edges facing away from the light source", vb3DShadow
AddColor "INFOBK - Background color for tooltip controls", vbInfoBackground
AddColor "INFOTEXT - Text color for tooltip controls", vbInfoText
AddColor "MENUTEXT - Text in menus", vbMenuText
AddColor "ACTIVEBORDER - Active window border", vbActiveBorder
AddColor "ACTIVECAPTION - Active window caption", vbActiveTitleBar
AddColor "APPWORKSPACE - Background color MDI applications", vbApplicationWorkspace
AddColor "BACKGROUND - Desktop", vbDesktop
AddColor "BTNFACE - Face shading on push buttons", vbButtonFace
AddColor "BTNHILIGHT - Highlight color for buttons", vb3DHighlight
AddColor "BTNSHADOW - Edge shading on push buttons", vbButtonShadow
AddColor "BTNTEXT - Text on push buttons", vbButtonText
AddColor "CAPTIONTEXT - Text in caption", vbTitleBarText
AddColor "GRAYTEXT - Grayed (disabled) text", vbGrayText
AddColor "HIGHLIGHT - Selected Item(s)", vbHighlight
AddColor "HIGHLIGHTTEXT - Text of selected item(s)", vbHighlightText
AddColor "INACTIVEBORDER - Inactive window border", vbInactiveBorder
AddColor "INACTIVECAPTION - Inactive window caption", vbInactiveTitleBar
AddColor "INACTIVECAPTIONTEXT - Inactive caption text color", vbInactiveCaptionText
AddColor "MENU - Menu background", vbMenuBar
AddColor "SCROLLBAR - Scroll bar gray area", vbScrollBars
AddColor "WINDOW - Window background", vbWindowBackground
AddColor "WINDOWFRAME - Window frame", vbWindowFrame
AddColor "WINDOWTEXT - Text in windows", vbWindowText
' add predefined image samples
ItemIndex = .Items.Add("Predefined (Built-in) Pictures")
.Cell(ItemIndex, 1).Text = "Predefined images are available for commonly used items, such as check boxes, radio buttons, sort direction indicators and more..."
ItemIndex = .Items.Add("Check Boxes - Honors Windows Themes")
.Item(ItemIndex).Level = 1
AddBuiltinImage "Enabled, Selected Check Box", sftImageCheckboxYes, 14, 14
AddBuiltinImage "Disabled, Selected Check Box", sftImageCheckboxYesDisabled, 14, 14
AddBuiltinImage "Enabled Check Box", sftImageCheckboxNo, 14, 14
AddBuiltinImage "Disabled Check Box", sftImageCheckboxNoDisabled, 14, 14
AddBuiltinImage "Enabled, Unknown Check Box", sftImageCheckboxUnknown, 14, 14
AddBuiltinImage "Disabled, Unknown Check Box", sftImageCheckboxUnknownDisabled, 14, 14
ItemIndex = .Items.Add("Radio Buttons - Honors Windows Themes")
.Item(ItemIndex).Level = 1
AddBuiltinImage "Enabled, Selected Radio Button", sftImageRadioButtonYes, 14, 14
AddBuiltinImage "Disabled, Selected Radio Button", sftImageRadioButtonYesDisabled, 14, 14
AddBuiltinImage "Enabled Radio Button", sftImageRadioButtonNo, 14, 14
AddBuiltinImage "Disabled Radio Button", sftImageRadioButtonNoDisabled, 14, 14
ItemIndex = .Items.Add("Up/Down Buttons - Honors Windows Themes")
.Item(ItemIndex).Level = 1
AddBuiltinImage "Enabled Up Button", sftImageUp, 14, 14
AddBuiltinImage "Disabled Up Button", sftImageUpDisabled, 14, 14
AddBuiltinImage "Enabled Down Button", sftImageDown, 14, 14
AddBuiltinImage "Disabled Down Button", sftImageDownDisabled, 14, 14
ItemIndex = .Items.Add("Sort Direction Indicator")
.Item(ItemIndex).Level = 1
AddBuiltinImage "Enabled Ascending Indicator", sftImageSortAsc, 8, 8
AddBuiltinImage "Disabled Ascending Indicator", sftImageSortAscDisabled, 8, 8
AddBuiltinImage "Enabled Descending Indicator", sftImageSortDesc, 8, 8
AddBuiltinImage "Disabled Descending Indicator", sftImageSortDescDisabled, 8, 8
.RowHeaders.MakeOptimal 0 ' make the row headers optimal
.Column(0).MakeOptimal 0 ' make the first column optimal
.Items.RecalcHorizontalExtent 0 ' update horizontal scroll bar
.Items.Selection = 0
CopyImageFromCurrentItem
End With
SftBox1.DropDown.Dropped = True
End Sub
Private Sub ExpandCollapseItem(ByVal ItemIndex As Long, ByVal Shift As Integer)
Dim Item As SftBoxItem
Set Item = SftBox1.Item(ItemIndex)
If Item.Expanded Then
Item.Collapse True
Else
Item.Expand True, (Shift And constSftBoxCtrlMask)
End If
End Sub
Private Sub SftBox1_ItemClick(ByVal Part As SftBoxLib50.SftBoxPortionConstants, ByVal AreaType As SftBoxLib50.SftBoxAreaConstants, ByVal ItemIndex As Long, ByVal ColNum As Integer, ByVal Button As Integer, ByVal Shift As Integer)
Select Case AreaType
Case areaSftBoxColumn
If ColNum = 0 Then
SetSortDirection Not SortDirection
End If
Case areaSftBoxCellGraphic
If Part = partSftBoxDropDown Then SftBox1.DropDown.Suppress ' Make sure we don't close the drop down
ToggleImage SftBox1.Cell(ItemIndex, ColNum).Image
Case areaSftBoxItem
If Part = partSftBoxDropDown Then SftBox1.DropDown.Suppress ' Make sure we don't close the drop down
ToggleImage SftBox1.Item(ItemIndex).Image
Case areaSftBoxLabel
If Part = partSftBoxDropDown Then SftBox1.DropDown.Suppress ' Make sure we don't close the drop down
ToggleImage SftBox1.Item(ItemIndex).LabelImage
Case areaSftBoxButton
If Part = partSftBoxDropDown Then SftBox1.DropDown.Suppress ' Make sure we don't close the drop down
ExpandCollapseItem ItemIndex, Shift
End Select
End Sub
Private Sub SftBox1_ItemDblClk(ByVal Part As SftBoxLib50.SftBoxPortionConstants, ByVal AreaType As SftBoxLib50.SftBoxAreaConstants, ByVal ItemIndex As Long, ByVal ColNum As Integer, ByVal Button As Integer, ByVal Shift As Integer)
Select Case AreaType
Case areaSftBoxColumnRes
SftBox1.Column(ColNum).MakeOptimal 0 ' Make column width optimal
SftBox1.Items.RecalcHorizontalExtent 0 ' Update horizontal scroll bar
Case areaSftBoxColumn
If ColNum = 0 Then
SetSortDirection Not SortDirection
End If
Case areaSftBoxCellGraphic
If Part = partSftBoxDropDown Then SftBox1.DropDown.Suppress ' Make sure we don't close the drop down
ToggleImage SftBox1.Cell(ItemIndex, ColNum).Image
Case areaSftBoxLabel
If Part = partSftBoxDropDown Then SftBox1.DropDown.Suppress ' Make sure we don't close the drop down
ToggleImage SftBox1.Item(ItemIndex).LabelImage
Case areaSftBoxItem
If Part = partSftBoxDropDown Then SftBox1.DropDown.Suppress ' Make sure we don't close the drop down
If SftBox1.Item(ItemIndex).Expandable Then
ExpandCollapseItem ItemIndex, Shift
Else
ToggleImage SftBox1.Item(ItemIndex).Image
End If
Case areaSftBoxButton, areaSftBoxCell
If Part = partSftBoxDropDown Then SftBox1.DropDown.Suppress ' Make sure we don't close the drop down
ExpandCollapseItem ItemIndex, Shift
End Select
End Sub
Private Sub SftBox1_SelectionChange()
CopyImageFromCurrentItem
End Sub