Создание таблицы

Автор natali, 06.09.06, 12:35:56

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

natali

Добрый день!
Подскажите, люди добрые, как при создании таблицы задать выравнивание текста в ячейках по левому краю

Table();
LineSeg(.....
ksText(.....
EndObj();

Маратович

Сломал голову, но методом научного тыка чего-то получилось.
Написано на VB6  Проверено на Компас 5.11
Образец взят из SDK, пример- 3а.

Если Вас это устроит то попробуйте вот енто :



' Создание таблицы
Sub таблица(doc As Object)
  doc.ksTable
    doc.ksLineSeg 50, 50, 110, 50, 1
    doc.ksLineSeg 50, 40, 110, 40, 1
    doc.ksLineSeg 50, 30, 110, 30, 1
    doc.ksLineSeg 50, 50, 50, 30, 1
    doc.ksLineSeg 90, 50, 90, 30, 1
    doc.ksLineSeg 110, 50, 110, 30, 1

' Текст на чертеже
Dim par As Object
Dim itemParam As Object
Dim itemFont As Object
Dim ВставитьТекст As Long

Set par = Kompas.GetParamStruct(ko_ParagraphParam)
Set itemParam = Kompas.GetParamStruct(ko_TextItemParam)
Set itemFont = itemParam.GetItemFont

    par.Init
    par.x = 52 'координата по X
    par.y = 48 'координата по Y
    doc.ksParagraph par
    itemParam.Init
    itemFont.Init
    itemFont.HEIGHT = 7 'высота текста
    itemParam.s = "Слева"

   doc.ksSetTextLineAlign (0) ' Стиль - параметр указывает на выравнивание 0 - слева
   doc.ksTextLine itemParam 'вписать
    ВставитьТекст = doc.ksEndObj

  '  doc.ksText 52, 48, 0, 5, 1, 0, "1"   -  Заменено выравниванием слева
    doc.ksText 92, 48, 0, 5, 1, 0, "2"
    doc.ksText 52, 38, 0, 5, 1, 0, "3"
    doc.ksText 92, 38, 0, 5, 1, 0, "4"

  doc.ksEndObj
End Sub

Думаю дальше разберетесь. Если надо, можно загнать енто в цыкл или как удобней.

Напишите чего получилось.

natali

Спасибо за совет но...
текст оказался мне нужен в таблице не простой а структурированный,  и он после задания параметров параграфа выровнялся по левому краю, но вот никак не могу задать ему высоту шрифта нужную  :(
  TParam : TextParam     ;
  LineParam : TextLineParam ;
  ItemParam : TextItemParam ;
  par4  : ParagraphParam;     
.....
Table();
lineseg......

par4.x := 24; par4.y :=26; par4.ang := 0;
par4.height := 25; par4.width  := 20; par4.style:=1;
    p:=Paragraph (Addr(par4));

  TextLine ( NEW_LINE  ,0, nil ,'h');
  TextLine ( LOWER_DEVIAT,0 ,nil ,'61');
  TextLine ( END_DEVIAT,0 ,nil ,', h');
  TextLine ( LOWER_DEVIAT,0 ,nil ,'71');
  TextLine ( END_DEVIAT,0 ,nil ,', h');
  TextLine ( LOWER_DEVIAT,0 ,nil ,'81');
  TextLine ( END_DEVIAT,0 ,nil ,' ');
  p := EndObj();
EndObj();

Маратович

На чём пишем ?
Есть вариант на скорую руку :

' Создание таблицы
Sub таблица(doc As Object)
  doc.ksTable
    doc.ksLineSeg 50, 50, 210, 50, 1 'верх
    doc.ksLineSeg 50, 20, 210, 20, 1 'гор середина
    doc.ksLineSeg 50, 10, 210, 10, 1 'низ
    doc.ksLineSeg 50, 50, 50, 10, 1 'левая
    doc.ksLineSeg 150, 50, 150, 10, 1 'верт середина
    doc.ksLineSeg 210, 50, 110, 10, 1 'правая
' Текст на чертеже
Dim par As Object
Dim itemParam As Object
Dim itemFont As Object
Dim ВставитьТекст As Long

Set par = Kompas.GetParamStruct(ko_ParagraphParam)
Set itemParam = Kompas.GetParamStruct(ko_TextItemParam)
Set itemFont = itemParam.GetItemFont

    par.Init
    par.x = 52 'координата по X
    par.y = 48 'координата по Y
    doc.ksParagraph par
    itemParam.Init
    itemFont.Init
   doc.ksSetTextLineAlign (0) ' Стиль - параметр указывает на выравнивание 0 - слева

'Текст до дроби
      itemParam.Init
        itemFont.Init
        itemFont.SetBitVectorValue NEW_LINE, True
        itemFont.HEIGHT = 10 'высота текста
        itemParam.s = "Слева 10"
        doc.ksTextLine itemParam

'Высота Дроби
'Числитель
        itemFont.Init
        itemFont.SetBitVectorValue NUMERATOR, True
        itemFont.SetBitVectorValue ITALIC_ON, True
        itemFont.HEIGHT = 7 'высота текста
        itemParam.s = "Числитель 7"
        doc.ksTextLine itemParam
'Знаменатель
        itemFont.Init
       itemFont.SetBitVectorValue DENOMINATOR, True
        itemFont.HEIGHT = 7 'высота текста НЕ изменяется почему не знаю
        itemParam.s = "Знаменатель 7"
        doc.ksTextLine itemParam

'Текст поле дроби нужен разрыв в командах для изменения высоты
        itemParam.Init
        itemFont.Init
        itemFont.SetBitVectorValue END_FRACTION, True
        doc.ksTextLine itemParam

        itemFont.Init
        itemFont.SetBitVectorValue BOLD_OFF, True
        itemFont.SetBitVectorValue ITALIC_OFF, True
        itemFont.HEIGHT = 10 'высота текста
        itemParam.s = "Текст 10"
        doc.ksTextLine itemParam

    ВставитьТекст = doc.ksEndObj

  '  doc.ksText 152, 28, 0, 5, 1, 0, "1"   -  Заменено выравниванием слева и текстом с дробью
    doc.ksText 152, 28, 0, 5, 1, 0, "2"
    doc.ksText 52, 18, 0, 5, 1, 0, "3"
    doc.ksText 152, 18, 0, 5, 1, 0, "4"

  doc.ksEndObj
End Sub

Удачной охоты !

garorobe

А не могли бы вы подсказать решение этой проблемы средствами API экспортных функций (функция Text - не вариант)?