Hide

SftPrintPreview/OCX 1.0 - ActiveX Print Preview Control

Display
Print

PreviewSftTree Sample (C#)

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 - CSharp\PreviewSftTree\Form1.cs or C:\Program Files\Softelvdm\SftPrintPreview OCX 1.0\Samples\Visual Studio - CSharp\PreviewSftTree\Form1.cs (on 32-bit Windows versions).

private void menuExit_Click(object sender, System.EventArgs e) {
    Application.Exit();
}

private void CopyImageFromCurrentItem()
{
    int ItemIndex;
    SftPictureObject Img;

    ItemIndex = axSftTree1.Items.Current;
    if (ItemIndex < 0)
        return;

    // don't use images that are too large in the other areas
    Img = axSftTree1.get_Cell(ItemIndex, 0).Image;
    if (Img.ActualHeight <= 20 && Img.ActualWidth <= 20) {
        axSftTree1.RowColumnHeader.Image = Img;
        axSftTree1.get_Header(1).Image = Img;
    } else {
        axSftTree1.RowColumnHeader.Image.Clear();
        axSftTree1.get_Header(1).Image.Clear();
    }
}

private void ToggleImage(SftPictureObject Img)
{
    switch (Img.Appearance) {
    case SftPictureImageConstants.sftImageCheckboxNo:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageCheckboxYes;
        break;
    case SftPictureImageConstants.sftImageCheckboxYes:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageCheckboxNo;
        break;
    case SftPictureImageConstants.sftImageCheckboxUnknown:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageCheckboxNo;
        break;
    case SftPictureImageConstants.sftImageCheckboxNoDisabled:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageCheckboxYesDisabled;
        break;
    case SftPictureImageConstants.sftImageCheckboxYesDisabled:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageCheckboxNoDisabled;
        break;
    case SftPictureImageConstants.sftImageCheckboxUnknownDisabled:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageCheckboxNoDisabled;
        break;
    case SftPictureImageConstants.sftImageRadioButtonNo:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageRadioButtonYes;
        break;
    case SftPictureImageConstants.sftImageRadioButtonYes:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageRadioButtonNo;
        break;
    case SftPictureImageConstants.sftImageRadioButtonNoDisabled:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageRadioButtonYesDisabled;
        break;
    case SftPictureImageConstants.sftImageRadioButtonYesDisabled:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageRadioButtonNoDisabled;
        break;
    case SftPictureImageConstants.sftImageUp:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageDown;
        break;
    case SftPictureImageConstants.sftImageUpDisabled:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageDownDisabled;
        break;
    case SftPictureImageConstants.sftImageDown:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageUp;
        break;
    case SftPictureImageConstants.sftImageDownDisabled:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageUpDisabled;
        break;
    case SftPictureImageConstants.sftImageSortAsc:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageSortDesc;
        break;
    case SftPictureImageConstants.sftImageSortAscDisabled:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageSortDescDisabled;
        break;
    case SftPictureImageConstants.sftImageSortDesc:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageSortAsc;
        break;
    case SftPictureImageConstants.sftImageSortDescDisabled:
        Img.Appearance = SftTreeLib65.SftPictureImageConstants.sftImageSortAscDisabled;
        break;
    }
}

private void PropagateImage(int ItemIndex, SftPictureObject Img)
{
    // don't use images that are too large in the other areas
    if (Img.ActualHeight <= 20 && Img.ActualWidth < 20) {
        axSftTree1.get_Item(ItemIndex).Image = Img;
        axSftTree1.get_Item(ItemIndex).LabelImage = Img;
        axSftTree1.get_Item(ItemIndex).RowHeader.Image = Img;
    }
}

private void UpdatePictures(int ItemIndex, stdole.IPictureDisp IPic, SftTreeHAlignConstants Align)
{
    SftTreeCell C = axSftTree1.get_Cell(ItemIndex, 0);
    C.Image.Picture = IPic;
    C.ImageHAlign = Align;
    PropagateImage(ItemIndex, C.Image);
}

private void UpdateImageList(int ItemIndex, ImageList ImageListControl, int i, SftTreeHAlignConstants Align)
{
    SftTreeCell C = axSftTree1.get_Cell(ItemIndex, 0);
    C.Image.SetImageListH((int) ImageListControl.Handle, (short) i);
    C.ImageHAlign = Align;
    PropagateImage(ItemIndex, C.Image);
}

private void UpdateColor(int ItemIndex, System.Drawing.Color Clr, SftTreeHAlignConstants Align)
{
    SftTreeCell C = axSftTree1.get_Cell(ItemIndex, 0);
    C.Image.SetColorSample((uint) ColorTranslator.ToOle(Clr), (uint) ColorTranslator.ToOle(Color.Black));
    C.Image.Width = 12;
    C.Image.Height = 12;
    C.ImageHAlign = Align;
    PropagateImage(ItemIndex, C.Image);
}

private void AddColor(string Text, Color Clr)
{
    int i;
    i = axSftTree1.Items.Add(Text);
    axSftTree1.get_Item(i).Level = 2;
    UpdateColor(i, Clr, SftTreeHAlignConstants.halignSftTreeRight);
}

private void UpdateBuiltinImage(int ItemIndex, SftPictureImageConstants Style, int wPix, int hPix, SftTreeHAlignConstants Align)
{
    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);
}

