Hide

SftPrintPreview/OCX 1.0 - ActiveX Print Preview Control

Display
Print

PreviewSftTree Sample (VB.NET)

This sample illustrates using a SftTree/OCX control.

The source code is located at C:\Program Files (x86)\Softelvdm\SftPrintPreview OCX 1.0\Samples\Visual Studio - VB.NET\PreviewSftTree\Form1.vb or C:\Program Files\Softelvdm\SftPrintPreview OCX 1.0\Samples\Visual Studio - VB.NET\PreviewSftTree\Form1.vb (on 32-bit Windows versions).

Private Sub MenuExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuExit.Click
    Application.Exit()
End Sub

Private Sub CopyImageFromCurrentItem()

    Dim ItemIndex As Integer
    Dim Img As SftPictureObject

    ItemIndex = AxSftTree1.Items.Current
    If ItemIndex < 0 Then Exit Sub

    ' don't use images that are too large in the other areas
    Img = AxSftTree1.get_Cell(ItemIndex, 0).Image
    If Img.ActualHeight <= 20 And Img.ActualWidth <= 20 Then
        AxSftTree1.RowColumnHeader.Image = Img
        AxSftTree1.get_Header(1).Image = Img
    Else
        AxSftTree1.RowColumnHeader.Image.Clear()
        AxSftTree1.get_Header(1).Image.Clear()
    End If
End Sub

Private Sub ToggleImage(ByVal Img As SftPictureObject)

    Select Case Img.Appearance
        Case SftPictureImageConstants.sftImageCheckboxNo
            Img.Appearance = SftPictureImageConstants.sftImageCheckboxYes
        Case SftPictureImageConstants.sftImageCheckboxYes
            Img.Appearance = SftPictureImageConstants.sftImageCheckboxNo
        Case SftPictureImageConstants.sftImageCheckboxUnknown
            Img.Appearance = SftPictureImageConstants.sftImageCheckboxNo
        Case SftPictureImageConstants.sftImageCheckboxNoDisabled
            Img.Appearance = SftPictureImageConstants.sftImageCheckboxYesDisabled
        Case SftPictureImageConstants.sftImageCheckboxYesDisabled
            Img.Appearance = SftPictureImageConstants.sftImageCheckboxNoDisabled
        Case SftPictureImageConstants.sftImageCheckboxUnknownDisabled
            Img.Appearance = SftPictureImageConstants.sftImageCheckboxNoDisabled
        Case SftPictureImageConstants.sftImageRadioButtonNo
            Img.Appearance = SftPictureImageConstants.sftImageRadioButtonYes
        Case SftPictureImageConstants.sftImageRadioButtonYes
            Img.Appearance = SftPictureImageConstants.sftImageRadioButtonNo
        Case SftPictureImageConstants.sftImageRadioButtonNoDisabled
            Img.Appearance = SftPictureImageConstants.sftImageRadioButtonYesDisabled
        Case SftPictureImageConstants.sftImageRadioButtonYesDisabled
            Img.Appearance = SftPictureImageConstants.sftImageRadioButtonNoDisabled
        Case SftPictureImageConstants.sftImageUp
            Img.Appearance = SftPictureImageConstants.sftImageDown
        Case SftPictureImageConstants.sftImageUpDisabled
            Img.Appearance = SftPictureImageConstants.sftImageDownDisabled
        Case SftPictureImageConstants.sftImageDown
            Img.Appearance = SftPictureImageConstants.sftImageUp
        Case SftPictureImageConstants.sftImageDownDisabled
            Img.Appearance = SftPictureImageConstants.sftImageUpDisabled
        Case SftPictureImageConstants.sftImageSortAsc
            Img.Appearance = SftPictureImageConstants.sftImageSortDesc
        Case SftPictureImageConstants.sftImageSortAscDisabled
            Img.Appearance = SftPictureImageConstants.sftImageSortDescDisabled
        Case SftPictureImageConstants.sftImageSortDesc
            Img.Appearance = SftPictureImageConstants.sftImageSortAsc
        Case SftPictureImageConstants.sftImageSortDescDisabled
            Img.Appearance = SftPictureImageConstants.sftImageSortAscDisabled
    End Select
End Sub

Private Sub PropagateImage(ByVal ItemIndex As Integer, ByVal Img As SftPictureObject)

    ' don't use images that are too large in the other areas
    If Img.ActualHeight <= 20 And Img.ActualWidth < 20 Then
        AxSftTree1.get_Item(ItemIndex).Image = Img
        AxSftTree1.get_Item(ItemIndex).LabelImage = Img
        AxSftTree1.get_Item(ItemIndex).RowHeader.Image = Img
    End If
