Search code examples
visual-studioapiadd-insolidworks

Solidworks Property Manager Page - 2 buttons on same line


I'm building my own Solidworks Addin and while building it, I encountered a difficulty.

Anybody knows how to Create 2 buttons side-by-side in a Property Manager Page? I tried the different possibilities of the swPropertyManagerPageControlLeftAlign_e enum without any success.

The idea is I want people to select from the configurations list, every configuration they want the server to proccess. Therefore I created 4 buttons (SelectAll/SelectHighlighted/DeSelectHighlighted/DeSelectAll) to help the users in their selections.

Here's what it looks like at the moment :

PMP

                //Ajout Controls Group_Configs
            lst_Configs_All = Group_Configs.AddControl2(lst_Configs_All_ID, (int)swPropertyManagerPageControlType_e.swControlType_Listbox, "Configurations", (int)swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, (int)swAddControlOptions_e.swControlOptions_Enabled + (int)swAddControlOptions_e.swControlOptions_Visible, "Liste des configurations du modèle actif");
            lst_Configs_All.Height = 180;
            lst_Configs_All.Style = (int)swPropMgrPageListBoxStyle_e.swPropMgrPageListBoxStyle_NoIntegralHeight;

            BitmapHandler iBmp = new BitmapHandler();
            string BitmapFileName = iBmp.CreateFileFromResourceBitmap("Willy.Controller.Template.btnConfigs.bmp", System.Reflection.Assembly.GetAssembly(this.GetType()));


            // string BitmapFileName = System.IO.Path.GetDirectoryName((System.Reflection.Assembly.GetExecutingAssembly().Location)); //& "\" & _SwAddin.BitMapsFolder & "Select2.bmp"

            btn_Configs_SelectAll = Group_Configs.AddControl2(btn_Configs_SelectAll_ID, (int)swPropertyManagerPageControlType_e.swControlType_BitmapButton, "Tout Sélectionner", (int)swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, (int)swAddControlOptions_e.swControlOptions_Enabled + (int)swAddControlOptions_e.swControlOptions_Visible, "Sélectionner toutes les configurations");
            btn_Configs_SelectAll.SetBitmapsByName3(BitmapFileName, "");

            btn_Configs_Select = Group_Configs.AddControl2(btn_Configs_Select_ID, (int)swPropertyManagerPageControlType_e.swControlType_BitmapButton, "Sélectionner les configuration surlignées", (int)swPropertyManagerPageControlLeftAlign_e.swControlAlign_Indent, (int)swAddControlOptions_e.swControlOptions_Enabled + (int)swAddControlOptions_e.swControlOptions_Visible, "Sélectionner les configuration surlignées");
            btn_Configs_Select.SetBitmapsByName3(BitmapFileName, "");

            btn_Configs_DeSelect = Group_Configs.AddControl2(btn_Configs_DeSelect_ID, (int)swPropertyManagerPageControlType_e.swControlType_BitmapButton, "Désélectionner les configuration surlignées", (int)swPropertyManagerPageControlLeftAlign_e.swControlAlign_Indent, (int)swAddControlOptions_e.swControlOptions_Enabled + (int)swAddControlOptions_e.swControlOptions_Visible, "Désélectionner les configuration surlignées");
            btn_Configs_DeSelect.SetBitmapsByName3(BitmapFileName, "");

            btn_Configs_DeSelectAll = Group_Configs.AddControl2(btn_Configs_DeSelectAll_ID, (int)swPropertyManagerPageControlType_e.swControlType_BitmapButton, "Désélectionner toutes les configuration", (int)swPropertyManagerPageControlLeftAlign_e.swControlAlign_Indent, (int)swAddControlOptions_e.swControlOptions_Enabled + (int)swAddControlOptions_e.swControlOptions_Visible, "Désélectionner toutes les configuration");
            btn_Configs_DeSelectAll.SetBitmapsByName3(BitmapFileName, "");

            lst_Configs_ToDo = Group_Configs.AddControl2(lst_Configs_ToDo_ID, (int)swPropertyManagerPageControlType_e.swControlType_Listbox, "Configurations", (int)swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, (int)swAddControlOptions_e.swControlOptions_Enabled + (int)swAddControlOptions_e.swControlOptions_Visible, "Liste des configurations à générer");
            lst_Configs_ToDo.Height = 180;
            lst_Configs_ToDo.Style = (int)swPropMgrPageListBoxStyle_e.swPropMgrPageListBoxStyle_NoIntegralHeight;

