Помогите чем можете, нужно текст побороть

Автор к, 21.12.05, 14:31:29

« назад - далее »

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

к

что-то у меня не получается у текста изменить параметры шрифта. Пытаюсь это делать так:
pKT := ksDoc.ksText(fX, fY, fRotation, 2, 1, 0, sTextik);
ksTSP := ksTextStyleParam(iKompasObject.GetParamStruct(ko_TextStyleParam));
ksDoc.ksGetObjParam(pKT, ksTSP, ALLPARAM);
ksTSP.height := 20;
ksDoc.ksSetObjParam(pKT, ksTSP, ALLPARAM);
Но так не работает. Хоть и говорит что операция выполнена успешно.
Как изменить например размер шрифта?
А вообще, меня еще очень интересует вопрос создания стилей текста. И их применение. Примера не нашел.

Bordes

чем можем, тем поможем,
пример функции изменения высоты шрифта в текстовом параграфе
(работающий):

void Run_TextHeightEdit(reference refObj, double NewTextHeight)
   {
   // Определяем количество строк в параграфе
   TextParam varTextParam;
   GetObjParam(refObj, &varTextParam, sizeof(varTextParam), ALLPARAM);
   UINT TextLineCount=GetArrayCount(varTextParam.pTextLine);

   TextLineParam varTextLineParam;
   TextItemParam varTextItemParam;

   //! в GetObjParam (и SetObjParam) последний параметр может быть индексом! :-0  

   for(UINT i=0; i < TextLineCount; i++ )
      {
      GetObjParam(refObj, &varTextLineParam, sizeof(varTextLineParam), i);
      for(UINT j=0, j_count=GetArrayCount(varTextLineParam.pTextItem); j < j_count; j++)
         {
         memset(&varTextItemParam, 0, sizeof(varTextItemParam));
      
         GetArrayItem(varTextLineParam.pTextItem, j, &varTextItemParam, sizeof(varTextItemParam));
         varTextItemParam.font.height=NewTextHeight;
         SetArrayItem(varTextLineParam.pTextItem, j, &varTextItemParam, sizeof(varTextItemParam));
         }
      SetObjParam(refObj, &varTextLineParam, sizeof(varTextLineParam), i);
      }
   }

sorockinalex

чёт я не понял ничего... а проще никак нельзя??? какие ещё массивы?
я прошёлся по листу, нашёл объект - текстовое поле
pObj := iIterator.ksMoveIterator( 'F' );
теперь как мне получить текст, если мне известен pObj???
что-то я заметил этот форум какой-то наполовину дохлый, как и компас.
все смотрят, но никто не отвечает

sorockinalex

26.11.07, 21:41:59 #3 Последнее редактирование: 27.11.07, 19:32:57 от sorockinalex
Можно ли как-нибудь по аналогии с этим: iKompas.ksMessage ('Form1.caption') - как просто и понятно! - получил текст из caption окна!
Если не будет сложно, дайте готовый код. Чёт никак не пойму что там они наворотили и как откуда и куда... Простую вещь - получить текст из поля  надо извратиться через европу, чтобы получить требуемое!
Изменил...

Администратор

Уважаемый sorockinalex!

Делаю Вам замечание за использование грубой лексики. Напоминаю, что Вы находитесь не в лесу и не у себя дома, а в профессиональном Форуме.

Убедительно прошу исправить Ваше сообщение и в дальнейшем общаться культурно и цивилизованно, проявляя уважение к другим Участникам Форума.

sorockinalex

Лучше бы помог, профессионал на профессиональном форуме  :-)))
Сегодня целый день мучался с итераторами. Никак не хочет искать FRAGMENT_OBJ в документе!!! Вот код. Может кто знает где исправить?

var
jDoc,pDoc,jFrg,pFrg,jTxt,pTxt:reference;
--------------------------------------
jDoc:=CreateIterator(DOCUMENT_OBJ, 0);
iKompas.ksMessage('jDoc='+inttostr(jDoc));
if jDoc>0 then
  begin
    pDoc:=MoveIterator(jDoc,'F');
    iKompas.ksMessage('pDoc='+inttostr(pDoc));
      jFrg:=CreateIterator(FRAGMENT_OBJ, pDoc);
      iKompas.ksMessage('jFrg='+inttostr(jFrg));
      if jFrg>0 then
        begin
          pFrg:=MoveIterator(jFrg,'F');
          iKompas.ksMessage('pFrg='+inttostr(pFrg));
            jTxt:=CreateIterator(TEXT_OBJ, pFrg);
            iKompas.ksMessage('jTxt='+inttostr(jTxt));
            if jTxt>0 then
              begin
                pTxt:=MoveIterator(jTxt,'F');
                iKompas.ksMessage('pTxt='+inttostr(pTxt));
              end;
            DeleteIterator(jTxt);
        end;
      DeleteIterator(jFrg);
  end;
DeleteIterator(jDoc);

Администратор

Цитата: sorockinalex от 27.11.07, 19:36:57
Лучше бы помог, профессионал на профессиональном форуме :-)))

Очередное замечание — за препирательства с администратором и «тыканье».

С учётом ранее проводимой Вами на Форуме рекламы эмуляторов и использования нелицензионного ПО это замечание третье. Придётся Вам пару недель побыть только читателем нашего Форума.