Страница 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. Ссылка на элемент массива работает как надо, ссылка на элемент очереди не идёт.