Solution

  • Okay so i think after some research I found a way to get through this.

    Source

    You need to cast your BitmapButton to it's parent object (PropertyManagerPageControl) to access the Top and Left Property. You may then set the pixels to whatever you need to.

    EDIT : Here's what I have manager to do. I'm also including the code.

    Visual

                btn_Configs_SelectAll = Group_Configs.AddControl2(btn_Configs_SelectAll_ID, (int)swPropertyManagerPageControlType_e.swControlType_BitmapButton, "Tout Sélectionner", (int)swPropertyManagerPageControlLeftAlign_e.swControlAlign_Indent, options, "Sélectionner toutes les configurations");
            string[] imageList = new string[1];
            imageList[0] = System.IO.Path.GetDirectoryName((System.Reflection.Assembly.GetExecutingAssembly().Location)) + @"\View\Bitmaps\btnConfigs_SelectAll.bmp";
            btn_Configs_SelectAll.SetBitmapsByName3(imageList, imageList);
            ((PropertyManagerPageControl)btn_Configs_SelectAll).Top = 140;
            ((PropertyManagerPageControl)btn_Configs_SelectAll).Left = 0;
    
            btn_Configs_Select = Group_Configs.AddControl2(btn_Configs_Select_ID, (int)swPropertyManagerPageControlType_e.swControlType_BitmapButton, "Sélectionner les configuration surlignées", (int)swPropertyManagerPageControlLeftAlign_e.swControlAlign_Indent, options, "Sélectionner les configuration surlignées");
            string[] imageList2 = new string[1];
            imageList2[0] = System.IO.Path.GetDirectoryName((System.Reflection.Assembly.GetExecutingAssembly().Location)) + @"\View\Bitmaps\btnConfigs_Select.bmp";
            btn_Configs_Select.SetBitmapsByName3(imageList2, imageList2);
            ((PropertyManagerPageControl)btn_Configs_Select).Top = 140;
            ((PropertyManagerPageControl)btn_Configs_Select).Left = 30;
    
            btn_Configs_DeSelect = Group_Configs.AddControl2(btn_Configs_DeSelect_ID, (int)swPropertyManagerPageControlType_e.swControlType_BitmapButton, "Désélectionner les configuration surlignées", (int)swPropertyManagerPageControlLeftAlign_e.swControlAlign_Indent, options, "Désélectionner les configuration surlignées");
            string[] imageList3 = new string[1];
            imageList3[0] = System.IO.Path.GetDirectoryName((System.Reflection.Assembly.GetExecutingAssembly().Location)) + @"\View\Bitmaps\btnConfigs_DeSelect.bmp";
            btn_Configs_DeSelect.SetBitmapsByName3(imageList3, imageList3);
            ((PropertyManagerPageControl)btn_Configs_DeSelect).Top = 140;
            ((PropertyManagerPageControl)btn_Configs_DeSelect).Left = 60;
    
            btn_Configs_DeSelectAll = Group_Configs.AddControl2(btn_Configs_DeSelectAll_ID, (int)swPropertyManagerPageControlType_e.swControlType_BitmapButton, "Désélectionner toutes les configuration", (int)swPropertyManagerPageControlLeftAlign_e.swControlAlign_Indent, options, "Désélectionner toutes les configuration");
            string[] imageList4 = new string[1];
            imageList4[0] = System.IO.Path.GetDirectoryName((System.Reflection.Assembly.GetExecutingAssembly().Location)) + @"\View\Bitmaps\btnConfigs_DeSelectAll.bmp";
            btn_Configs_DeSelectAll.SetBitmapsByName3(imageList4, imageList4);
            ((PropertyManagerPageControl)btn_Configs_DeSelectAll).Top = 140;
            ((PropertyManagerPageControl)btn_Configs_DeSelectAll).Left = 90;