End Sub

Private Sub UpdatePictures(ByVal ItemIndex As Integer, ByVal IPic As stdole.IPictureDisp, ByVal Align As SftTreeHAlignConstants)
    Dim C As SftTreeCell
    C = AxSftTree1.get_Cell(ItemIndex, 0)
    C.Image.Picture = IPic
    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 SftTreeHAlignConstants)
    Dim C As SftTreeCell
    C = AxSftTree1.get_Cell(ItemIndex, 0)
    C.Image.SetImageListH(ImageListControl.Handle.ToInt32(), i)
    C.ImageHAlign = Align
    PropagateImage(ItemIndex, C.Image)
End Sub

Private Sub UpdateColor(ByVal ItemIndex As Integer, ByVal Clr As System.Drawing.Color, ByVal Align As SftTreeHAlignConstants)
    Dim C As SftTreeCell
    C = AxSftTree1.get_Cell(ItemIndex, 0)
    C.Image.SetColorSample(Convert.ToUInt32(ColorTranslator.ToOle(Clr) And &HFFFFFFFF&), _
                            Convert.ToUInt32(ColorTranslator.ToOle(Color.Black) And &HFFFFFFFF&))
    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 Color)
    Dim i As Integer
    i = AxSftTree1.Items.Add(Text)
    AxSftTree1.get_Item(i).Level = 2
    UpdateColor(i, Clr, SftTreeHAlignConstants.halignSftTreeRight)
End Sub

Private Sub UpdateBuiltinImage(ByVal ItemIndex As Integer, ByVal Style As SftPictureImageConstants, ByVal wPix As Integer, ByVal hPix As Integer, ByVal Align As SftTreeHAlignConstants)
    Dim C As SftTreeCell
    C = AxSftTree1.get_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 = AxSftTree1.Items.Add(Text)
    AxSftTree1.get_Item(i).Level = 2
    UpdateBuiltinImage(i, Style, wPix, hPix, SftTreeHAlignConstants.halignSftTreeRight)
End Sub

Private Sub ShowSortDirection(ByVal Ascending As Boolean)
    If (Ascending) Then
        AxSftTree1.get_Header(0).Image.Appearance = SftPictureImageConstants.sftImageSortAsc
    Else
        AxSftTree1.get_Header(0).Image.Appearance = SftPictureImageConstants.sftImageSortDesc
    End If
    m_SortDirection = Ascending
End Sub

