на С4 такой проперти нет

, так что пришлось воспользоваться советом Юрия.
C уважением,
Ставич Олег
Ну тогда
CHOICE( [control] )
CHOICE Returns a user selection number.
control A field equate label of a LIST, COMBO, SHEET, or OPTION control.
The CHOICE procedure returns the sequence number of a selected item in an OPTION structure, SHEET structure, LIST box, or COMBO control
WBR,
Nick Tsigouro. MailTo:
Nick@arsis.ru
Блин, ну читайте вопрос, требовалось получить ТЕКСТ, а не номер.
CHOICE(?List) возвращает НОМЕР.
С уважением,
Ставич Олег
Result = !
CHOOSE(CHOICE(?List)=1, !
SUB(?list{prop:from},1,INSTRING('!',?list{prop:from},1,1)-1), !
SUB(?list{prop:from},INSTRING('!',?list{prop:from},1,1)+1,LEN(?list{prop:fro
m})))
Andrew Myalin
andrew@arsis.ru
http://mavcla.arsis.ru (MAV Direct ODBC)
IRC: IRC.RINET.RU:6669, Channel #Clarion, AndrewM
ICQ: 10659412
Yahoo group:
clarion@yahoogroups.com
Ну это типа вместо
?List{PROP:что-то}
Муторно и не удобно. Я пока обошелся USE-переменной.
С уважением,
Ставич Олег
интеренсо, а как ? просто у меня есть схожие мес та, я решаю через выбор номера и по нему получаю текст.
--
Best regards,
Курко Максим mailto:
ClaList@enigmasoft.com.ua
ICQ: <164766643>
Во первых номер отдельно, текст отдельно. Номер используется как параметр для вызова, ну скажем, определенной процедуры. Текст же нужен для того, что
бы записать в лог, в каком режиме эта процедура вызывается. В лог просто пишется с экрана:
WriteLog(?Promp1{Prop:text} & ' ' & Тут_текст_из_ListBox1)
WriteLog(?Promp2{Prop:text} & ' ' & Тут_текст_из_ListBox2)
...
WriteLog(?PrompN{Prop:text} & ' ' & Тут_текст_из_ListBoxN)
Просто раньше вместо List был Combo (без Use-переменной), и для него хватало
Prop:ScreenText:
WriteLog(?Promp1{Prop:text} & ' ' & ?Combo1{Prop:ScreenText})
сейчас же я полностью отказался от использования Combo. И был несколько расстроен, что старая конструкция перестала работать. Но спасибо Юре, подсказал простое решение проблемы. Скажем так, наличие лишней переменной, меня нисколько не смущает. Хотя конечно хотелось бы обойтись без нее, при этом оставив простоту текста программы.
С уважением,
Ставич Олег
Result = !
CHOOSE(CHOICE(?List)=1, !
SUB(?list{prop:from},1,INSTRING('!',?list{prop:from},1,1)-1), !
SUB(?list{prop:from},INSTRING('!',?list{prop:from},1,1)+1,LEN(?list{prop:fro
m})))
Вот это вот последнее m}))) сильно похоже на издевательский смайлик.
А делов-то всего переменную завести.
Михаил
(Добавление)
LIST,AT(244,68,100,12),USE(?Del),DROP(2),FROM('Удалять!Не удалять')
choice(?Del)
--
Best regards,
Курко Максим
Хм, это по моему даст номер, а не текст...
OldStav
choice(?Del)
согласен, можно попробовать так :
tempvar1 = 'Удалять'
tempvar2 = 'Не удалять'
tempvar0 = clip(tempvar1)&'!'&clip(tempvar2)
LIST,AT(244,68,100,12),USE(?Del),DROP(2),FROM(tempvar0)
needtext = choose(choice(?del),tempvar1,tempvar2)
изврат, конечно...

))
--
Best regards,
Курко Максим
Конечно изврат, если учесть что таких контролов порядка 10
С уважением,
Ставич Олег
ну, тогда действительно можно использовать метод, который предложил Andrew Myalin, с небольшой поправкой :
Код: Выделить всё
numstep = choice(?del); start = 1; finish = 1
loop numstep times
finish = instringt('!',?list{prop:from},1,start)
if ~finish then err = 1; break .
start = finish + 1
end
result = sub(?list{prop:from},start-1,finish-start+1)
--
Best regards,
Курко Максим
я так понимаю имеется в виду 10 контролов с двумя значениями в каждом, изврата в мною предложенном варианте не вижу и для 10 контролов код по размеру не шибко пухнет:
Код: Выделить всё
GetListText FUNCTION(SIGNED Control)
CODE
RETURN CHOOSE(CHOICE(Control)=1,!
SUB(Control{prop:from},1,INSTRING('!',Control{prop:from},1,1)-1),!
SUB(Control{prop:from},INSTRING('!',Control{prop:from},1,1)+1,LEN(Control{pr
op:from})))
чего тут сложного и смайликовского, не вижу.
ЗЫ
PROP:ScreenText не работает в данном контексе
PROP:Selected вернёт то же, что и CHOICE(?List)
переменные плодить применительно к данной задаче, я смысла не вижу немного расширив код (одЫн раз и в одном месте) и он будет универсальный для любого количества позиций в PROP:From
Andrew Myalin
я так понимаю имеется в виду 10 контролов с двумя значениями в каждом,
Это где я сказал, что в контроле 2 значения? Значений могет быть сколько угодно. 2 я привел в примере для простоты.
чего тут сложного и смайликовского, не вижу.
А сможешь, вот так же в одну строку обобщить для произвольного числа значений?
PROP:ScreenText не работает в данном контексе
Угу, не работает. Из-за чего и проблема.
PROP:Selected вернёт то же, что и CHOICE(?List)
Так и есть.
В принципе можно действительно написать функцию, которая будет возвращать текст из List. Только вообщем случае код ее будет не таким простым, как для двух значений.
С уважением,
Ставич Олег
почему, тот код, который предложил я будет работать для любого кол-ва значений... loop, он и в африке loop
--
Best regards,
Курко Максим
А если у меня листбоксы типа ('Удалять!#1!Не удалять!#0')?
Дуга Михаил <
mikeduglas@intercare.ru>
А если у меня листбоксы типа ('Удалять!#1!Не удалять!#0')?
мы читаем или как?
немного расширив код (одЫн раз и в одном месте) и он будет универсальный для любого количества позиций в PROP:From
Код: Выделить всё
GetListText PROCEDURE (SIGNED Control) ! Declare Procedure
loc_Start LONG
loc_End LONG
loc_i LONG
CODE
loc_Start = 1
loc_End = 0
LOOP loc_i = 1 TO CHOICE(Control)
loc_Start = loc_End + 1
loc_End = INSTRING('!',Control{PROP:From},1,loc_Start)
END
RETURN
SUB(Control{PROP:From},loc_Start,CHOOSE(loc_End=0,LEN(Control{PROP:From}) -
loc_Start + 1,loc_End-loc_Start))
Andrew Myalin
Manual (FROM (set listbox data source)):
If a string constant is specified as the source, the individual data elements must be delimited by a vertical bar (!) character. To include a vertical bar as part of one data element, place two adjacent vertical bars in the string (!!), and only one will be displayed.
Надо ещё случай сдвоенных полосок учесть
Михаил
Так и prop:selected тоже даст номер. Если всенепременно хочется текст и всенепременно именно из контрола, то только объявлять переменную, как сказал Юра.
PS.
В данном конкретном случае имхо лучше CHECK. Или RADIO.
WBR,
Nick Tsigouro
Можно еще попробовать ?Del{PROP:ScreenText}
Удачи!
__________________________________
Владимир Якимченко (ICQ: 16993194)
Хм, это по моему даст номер, а не текст...
- если бы этот текст был введен юзером, то понятно, что нужен именно он... а в данном случае зачем ?
С уважением,
Сергей zap277@softhome.net
Что бы в лог записать.
С уважением,
Ставич Олег
(Добавление)
Надо ещё случай сдвоенных полосок учесть

ну может быть, хотя форматом ?List рулю то же я и никогда пока что не было случая когда требовались вот такие символы для отображения
Andrew Myalin
Написал: ClaList(2)