private void AddBuiltinImage(string Text, SftPictureImageConstants Style, int wPix, int hPix)
{
    int i = axSftTree1.Items.Add(Text);
    axSftTree1.get_Item(i).Level = 2;
    UpdateBuiltinImage(i, Style, wPix, hPix, SftTreeHAlignConstants.halignSftTreeRight);
}

private void ShowSortDirection(bool Ascending)
{
    if (Ascending)
        axSftTree1.get_Header(0).Image.Appearance = SftPictureImageConstants.sftImageSortAsc;
    else
        axSftTree1.get_Header(0).Image.Appearance = SftPictureImageConstants.sftImageSortDesc;
    m_SortDirection = Ascending;
}

private void SetSortDirection(bool NewDirection)
{
    ShowSortDirection(NewDirection);
    if (NewDirection)
        axSftTree1.Items.SortDependents(-1, 0, SftTreeSortTypeConstants.sortSftTreeAscending);
    else
        axSftTree1.Items.SortDependents(-1, 0, SftTreeSortTypeConstants.sortSftTreeDescending);
}

private void Form1_Load(object sender, System.EventArgs e) {
    axSftPrintPreview1.Dock = DockStyle.Fill;
    axSftTree1.Dock = DockStyle.Fill;

    axSftTree1.BulkUpdate = true;

    for (int counter = 0 ; counter < 10 ; ++counter)
    {

        int 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).";

        int 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.";

        for (int C = 0 ; C < imageList1.Images.Count ; ++C) {
            I = axSftTree1.Items.Add("Image " + C.ToString());
            axSftTree1.get_Item(I).Level = 2;
            UpdateImageList(I, imageList1, C, SftTreeHAlignConstants.halignSftTreeRight);
        }

        // 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", SftTreeLib65.SftPictureImageConstants.sftImageCheckboxYes, 14, 14);
        AddBuiltinImage("Disabled, Selected Check Box", SftTreeLib65.SftPictureImageConstants.sftImageCheckboxYesDisabled, 14, 14);
        AddBuiltinImage("Enabled Check Box", SftTreeLib65.SftPictureImageConstants.sftImageCheckboxNo, 14, 14);
        AddBuiltinImage("Disabled Check Box", SftTreeLib65.SftPictureImageConstants.sftImageCheckboxNoDisabled, 14, 14);
        AddBuiltinImage("Enabled, Unknown Check Box", SftTreeLib65.SftPictureImageConstants.sftImageCheckboxUnknown, 14, 14);
        AddBuiltinImage("Disabled, Unknown Check Box", SftTreeLib65.SftPictureImageConstants.sftImageCheckboxUnknownDisabled, 14, 14);

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

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

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

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

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

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

    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;

}

