Как изменить высоту текста?

Автор AndreyS, 25.04.05, 19:53:52

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

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

AndreyS

Я уверен, что это простой вопрос для профессионалов.
А я только начинаю осваивать программирование в Компасе.
Суть вопроса такова: можно ли установить высоту текста (в т.ч. и многострочного) как-то попроще, чем в нижеприведенном фрагменте?
То есть. без перебора всех строк текстового объекта.

var
 i,j : integer;
 obj : reference;
 textsize : double;
 tprm : textparam;
 tline : reference;
 tlineprm : textlineparam;
 titemprm : TextItemParam;

GetObjParam (obj, addr(tprm), sizeof(tprm),ALLPARAM);
tline:=tprm.pTextLine;
for i:=0 to getarraycount(tline)-1 do begin
  GetArrayItem (tline, i, @tlineprm, SizeOf(TextLineParam));
  for j:=0 to getarraycount(tlineprm.pTextItem)-1 do begin
    GetArrayItem (tlineprm.pTextItem, j, @titemprm, SizeOf(TextItemParam));
    titemprm.font.height:=textsize;
    SetArrayItem (tlineprm.pTextItem, j, @titemprm, SizeOf(TextItemParam));
  end;
  SetArrayItem (tline, i, @tlineprm, SizeOf(TextLineParam));
end;
SetObjParam (obj, addr(tprm), sizeof(tprm),ALLPARAM);

Причем этот вариант в многострочном тексте делает не все строки нужной высоты. Что же не так у меня?

Godzilla

Вот так я делаю на С++, на Делфи наверное также:

    ksTextItemParam ItemParam = kompas.GetParamStruct(ko_TextItemParam);
    ItemParam.Init();
   ItemParam.SetS("Здесь пишется текст");
   ItemParam.SetType(0);

   ksTextItemFont ItemFont = kompas.GetParamStruct(ko_TextItemFont);
   ItemFont.Init();
   ItemFont.SetHeight(7); // высота
   ItemFont.SetColor(255); // цвет
   ItemFont.SetKsu(1); // сужение
   ItemFont.SetFontName("GOST type B"); // имя шрифта
    ItemFont.SetBitVectorValue(ITALIC_ON,TRUE); // тип начертания
   
   ItemParam.SetItemFont(ItemFont);


doc.ksTextLine(ItemParam);