Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как обойти ограничение на 255 символов в "dynamicforecolor" / 8 сообщений из 8, страница 1 из 1
03.07.2008, 21:35
    #35410200
Dezhur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти ограничение на 255 символов в "dynamicforecolor"
Здравствуйте.
Подскажите пожалуйста можно ли выкрутиться из этой ситуации:
В сторонней функции (отдельный prg который вызывается из фоксовой программы)
пытаюсь присвоить гриду вызывающей программы параметры для dynamicforecolor
Активную форму нахожу (OFORM), значения присваиваются все ок. но это самое простое условий, а оно уже 240 символов. Хотелось бы условие расширить.

FUNCTION Mark_BO
OFORM.MASTERPANEL.GRIDPANEL.GRID.SETALL("dynamicforecolor", "iif(.....) = ALLTRIM('......') and !EMPTY(MLINE(......,1)), rgb(67,67,255),(THIS.RowColor[IIF(RecNo(THIS.RecordSource)=THIS.RecNoCurrent,2,1)+IIF(AScan(THIS.MarkList,RecNo(THIS.RecordSource))>0,2,0), 1]))", 'column')
RETURN "....."
ENDFUNC


учитывая что THIS. использовать нельзя в листиге функции, можно только в передаваемом тексте.
и учитывая, что классы берутся из родительской программы, а она еще не пересобрана под vfox9
получается какаято ж...а


есть какие нибудь идеи?
очень нужно.
если можно реализовать только под vfox9, напишите всеравно может пригодится.
Заранее Спасибо.
...
Рейтинг: 0 / 0
03.07.2008, 22:45
    #35410292
1010100021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти ограничение на 255 символов в "dynamicforecolor"
Может попробовать создать пользовательскую функцию
...
Рейтинг: 0 / 0
03.07.2008, 23:27
    #35410344
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти ограничение на 255 символов в "dynamicforecolor"
На самой форме создается пользовательский метод, с именем, например, setForeColor(). А в Dynamic... организуется вызов этого метода примерно так:

Код: plaintext
OFORM.MASTERPANEL.GRIDPANEL.GRID.SETALL("dynamicforecolor", "ThisForm.setForeColor()","Column")

Ну, а в методе формы уже пишется любая необходимая обработка. Если необходимо, можно передавать в метод параметры текущей строки.

Кроме того, Вы путаете предельно предельное количество символов для константы и символьной переменной.

Если у Вас экран не в 50 дюймов, то 240 символов в одну строку просто не поместится. Зачем же над собой издеваться? Пишите небольшими "кусками". Подробнее читайте здесь

Символьные поля, переменные памяти и константы

Сформируйте в отдельной символьной перменной функцию для Dynamic..., а потом ее используйте в присвоении. Примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
LOCAL lcDynamicFunction
lcDynamicFunction = "iif(.....) = ALLTRIM('......') and !EMPTY(MLINE(......,1)),"+;
		" rgb(67,67,255),"+ ;
		"(THIS.RowColor[IIF(RecNo(THIS.RecordSource)=THIS.RecNoCurrent,2,1)+"+ ;
		"IIF(AScan(THIS.MarkList,RecNo(THIS.RecordSource))>0,2,0), 1]))"

OFORM.MASTERPANEL.GRIDPANEL.GRID.SETALL("dynamicforecolor", m.lcDynamicFunction, "Column")

Чтобы не запутаться в синтаксисе можно использовать текстовые скобки TEXT...ENDTEXT
...
Рейтинг: 0 / 0
04.07.2008, 09:06
    #35410603
Как обойти ограничение на 255 символов в "dynamicforecolor"
в 9-й версии используйте

icase

rgb(67,67,255) - не нужно так писать


делайте так

Код: plaintext
1.
2.
3.
4.
5.
6.
local lcColor1, lcColor2, lcDynamicFunction
lcColor1 = ltri(str(rgb(...))
lcColor2 = ltri(str(rgb(...))
text to lcDynamicFunction noshow textmerge pretext  15  
     icase(......,<<lcColor1>>....,<<lcColor2>> ....
endtext
...
Рейтинг: 0 / 0
04.07.2008, 11:57
    #35411149
Dezhur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти ограничение на 255 символов в "dynamicforecolor"
Большое спасибо за отзывчивость.
очень интересные варианты.

Единственное хочу уточнить -
Есть фоксовая программа, максимум в которой, что я могу сделать - это вызвать Mark_BO.fxp
штатными методами программы.
а всю отработку нужно провести в функции Mark_BO(), которая и может задать значения загруженных в память константам головной программы.
...
Рейтинг: 0 / 0
04.07.2008, 12:10
    #35411184
Как обойти ограничение на 255 символов в "dynamicforecolor"
автор
учитывая что THIS. использовать нельзя

...

максимум в которой, что я могу сделать - это вызвать Mark_BO.fxp


посмотри ветку
/topic/572779&pg=1

там рассказано какими способами ссылаться на форму + примеры (возможно будет полезно)
...
Рейтинг: 0 / 0
04.07.2008, 12:13
    #35411188
Как обойти ограничение на 255 символов в "dynamicforecolor"
авторчто я могу сделать - это вызвать Mark_BO.fxp

нужно вызвать этот модуль и передать в параметр ссылку на форму


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Mark_BO(thisform)

procedure  Mark_BO
lparam toForm
with toForm
   ....
endwith
...
Рейтинг: 0 / 0
09.07.2008, 22:13
    #35421767
plokhish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти ограничение на 255 символов в "dynamicforecolor"
12345вышелзайчикпогулятьв 9-й версии используйте

icase

rgb(67,67,255) - не нужно так писать


[/src]


0xFF4343

works fine instead of rgb(67,67,255) and takes less space :o)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как обойти ограничение на 255 символов в "dynamicforecolor" / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]