Добрый день!
Подскажите, люди добрые, как при создании таблицы задать выравнивание текста в ячейках по левому краю
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
Думаю дальше разберетесь. Если надо, можно загнать енто в цыкл или как удобней.
Напишите чего получилось.
Спасибо за совет но...
текст оказался мне нужен в таблице не простой а структурированный, и он после задания параметров параграфа выровнялся по левому краю, но вот никак не могу задать ему высоту шрифта нужную :(
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
Удачной охоты !
А не могли бы вы подсказать решение этой проблемы средствами API экспортных функций (функция Text - не вариант)?