Private Sub SetSortDirection(ByVal NewDirection As Boolean)
    ShowSortDirection(NewDirection)
    If NewDirection Then
        AxSftTree1.Items.SortDependents(-1, 0, SftTreeSortTypeConstants.sortSftTreeAscending)
    Else
        AxSftTree1.Items.SortDependents(-1, 0, SftTreeSortTypeConstants.sortSftTreeDescending)
    End If
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    AxSftPrintPreview1.Dock = DockStyle.Fill
    AxSftTree1.Dock = DockStyle.Fill

    AxSftTree1.BulkUpdate = True

    Dim Counter As Integer
    For Counter = 1 To 10
        Dim ItemIndex As Integer
        ItemIndex = AxSftTree1.Items.Add("Supported Picture Types")
        AxSftTree1.get_Cell(ItemIndex, 1).Text = "SftTree/OCX supports numerous image types, such as bitmaps, icons, ImageLists and also offers numerous built-in images."

        ' add bitmap samples

        ItemIndex = AxSftTree1.Items.Add("Bitmaps")
        AxSftTree1.get_Item(ItemIndex).Level = 1
        AxSftTree1.get_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)."

        Dim I As Integer
        I = AxSftTree1.Items.Add("Large Bitmap")
        AxSftTree1.get_Item(I).Level = 2
        UpdatePictures(I, OLECvt.ToIPictureDisp(PictureLogo.Image), SftTreeHAlignConstants.halignSftTreeRight)

        I = AxSftTree1.Items.Add("Various bitmap sizes")
        AxSftTree1.get_Item(I).Level = 2
        UpdatePictures(I, OLECvt.ToIPictureDisp(PictureSmallBitmap.Image), SftTreeHAlignConstants.halignSftTreeRight)

        ' add icon samples

        ItemIndex = AxSftTree1.Items.Add("Icons")
        AxSftTree1.get_Item(ItemIndex).Level = 1
        AxSftTree1.get_Cell(ItemIndex, 1).Text = "The supported icons can be stardard size icons (32x32) or any other size supported by the operating system."

        I = AxSftTree1.Items.Add("Standard Icon (32x32)")
        AxSftTree1.get_Item(I).Level = 2
        UpdatePictures(I, OLECvt.ToIPictureDisp(PictureIcon.Image), SftTreeHAlignConstants.halignSftTreeRight)

        I = AxSftTree1.Items.Add("Any other size")
        AxSftTree1.get_Item(I).Level = 2
        UpdatePictures(I, OLECvt.ToIPictureDisp(PictureIconSmall.Image), SftTreeHAlignConstants.halignSftTreeRight)

        ' add imagelist samples

        ItemIndex = AxSftTree1.Items.Add("ImageLists")
        AxSftTree1.get_Item(ItemIndex).Level = 1
        AxSftTree1.get_Cell(ItemIndex, 1).Text = "Complete ImageList support simplifies bitmap handling and can avoid the limited resource availability on earlier Windows versions."

        Dim C As Integer
        For C = 0 To imageList1.Images.Count - 1
            I = AxSftTree1.Items.Add("Image " & C)
            AxSftTree1.get_Item(I).Level = 2
            UpdateImageList(I, imageList1, C, SftTreeHAlignConstants.halignSftTreeRight)
        Next

        ' add color samples

        ItemIndex = AxSftTree1.Items.Add("Color Samples")
        AxSftTree1.get_Item(ItemIndex).Level = 1
        AxSftTree1.get_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", System.Drawing.Color.Black)
        AddColor("Blue", System.Drawing.Color.Blue)
        AddColor("Cyan", System.Drawing.Color.Cyan)
        AddColor("Green", System.Drawing.Color.Lime)
        AddColor("Magenta", System.Drawing.Color.Magenta)
        AddColor("Red", System.Drawing.Color.Red)
        AddColor("White", System.Drawing.Color.White)
        AddColor("Yellow", System.Drawing.Color.Yellow)

        AddColor("3DDKSHADOW - Dark shadow for 3D elements", System.Drawing.SystemColors.ControlDarkDark)
        AddColor("3DFACE - Face color for 3D elements", System.Drawing.SystemColors.Control)
        AddColor("3DHILIGHT - Edges facing the light source", System.Drawing.SystemColors.ControlLightLight)
        AddColor("3DLIGHT - Edges facing the light source", System.Drawing.SystemColors.ControlLight)
        AddColor("3DSHADOW - Edges facing away from the light source", System.Drawing.SystemColors.ControlDark)
        AddColor("INFOBK - Background color for tooltip controls", System.Drawing.SystemColors.Info)
        AddColor("INFOTEXT - Text color for tooltip controls", System.Drawing.SystemColors.InfoText)
        AddColor("MENUTEXT - Text in menus", System.Drawing.SystemColors.MenuText)
        AddColor("ACTIVEBORDER - Active window border", System.Drawing.SystemColors.ActiveBorder)
        AddColor("ACTIVECAPTION - Active window caption", System.Drawing.SystemColors.ActiveCaption)
        AddColor("APPWORKSPACE - Background color MDI applications", System.Drawing.SystemColors.AppWorkspace)
        AddColor("BACKGROUND - Desktop", System.Drawing.SystemColors.Desktop)
        AddColor("BTNFACE - Face shading on push buttons", System.Drawing.SystemColors.Control)
        AddColor("BTNHILIGHT - Highlight color for buttons", System.Drawing.SystemColors.ControlLightLight)
        AddColor("BTNSHADOW - Edge shading on push buttons", System.Drawing.SystemColors.ControlDark)
        AddColor("BTNTEXT - Text on push buttons", System.Drawing.SystemColors.ControlText)
        AddColor("CAPTIONTEXT - Text in caption", System.Drawing.SystemColors.ActiveCaptionText)
        AddColor("GRAYTEXT - Grayed (disabled) text", System.Drawing.SystemColors.GrayText)
        AddColor("HIGHLIGHT - Selected Item(s)", System.Drawing.SystemColors.Highlight)
        AddColor("HIGHLIGHTTEXT - Text of selected item(s)", System.Drawing.SystemColors.HighlightText)
        AddColor("INACTIVEBORDER - Inactive window border", System.Drawing.SystemColors.InactiveBorder)
        AddColor("INACTIVECAPTION - Inactive window caption", System.Drawing.SystemColors.InactiveCaption)
        AddColor("INACTIVECAPTIONTEXT - Inactive caption text color", System.Drawing.SystemColors.InactiveCaptionText)
        AddColor("MENU - Menu background", System.Drawing.SystemColors.Menu)
        AddColor("SCROLLBAR - Scroll bar gray area", System.Drawing.SystemColors.ScrollBar)
        AddColor("WINDOW - Window background", System.Drawing.SystemColors.Window)
        AddColor("WINDOWFRAME - Window frame", System.Drawing.SystemColors.WindowFrame)
        AddColor("WINDOWTEXT - Text in windows", System.Drawing.SystemColors.WindowText)

        ' add predefined image samples

        ItemIndex = AxSftTree1.Items.Add("Predefined (Built-in) Pictures")
        AxSftTree1.get_Cell(ItemIndex, 1).Text = "Predefined images are available for commonly used items, such as check boxes, radio buttons, sort direction indicators and more..."

        ItemIndex = AxSftTree1.Items.Add("Check Boxes - Honors Windows Themes")
        AxSftTree1.get_Item(ItemIndex).Level = 1

        AddBuiltinImage("Enabled, Selected Check Box", SftPictureImageConstants.sftImageCheckboxYes, 14, 14)
        AddBuiltinImage("Disabled, Selected Check Box", SftPictureImageConstants.sftImageCheckboxYesDisabled, 14, 14)
        AddBuiltinImage("Enabled Check Box", SftPictureImageConstants.sftImageCheckboxNo, 14, 14)
        AddBuiltinImage("Disabled Check Box", SftPictureImageConstants.sftImageCheckboxNoDisabled, 14, 14)
        AddBuiltinImage("Enabled, Unknown Check Box", SftPictureImageConstants.sftImageCheckboxUnknown, 14, 14)
        AddBuiltinImage("Disabled, Unknown Check Box", SftPictureImageConstants.sftImageCheckboxUnknownDisabled, 14, 14)

        ItemIndex = AxSftTree1.Items.Add("Radio Buttons - Honors Windows Themes")
        AxSftTree1.get_Item(ItemIndex).Level = 1

        AddBuiltinImage("Enabled, Selected Radio Button", SftPictureImageConstants.sftImageRadioButtonYes, 14, 14)
        AddBuiltinImage("Disabled, Selected Radio Button", SftPictureImageConstants.sftImageRadioButtonYesDisabled, 14, 14)
        AddBuiltinImage("Enabled Radio Button", SftPictureImageConstants.sftImageRadioButtonNo, 14, 14)
        AddBuiltinImage("Disabled Radio Button", SftPictureImageConstants.sftImageRadioButtonNoDisabled, 14, 14)

        ItemIndex = AxSftTree1.Items.Add("Up/Down Buttons - Honors Windows Themes")
        AxSftTree1.get_Item(ItemIndex).Level = 1

        AddBuiltinImage("Enabled Up Button", SftPictureImageConstants.sftImageUp, 14, 14)
        AddBuiltinImage("Disabled Up Button", SftPictureImageConstants.sftImageUpDisabled, 14, 14)
        AddBuiltinImage("Enabled Down Button", SftPictureImageConstants.sftImageDown, 14, 14)
        AddBuiltinImage("Disabled Down Button", SftPictureImageConstants.sftImageDownDisabled, 14, 14)

        ItemIndex = AxSftTree1.Items.Add("Sort Direction Indicator")
        AxSftTree1.get_Item(ItemIndex).Level = 1

        AddBuiltinImage("Enabled Ascending Indicator", SftPictureImageConstants.sftImageSortAsc, 8, 8)
        AddBuiltinImage("Disabled Ascending Indicator", SftPictureImageConstants.sftImageSortAscDisabled, 8, 8)
        AddBuiltinImage("Enabled Descending Indicator", SftPictureImageConstants.sftImageSortDesc, 8, 8)
        AddBuiltinImage("Disabled Descending Indicator", SftPictureImageConstants.sftImageSortDescDisabled, 8, 8)

    Next

    AxSftTree1.BulkUpdate = False

    AxSftTree1.RowHeaders.MakeOptimal() ' make the row headers optimal
    AxSftTree1.get_Column(0).MakeOptimal() ' make the first column optimal
    AxSftTree1.Items.RecalcHorizontalExtent() ' update horizontal scroll bar

    AxSftTree1.get_Item(0).Selected = True
    AxSftTree1.Items.Current = 0

    CopyImageFromCurrentItem()

    ' Connect the tree control to the print preview control
    AxSftPrintPreview1.ContentProvider = AxSftTree1.hWnd