private void axSftTree1_ItemClick(object sender, AxSftTreeLib65._DSftTreeEvents_ItemClickEvent e)
{
    SftTreeAreaTypeConstants areaType = (SftTreeAreaTypeConstants) e.areaType;
    if (areaType == SftTreeAreaTypeConstants.constSftTreeExpandAll)
        axSftTree1.get_Item(e.itemIndex).Expand(true, true);
    else if (areaType == SftTreeAreaTypeConstants.constSftTreeColumn && e.colIndex == 0)
        SetSortDirection(!m_SortDirection);
    else if (areaType == SftTreeAreaTypeConstants.constSftTreeCellGraphic)
        ToggleImage(axSftTree1.get_Cell(e.itemIndex, e.colIndex).Image);
    else if (areaType == SftTreeAreaTypeConstants.constSftTreeItem)
        ToggleImage(axSftTree1.get_Item(e.itemIndex).Image);
    else if (areaType == SftTreeAreaTypeConstants.constSftTreeLabel)
        ToggleImage(axSftTree1.get_Item(e.itemIndex).LabelImage);
}

private void axSftTree1_ItemDblClick(object sender, AxSftTreeLib65._DSftTreeEvents_ItemDblClickEvent e) {
    SftTreeAreaTypeConstants areaType = (SftTreeAreaTypeConstants) e.areaType;
    if (areaType == SftTreeAreaTypeConstants.constSftTreeColumnRes) {
        axSftTree1.get_Column(e.colIndex).MakeOptimal(); // Make column width optimal
        axSftTree1.Items.RecalcHorizontalExtent(); // Update horizontal scroll bar
    } else if (areaType == SftTreeAreaTypeConstants.constSftTreeColumn && e.colIndex == 0)
        SetSortDirection(!m_SortDirection);
    else if (areaType == SftTreeAreaTypeConstants.constSftTreeCellGraphic)
        ToggleImage(axSftTree1.get_Cell(e.itemIndex, e.colIndex).Image);
}

private void axSftTree1_SelectionChange(object sender, System.EventArgs e) {
    CopyImageFromCurrentItem();
}

private void menuViewSftTree_Click(object sender, System.EventArgs e)
{
    // Show the tree control
    axSftTree1.Visible = true;
    axSftTree1.Enabled = true;
    axSftTree1.Focus();
    axSftTree1.Width = this.Width;
    axSftTree1.Height = this.Height;
    // Disable & hide the print preview control
    axSftPrintPreview1.Visible = false;
    axSftPrintPreview1.Enabled = false;
}

private void menuPrintPreview_Click(object sender, System.EventArgs e)
{
    // Disable & hide the tree control
    axSftTree1.Visible = false;
    axSftTree1.Enabled = false;
    // Show the print preview control
    axSftPrintPreview1.Enabled = true;
    axSftPrintPreview1.Visible = true;
    axSftPrintPreview1.Focus();
    axSftPrintPreview1.Width = this.Width;
    axSftPrintPreview1.Height = this.Height;
    // In case the tree control changed, we have to reformat everything
    axSftPrintPreview1.Restart(SftPrintPreviewRestartConstants.restartSftPrintPreviewComplete);
}

private void axSftPrintPreview1_PageSetupWanted(object sender, System.EventArgs e)
{
    axSftPrintPreview1.PageSetup(0);
}

private void axSftPrintPreview1_HelpWanted(object sender, AxSftPrintPreviewLib10._ISftPrintPreviewEvents_HelpWantedEvent e)
{
    MessageBox.Show("Sorry, this sample doesn't offer a help file");
}

private void axSftPrintPreview1_CloseWanted(object sender, System.EventArgs e)
{
    menuViewSftTree_Click(this, new System.EventArgs());
}

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