Esempio n. 1
0
        // Создать текст
        private void DrawText()
        {
            ksParagraphParam par  = (ksParagraphParam)kompas.GetParamStruct((short)StructType2DEnum.ko_ParagraphParam);
            ksTextParam      par1 = (ksTextParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextParam);
            ksTextLineParam  par2 = (ksTextLineParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextLineParam);
            ksTextItemParam  par3 = (ksTextItemParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam);

            if ((par != null) && (par1 != null) && (par2 != null) && (par3 != null))
            {
                par1.Init();
                par2.Init();
                par3.Init();
                par.Init();
                par.x      = 30;
                par.y      = 30;
                par.height = 25;
                par.width  = 20;

                doc.ksParagraph(par);

                // 4 пример задания дроби и нижнего и верхнего отклонений
                ksTextItemParam itemParam = (ksTextItemParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam);
                if (itemParam != null)
                {
                    itemParam.Init();

                    ksTextItemFont itemFont = (ksTextItemFont)itemParam.GetItemFont();
                    if (itemFont != null)
                    {
                        itemFont.Init();
                        itemFont.SetBitVectorValue(ldefin2d.NEW_LINE, true);
                        itemParam.s = "111";
                        doc.ksTextLine(itemParam);

                        itemFont.Init();
                        itemFont.SetBitVectorValue(ldefin2d.NUMERATOR, true);
                        itemFont.SetBitVectorValue(ldefin2d.ITALIC_ON, true);
                        itemParam.s = "55";
                        doc.ksTextLine(itemParam);

                        itemFont.Init();
                        itemFont.SetBitVectorValue(ldefin2d.DENOMINATOR, true);
                        itemParam.s = "77";
                        doc.ksTextLine(itemParam);

                        itemFont.Init();
                        itemFont.SetBitVectorValue(ldefin2d.END_FRACTION, true);
                        itemFont.SetBitVectorValue(ldefin2d.BOLD_OFF, true);
                        itemFont.SetBitVectorValue(ldefin2d.ITALIC_OFF, true);
                        itemParam.s = "4444";
                        doc.ksTextLine(itemParam);
                    }
                }

                reference p = doc.ksEndObj();

                // в параметрах текста задействованы два массива неопределенной длины :
                ksDynamicArray arr1 = (ksDynamicArray)par1.GetTextLineArr();                   // массив по строкам
                ksDynamicArray arr2 = (ksDynamicArray)par2.GetTextItemArr();                   // массив по компонентам строки
                if ((arr1 != null) && (arr2 != null))
                {
                    // возьмем параметры 1 -ой строки ( индекс 0 )
                    doc.ksGetObjParam(p, par2, 0);

                    PrintPar1(par2, par3, arr2);
                    kompas.ksMessageBoxResult();

                    if (kompas.ksYesNo("Изменять параметры текста ?") == 1)
                    {
                        // у первой строки отключаем ITALIC и BOLD и меняем цвет
                        arr2.ksGetArrayItem(0, par3);
                        ksTextItemFont font = (ksTextItemFont)par3.GetItemFont();
                        if (font != null)
                        {
                            font.SetBitVectorValue(ldefin2d.BOLD_OFF, true);
                            font.SetBitVectorValue(ldefin2d.ITALIC_OFF, true);
                            int clr = Color.FromArgb(0, 0, 255, 0).ToArgb();
                            font.color = clr;
                            arr2.ksSetArrayItem(0, par3);
                            // заменим у текста первую строку
                            doc.ksSetObjParam(p, par2, 0);
                            // возьмем параметры 1 -ой строки ( индекс 0 )  для проверки
                            doc.ksGetObjParam(p, par2, 0);
                            PrintPar1(par2, par3, arr2);
                        }
                    }
                }
            }
        }