Страница 1 из 2
Экранный текст контрола, заданного как List
Добавлено: 26 Октябрь 2018, 11:59
kreator
С10. Есть контрол, заданный вот так:
Код: Выделить всё
LIST,AT(133,117,357,10),USE(LOC:Display),GRID(COLOR:Gainsboro),DROP(10),FORMAT('200L(2)_M*@s50@'), |
FROM('Внутренние вопросы производства|#1|Проблемы с технологической/кон' & |
'структорской документацией|#2|Проблемы с инструментом,СТО|#3|Вопросы к' & |
' участку комплектации|#4|Проблемы по качеству (со сторонними организац' & |
'иями)|#5|Проблемы по качеству (КнАФ)|#6'),#ORDINAL(11)
Нужно узнать название выбранного пользователем пункта. Как? prop:ScreenText, prop:Text не идёт. Парсить prop:From?
Экранный текст контрола, заданного как List
Добавлено: 26 Октябрь 2018, 12:03
gopstop2007
а просто CHOICE(?LOC:Display) не проходит?
Экранный текст контрола, заданного как List
Добавлено: 26 Октябрь 2018, 12:32
Игорь Столяров
gopstop2007 писал(а): ↑26 Октябрь 2018, 12:03а просто CHOICE(?LOC:Display) не проходит?
Неа. Choice() вернёт номер выбранной записи в LIST. Если нужно именно вот так, то можно задать каждую строку одинаковой
длины (дополнить пробелами) и тогда без проблем вырезать нужный кусок. Что-то вроде:
Код: Выделить всё
Sub(?Loc:Display{Prop:From},(40 + 2) * (Choice(?Loc:Display) - 1) + 1,40)
Экранный текст контрола, заданного как List
Добавлено: 26 Октябрь 2018, 12:56
Дед Пахом
Можно выкинуть из FROM номера между пунктами(|#1, |#2), а Loc:Display объявить как STRING(100), тогда в ней и будет название.
Экранный текст контрола, заданного как List
Добавлено: 26 Октябрь 2018, 15:09
kreator
А ещё лучше этот список заполнять из базы, из какого-нибудь справочника. Попробую пока тупой поиск в prop:From. Это надо срочно. Хотя должно быть хотя бы недокументированное решение.
Экранный текст контрола, заданного как List
Добавлено: 26 Октябрь 2018, 15:38
Игорь Столяров
kreator писал(а): ↑26 Октябрь 2018, 15:09лучше этот список заполнять из базы, из какого-нибудь справочника
Так а в чём проблема ? Это кстати, намного проще. По запросу из БД формируете QUEUE и подсовываете её в Ваш контрол.
И получаете любое значение по GET(QUEUE,Choice(?Loc:Display)) для выбранной строки …
Экранный текст контрола, заданного как List
Добавлено: 26 Октябрь 2018, 15:42
gopstop2007
kreator писал(а): ↑26 Октябрь 2018, 11:59С10. Есть контрол, заданный вот так:
Код: Выделить всё
LIST,AT(133,117,357,10),USE(LOC:Display),GRID(COLOR:Gainsboro),DROP(10)
а чего сразу combo не взяли?
Код: Выделить всё
COMBO(@s20),AT(85,65,153,12),USE(l_vidoplati),VSCROLL,DROP(2,153),FLAT,FROM('Приход ден' & |
'ег|#Приход|Расход денег|#Расход'),REQ,SKIP,#ORDINAL(12)
Результат всегда в l_vidoplati
Экранный текст контрола, заданного как List
Добавлено: 26 Октябрь 2018, 16:11
kreator
Игорь Столяров писал(а): ↑26 Октябрь 2018, 15:38
kreator писал(а): ↑
26 Октябрь 2018, 15:09
лучше этот список заполнять из базы, из какого-нибудь справочника
Так а в чём проблема ? Это кстати, намного проще. По запросу из БД формируете QUEUE и подсовываете её в Ваш контрол.
И получаете любое значение по GET(QUEUE,Choice(?Loc:Display)) для выбранной строки …
Наша специфика. Чтобы провести изменения в БД нужны согласования и т.д.
Согласен, дурдом.
gopstop2007 писал(а): ↑26 Октябрь 2018, 15:42
а чего сразу combo не взяли?
Я что-то давно отвык от строковых переменных в таком контексте. Реально нужно только значение. Практически всегда этого достаточно. А это я пытаюсь костыль подставить, поскольку времени нет. Как уже сам понимаю - временный. Буду делать справочник.
Экранный текст контрола, заданного как List
Добавлено: 26 Октябрь 2018, 20:29
RaFaeL
Руками в коде очередь из двух полей заполни и всё. Затем по choice значение получишь
Экранный текст контрола, заданного как List
Добавлено: 29 Октябрь 2018, 16:53
Yufil
1. Есть функция Contents( ?list ), покажет выбранное значение - независимо, есть ли Use-переменная.
2. А дальше примерно так:
Topic# = Instring( ?List{Prop:From}, '|#' & Contents(?List) & '|', 1, 1) ! Найдём вхождение выбранного значения
IF Topic# = 0
Return( Contents(?List) )
ELSE
! Здесь ищем символ '|' , предшествующий Topic# и выбираем подстроку. Где-то так...
END
Экранный текст контрола, заданного как List
Добавлено: 02 Ноябрь 2018, 12:22
Дед Пахом
Мало кто знает, что в версии 10.11975 появились очень мощные пользовательские свойства:
FEATURE: Implemented user-defined properties:
A user-defined property allows you to associate a string value with any entity's standard properties
for example: built-in variables (SYSTEM, PRINTER, TARGET), WINDOWs, REPORTs,
controls, bands, etc. The syntax of user-defined properties is the
same as for standard properties but string (constant or expression)
is used to identify the property rather than property number:
[target $] object {property-name [, index]}
The name of the user-defined property is case insensitive. It cannot be equal to the name of any
standard PROP:* property with or without "PROP:" prefix.
The name also can't begin with Numeric digits.
For OLE controls names of user-defined properties cannot
be equal to any of the OLE/OCX's properties.
If the index is missing or equal to 0, it is treated as 1.
Examples:
SYSTEM {'User-Name'} = 'Frank Sinatra' !Set the name of the current user
MESSAGE('the user is: ' & SYSTEM{'User-Name'}) !displays the text 'Frank Sinatra'
Можно сделать так:
Код: Выделить всё
!- после OPEN(Window)
?LOC:Display{'Item-Name', 1} = 'Внутренние вопросы производства'
?LOC:Display{'Item-Name', 2} = 'Проблемы с технологической/конструкторской документацией'
?LOC:Display{'Item-Name', 3} = 'Проблемы с инструментом,СТО'
?LOC:Display{'Item-Name', 4} = 'Внутренние вопросы производства'
?LOC:Display{'Item-Name', 5} = 'Проблемы по качеству (со сторонними организациями)'
?LOC:Display{'Item-Name', 6} = 'Проблемы по качеству (КнАФ)'
........
!- по Event:Accepted
var:DisplayText = ?LOC:Display{'Item-Name', LOC:Display}
Экранный текст контрола, заданного как List
Добавлено: 02 Ноябрь 2018, 15:14
kreator
Дед Пахом писал(а): ↑02 Ноябрь 2018, 12:22
Мало кто знает, что в версии 10.11975 появились очень мощные пользовательские свойства:
Вообще, это то, что я искал. Хотя я уже ушёл. Но вот у меня не удалось в моём данном случае отобразить в листе присвоенные итемы. Даже дал display(). Но присвоенные значения храняться где-то. Явный просмотр свойства даёт правильный результат. Или это просто дополнительная фича, никак не связанная с prop:From?
Экранный текст контрола, заданного как List
Добавлено: 02 Ноябрь 2018, 15:22
Дед Пахом
kreator писал(а): ↑02 Ноябрь 2018, 15:14Или это просто дополнительная фича, никак не связанная с prop:From?
Причём тут prop:From вообще? Перечитайте цитату.
Экранный текст контрола, заданного как List
Добавлено: 02 Ноябрь 2018, 15:47
kreator
Yufil писал(а): ↑29 Октябрь 2018, 16:531. Есть функция Contents( ?list ), покажет выбранное значение - независимо, есть ли Use-переменная.
В моём случае выдаёт цифру, значение. Видимо, чудес не бывает.
Дед Пахом писал(а): ↑02 Ноябрь 2018, 15:22
kreator писал(а): ↑02 Ноябрь 2018, 15:14Или это просто дополнительная фича, никак не связанная с prop:From?
Причём тут prop:From вообще? Перечитайте цитату.
Да, не причём. Это определённые пользователем свойства. В моём случае работает как надо. Но вообще специфичная фича. Надо еще придумать где бы она пригодилась.
Экранный текст контрола, заданного как List
Добавлено: 02 Ноябрь 2018, 16:07
Игорь Столяров
kreator писал(а): ↑02 Ноябрь 2018, 15:47Надо еще придумать где бы она пригодилась.
На мой вгляд, эти проперти - бесполезный технологический прибамбас.
В контексте использования для нумерованных массивов строк - проще объявить группу со строками-константами.
И по номеру поля в группе получать значения. Т.е. получается, что-то вроде ITEMIZE, но только для символьных строк …