End Sub

Private Sub AxSftTree1_ItemClick(ByVal sender As Object, ByVal e As AxSftTreeLib65._DSftTreeEvents_ItemClickEvent) Handles axSftTree1.ItemClick
    Dim AreaType As SftTreeAreaTypeConstants
    AreaType = e.areaType
    If AreaType = SftTreeAreaTypeConstants.constSftTreeExpandAll Then
        axSftTree1.get_Item(e.itemIndex).Expand(True, True)
    ElseIf AreaType = SftTreeAreaTypeConstants.constSftTreeColumn And e.colIndex = 0 Then
        SetSortDirection(Not m_SortDirection)
    ElseIf AreaType = SftTreeAreaTypeConstants.constSftTreeCellGraphic Then
        ToggleImage(axSftTree1.get_Cell(e.itemIndex, e.colIndex).Image)
    ElseIf AreaType = SftTreeAreaTypeConstants.constSftTreeItem Then
        ToggleImage(axSftTree1.get_Item(e.itemIndex).Image)
    ElseIf AreaType = SftTreeAreaTypeConstants.constSftTreeLabel Then
        ToggleImage(axSftTree1.get_Item(e.itemIndex).LabelImage)
    End If
End Sub

Private Sub AxSftTree1_ItemDblClick(ByVal sender As Object, ByVal e As AxSftTreeLib65._DSftTreeEvents_ItemDblClickEvent) Handles axSftTree1.ItemDblClick
    Dim AreaType As SftTreeAreaTypeConstants
    AreaType = e.areaType
    If AreaType = SftTreeAreaTypeConstants.constSftTreeColumnRes Then
        axSftTree1.get_Column(e.colIndex).MakeOptimal() ' Make column width optimal
        axSftTree1.Items.RecalcHorizontalExtent() ' Update horizontal scroll bar
    ElseIf AreaType = SftTreeAreaTypeConstants.constSftTreeColumn And e.colIndex = 0 Then
        SetSortDirection(Not m_SortDirection)
    ElseIf AreaType = SftTreeAreaTypeConstants.constSftTreeCellGraphic Then
        ToggleImage(axSftTree1.get_Cell(e.itemIndex, e.colIndex).Image)
    End If
