Страница 1 из 1
check и prop:Use в динамике
Добавлено: 26 Февраль 2013, 12:03
kreator
Создаю контролы на окне в динамике. Напоролся на проблемы.
Ну, например, контрол CHECK -
Код: Выделить всё
create(i#,CREATE:check)
i#{prop:Text} = clip(Q.FQName)
i#{prop:TrueValue} = '1'
i#{prop:FalseValue} = '0'
i#{prop:Use} = '1'
unhide(i#)
И по prop:Use я не могу ни присвоить значение ни получить его назад. Prop:Checked работает, но как задать изначально, что Checked?
Re: check и prop:Use в динамике
Добавлено: 26 Февраль 2013, 12:17
Admin
kreator писал(а):И по prop:Use я не могу ни присвоить значение ни получить его назад. Prop:Checked работает, но как задать изначально, что Checked?
А что мешает сделать так?
Код: Выделить всё
loc:checkbox byte
CODE
...
i#{PROP:Use} = loc:checkbox
loc:checkbox = 1
Re: check и prop:Use в динамике
Добавлено: 26 Февраль 2013, 14:27
kreator
Предполагал использовать неопределённое число контролов, создавать всё в динамике, а информацию о них получать из некоей Queue. Элемент Queue не получится ведь использовать в prop:Use? Если только массив?
Re: check и prop:Use в динамике
Добавлено: 16 Апрель 2013, 16:37
Dark_Stranger
Вот энто мона попробывать
ByteRef &BYTE
CODE
.....
ByteRef &= NEW(BYTE)
RQ:Index3{PROP:USE} = ByteRef
CHANGE(RQ:Index3, True)
Тока потом наверна еще Dispose нуна делать будет
Re: check и prop:Use в динамике
Добавлено: 17 Апрель 2013, 9:39
kreator
То же самое, что и предлагал уважаемый админ. Попробуйте десять контролов создать по Вашему способу. Пока я решил использовать массив, типа того:
Код: Выделить всё
i#{prop:Use} = LOC:Check[j#]
LOC:Check[j#] = Q.FQValue1
где j# - некая переменная цикла.
Если появится идея, буду благодарен.
Re: check и prop:Use в динамике
Добавлено: 17 Апрель 2013, 11:08
Andrew™
Код: Выделить всё
PROGRAM
MAP
Main
END
CODE
Main
MAIN PROCEDURE
Window WINDOW('Caption'),AT(,,218,212),FONT('Verdana',8,,FONT:regular,CHARSET:CYRILLIC),CENTER,SYSTEM, |
GRAY
LIST,AT(5,9,103,166),USE(?List),VSCROLL,FORMAT('41C|M~Control~@n14_@20C|M~Checked~@n14_@')
END
QwClass QUEUE,TYPE
Control SIGNED
val BYTE
field &BYTE
END
wClass CLASS
W &Window
Control SIGNED
Q &QwClass
Construct PROCEDURE()
Destruct PROCEDURE(),VIRTUAL
Init PROCEDURE(Window W,SIGNED Control)
NewCheck PROCEDURE()
Events PROCEDURE()
END
CODE
OPEN(Window)
wClass.Init(Window,?List)
LOOP 10 TIMES
wClass.NewCheck
END
ACCEPT
wClass.Events()
END
wClass.Construct PROCEDURE
CODE
SELF.Q &= NEW QwClass
wClass.Destruct PROCEDURE
I LONG
CODE
LOOP I = 1 TO RECORDS(SELF.Q)
GET(SELF.Q,I)
DISPOSE(SELF.Q.Field)
END
DISPOSE(SELF.Q)
wClass.Init PROCEDURE(Window W,SIGNED Control)
CODE
SELF.W &= W
SELf.Control = Control
W $ Control{PROP:From} = SELF.Q
wClass.NewCheck PROCEDURE
tmp SIGNED
CODE
CLEAR(SELF.Q)
SELF.Q.Field &= NEW BYTE
SELF.Q.Control = CREATE(0,CREATE:CHECK)
ADD(SELF.Q)
SELF.W $ SELF.Q.Control{PROP:Use} = SELF.Q.Field
SELF.W $ SELF.Q.Control{PROP:Text} = 'Check ' & RECORDS(SELF.Q)
SELF.W $ SELF.Q.Control{PROP:Xpos} = SELF.W $ SELF.Control{PROP:Xpos} + SELF.W $ SELF.Control{PROP:Width} + 10
SELF.W $ SELF.Q.Control{PROP:Ypos} = SELF.W $ SELF.Control{PROP:Ypos} + RECORDS(SELF.Q) * 10
SELF.W $ SELF.Q.Control{PROP:Hide} = False
wClass.Events PROCEDURE
CODE
CASE EVENT()
OF EVENT:Accepted
SELF.Q.Control = FIELD()
GET(SELF.Q,SELF.Q.Control)
IF NOT ERRORCODE()
SELF.Q.val = SELF.Q.Field
PUT(SELF.Q)
END
END
Re: check и prop:Use в динамике
Добавлено: 17 Апрель 2013, 12:59
kreator
Мне надо так:
Код: Выделить всё
SELF.W $ SELF.Q.Control{PROP:Use} = SELF.Q.Field
SELF.Q.Field = 1
И контрол должен быть CHECKED.
Re: check и prop:Use в динамике
Добавлено: 17 Апрель 2013, 15:12
Дед Пахом
я не пойму, CHANGE(SELF.Q.Control, SELF.Q.Field) не работает, что ли?
Re: check и prop:Use в динамике
Добавлено: 17 Апрель 2013, 17:39
kreator
Change почему-то не работает. Использую Change для изменения стринговых полей, здесь всё хорошо. Check не идёт. Мне кажется дело в prop:Use. Ссылка на элемент массива работает как надо, ссылка на элемент очереди не идёт.