Высота линии в отчете

Обсуждение извечных проблем кларионовских (и не только) отчетов

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Здравствуйте уважаемое сообщество !

Был вопрос в рассылке как вычислить высоту текстового поля с RESIZE в отчете.

Необходимость в этом возникла, чтобы вертикальные линии были одинаковой высоты в зависимости от высоты текста (без вертикального разрыва).

Так вот вопрос:

Как потом установить высоту линии программно в соответствии с текстом ?

С уважением Сергей. Инженер ГУДП "Камчатаэронавигация"
seligerkam@mail.ru


(Добавление)

Ну примерно так

Код: Выделить всё

! Adjust lines for multiple-line description

        SETTARGET(Report)

        LineLength  = (?Exp:Description{Prop:LineCount} - 1) * ?Exp:Description{Prop:LineHeight}

        LineH = ?Detail1{Prop:Height} + LineLength
        LineY = (-1) *  LineLength

        SETPOSITION(?Detail1,,LineY,,)  ! Detail band

        ?Line1{Prop:Height} = LineH  ! Vertical lines
        ?Line2{Prop:Height} = LineH
        ?Line3{Prop:Height} = LineH
        ?Line4{Prop:Height} = LineH
        ?Line5{Prop:Height} = LineH
        ?Line6{Prop:Height} = LineH
        ?Line7{Prop:Height} = LineH

        SETTARGET
Hlp <hlp@mail333.COM>

А не объясните надобность этих двух строк ? Может я чего-то недопонимаю ?
:(

LineY = (-1) * LineLength
SETPOSITION(?Detail1,,LineY,,) ! Detail band

С уважением Сергей
Написал: ClaList(2)
Гость

Сообщение Гость »

ну это был пример - чето смущает - выбрось эти линии и не мучься.

Hlp <hlp@mail333.COM>

(Добавление)
Как потом установить высоту линии программно в соответствии с текстом ?
Без проблем...
Я у себя вот такую рутинку использую перед печатью DETAIL'а.

Код: Выделить всё

SetSeparatorHeight ROUTINE

  DATA

nLoopIndex       SIGNED,AUTO
nMaxDetailHeight SIGNED(0)
nDetailHeight    SIGNED,AUTO

  CODE
  SETTARGET(Report)
  ! Поиск максимальной высоты TEXT-контрола
  LOOP nLoopIndex = FIRSTFIELD() TO LASTFIELD()
    IF nLoopIndex{PROP:Type} = CREATE:Text AND nLoopIndex{PROP:Parent} = ?Detail
      nDetailHeight = 2 * nLoopIndex{PROP:YPos} + nLoopIndex{PROP:LineCount} * nLoopIndex{PROP:LineHeight}
      IF nDetailHeight > nMaxDetailHeight
        nMaxDetailHeight = nDetailHeight
      END
    END
  END
  ! Настраиваем высоту всех ввертикальных разделителей и высоту самого
  ! TEXT-контрола
  LOOP nLoopIndex = FIRSTFIELD() TO LASTFIELD()
    IF ((nLoopIndex{PROP:Type} = CREATE:Line AND !
         nLoopIndex{PROP:Width} = 0) OR !
         nLoopIndex{PROP:Type} = CREATE:Text) AND nLoopIndex{PROP:Parent} = ?Detail
      nLoopIndex{PROP:Height} = nMaxDetailHeight
    END
  END
  ! Если есть горизонтальная отчеркивающая линия, то настраиваем ее
  ! YPos
  LOOP nLoopIndex = FIRSTFIELD() TO LASTFIELD()
    IF nLoopIndex{PROP:Type} = CREATE:Line AND !
       nLoopIndex{PROP:Height} = 0         AND !
       nLoopIndex{PROP:Parent} = ?Detail
      nLoopIndex{PROP:YPos} = nMaxDetailHeight
    END
  END
  SETTARGET
Алексей,
начальник отдела ПТО
ООО "ОРК"
mail: alex@jrcn.donetsk.ua, icq: 62605472
www: http://www.nikasoft.co.uk
http://www.clarionline.h1.ru (FAQ-онлайн)
origin: Вы знакомы со священными навыками анального ветра ?
Написал: ClaList(2)
Гость

Сообщение Гость »

Спасибо Алексею Тимкову и всем кто принял участие. Вопрос снят - все работает на УРА.

Sergey Gerasin <seligerkam@mail.ru>
Написал: ClaList(2)
Ответить