End Sub

Private Sub AxSftTree1_SelectionChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles axSftTree1.SelectionChange
    CopyImageFromCurrentItem()
End Sub

Private Sub MenuViewSftTree_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuViewSftTree.Click
    ' Show the tree control
    axSftTree1.Visible = True
    axSftTree1.Enabled = True
    axSftTree1.Width = Me.Width
    axSftTree1.Height = Me.Height
    axSftTree1.Focus()
    ' Disable & hide the print preview control
    axSftPrintPreview1.Visible = False
    axSftPrintPreview1.Enabled = False
End Sub

Private Sub MenuPrintPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuPrintPreview.Click
    ' Disable & hide the tree control
    axSftTree1.Visible = False
    axSftTree1.Enabled = False
    ' Show the print preview control
    axSftPrintPreview1.Enabled = True
    axSftPrintPreview1.Visible = True
    axSftPrintPreview1.Width = Me.Width
    axSftPrintPreview1.Height = Me.Height
    axSftPrintPreview1.Focus()
    ' In case the tree control changed, we have to reformat everything
    axSftPrintPreview1.Restart(SftPrintPreviewRestartConstants.restartSftPrintPreviewComplete)
End Sub

Private Sub AxSftPrintPreview1_PageSetupWanted(ByVal sender As Object, ByVal e As System.EventArgs) Handles axSftPrintPreview1.PageSetupWanted
    axSftPrintPreview1.PageSetup(0)
End Sub

Private Sub AxSftPrintPreview1_HelpWanted(ByVal sender As Object, ByVal e As AxSftPrintPreviewLib10._ISftPrintPreviewEvents_HelpWantedEvent) Handles axSftPrintPreview1.HelpWanted
    MessageBox.Show("Sorry, this sample doesn't offer a help file")
End Sub

Private Sub AxSftPrintPreview1_CloseWanted(ByVal sender As Object, ByVal e As System.EventArgs) Handles axSftPrintPreview1.CloseWanted
    MenuViewSftTree_Click(Me, New System.EventArgs)
End Sub

Last Updated 08/13/2020 - (email)
© 2024 Softel vdm, Inc.