SAPфорум.RU
https://sapboard.ru/forum/

Установка границ в языке FormCalc
https://sapboard.ru/forum/viewtopic.php?f=13&t=65757
Страница 1 из 1

Автор:  vis_ABAPER [ Вт, ноя 30 2010, 18:06 ]
Заголовок сообщения:  Установка границ в языке FormCalc

Здравствуйте!

Есть PDF-форма с таблицей. В ней программно нужно у одной ячейки некоторые границы сделать невидимыми, а другие - наоборот видимыми и жирными.
Столкнулся со следующей проблемой. При изменении свойств одной стороны, остальные 3 получают такие же значения. А если точнее, логика вообще не прослеживается...

Вот пример с отдельностоящим текстовым полем:
После такого кода границы не видны:
Code:
data.Subform1.NAME_tmp.border.edge[1].presence = "invisible"

data.Subform1.NAME_tmp.border.edge[0].presence = "visible"
data.Subform1.NAME_tmp.border.edge[0].thickness  = "0.02in" 


А после такого кода видны все:
Code:
data.Subform1.NAME_tmp.border.edge[0].presence = "visible"
data.Subform1.NAME_tmp.border.edge[0].thickness  = "0.02in"

data.Subform1.NAME_tmp.border.edge[1].presence = "invisible"


Как это работает, мне не понятно... Кто-нибудь может подсказать, как в FormCalc программно установить одну границу видимую (например, верхнюю), а другую (например, нижнюю) - невидимую?

Заранее благодарен!

Автор:  vis_ABAPER [ Ср, дек 01 2010, 15:44 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

Проблема несколько уточнилась: границы действительно устанавливаются по одной через массив. Если руками в дизайнере поставить у них разную толщину, то эти значения потом нормально выводятся через message box. Загвоздка в том, что, если поменять в скрипте тип линии или толщину, то на экране ничего не происходит.

Может кто-нибудь знает метод или функцию в FormCalc, которая бы перерисовывала элемент или содержимое контейнера или даже сразу всей страницы?

Автор:  __Gennady [ Ср, дек 01 2010, 16:27 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

Рискну предположить (сам не пробовал) это зависит от момента, в который запускается скрипт. Необходимо до отрисовки.

Автор:  vis_ABAPER [ Ср, дек 01 2010, 17:39 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

Ставил на инициализацию (она вроде до отрисовки) и на движение мыши. При движении мыши почему-то меняются все границы сразу, но не по-отдельности... В общем, адобовский дизайнер - одна из самых глючных сред, которые я видел. По количеству багов винда 95-я отдыхает
=(

Спасибо за совет! Попробую еще с событиями поиграться...

Автор:  __Gennady [ Ср, дек 01 2010, 18:01 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

можно еще ready:layout попробовать

Автор:  BaBuin [ Чт, дек 02 2010, 07:56 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

vis_ABAPER написал(а):
почему-то меняются все границы сразу, но не по-отдельности...


Там же вроде ещё есть свойство что-то типа set together/individually. Сейчас к сожалению не могу посмотреть.

Автор:  vis_ABAPER [ Чт, дек 02 2010, 10:00 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

BaBuin написал:
Там же вроде ещё есть свойство что-то типа set together/individually. Сейчас к сожалению не могу посмотреть.


Есть в дизайнере. Для этого объекта, конечно же стоит "set individually", однако как её поменять программно я не знаю (чтобы удостовериться, что оно не переставилось каким-то чудом ) . Возможно, это только опция дизайнера...

Автор:  BaBuin [ Чт, дек 02 2010, 11:29 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

Вот тут что-то похожее обсуждают:
http://forums.adobe.com/thread/756937?d ... hread=true

Но у меня так тоже не заработало :(

Автор:  vis_ABAPER [ Пт, дек 03 2010, 10:13 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

У меня заработало, но опять не так, как надо....

Вот такой код:
Code:
data.TextField1::mouseEnter - (FormCalc, client)
$.ui.oneOfChild.border.getElement("edge", 2).color.value = "0,255,255"

меняет цвет, но опять-же не отдельной границы, а всех сразу и, главное, не внешней, а внутренней, т.е. не вокруг всего текстового поля, а вокруг области ввода. Т.е. подпись остается снаружи границы. Тип этой границы можно указать в дизайнере в свойстве "Appearance". Можно установить обводку для области ввода утопленную, плоскую или вообще убрать. НО! Нельзя менять её цвет. А в скриптинге - можно =) А внешнюю границу - вокруг подписи и области ввода можно менять в дизайнере, но нельзя в скрипте...

Чувствую, что разработчики перепутали эти границы и скриптинг работает не с той.

Вот вообще шикарная иллюстрация (может проверить любой). Создаем пустую форму, на неё кидаем один элемент типа "text Field". Нижнюю границу у него делаем сплошную, красного цвета. В редакторе скриптов на событие mouseEnter ставим такой код:
Code:
data.TextField1::mouseEnter - (FormCalc, client)

xfa.host.messageBox($.border.edge[2].color.value)
$.border.edge[2].color.value = "0, 255, 0"

Переходим на закладку "Preview PDF". Наводим мышку на поле. На экране появится "255, 0, 0". Закрываем message - на экране текстовый элемент с красной нижней границей и зеленой обводкой вокруг области ввода.
На экран выводится цвет ВНЕШНЕЙ границы, а изменяется цвет ВНУТРЕННЕЙ =)

В общем, я оставляю попытки побороть этот глюк... Спасибо всем за попытки помочь!

Автор:  BaBuin [ Пт, дек 03 2010, 10:28 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

Да уж.. тривиальная задача по сути. Обидно.

Автор:  _ [ Чт, мар 03 2011, 12:28 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

BaBuin написал:
Вот тут что-то похожее обсуждают:
http://forums.adobe.com/thread/756937?d ... hread=true

Но у меня так тоже не заработало :(


Спасибо за линк. А то как раз возникла похожая задача. А не заработало возможно потому, что если скрывать верхнюю границу у ячейки таблицы, то нужно также скрыть нижнюю границу у ячейки выше.
Сейчас как раз пытаюсь разобраться, как правильно обратиться к ячейке выше с этой целью.

Автор:  Gazinur [ Вт, фев 06 2018, 09:08 ]
Заголовок сообщения:  Re: Установка границ в языке FormCalc

Столкнулся с подобной задачей по отображению границ поля. В свойствах все границы делал видимыми, когда скрывал определенную сторону работало как то некорректно,
проверял выводом на экран значений отображения границ.
Потом тупо прописал все стороны с нужными мне свойствами и все заработало.
ниже привел пример, вдруг кому понадобится. Да и если рисуете в таблице учитывайте что между ячейками верхняя и нижняя пересекаются, также правая и левая.
Code:
$.border.edge[0].presence = "hidden"   " верхняя
$.border.edge[1].presence = "visible"   " правая
$.border.edge[2].presence = "hidden"   " нижняя
$.border.edge[3].presence = "visible"    " левая


Либо тоже самое
Code:
      
$.border.getElement("edge",0).presence = "hidden"
$.border.getElement("edge",1).presence = "visible"
$.border.getElement("edge",2).presence = "hidden"
$.border.getElement("edge",3).presence = "visible"

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/