check и prop:Use в динамике

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
kreator
✯ Ветеран ✯
Сообщения: 5025
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 22 раза

check и prop:Use в динамике

Сообщение 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?
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 3963
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 29 раз
Поблагодарили: 22 раза
Контактная информация:

Re: check и prop:Use в динамике

Сообщение Admin »

kreator писал(а):И по prop:Use я не могу ни присвоить значение ни получить его назад. Prop:Checked работает, но как задать изначально, что Checked?
А что мешает сделать так?

Код: Выделить всё

loc:checkbox byte
  CODE
  ...
  i#{PROP:Use} = loc:checkbox
  loc:checkbox = 1
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
kreator
✯ Ветеран ✯
Сообщения: 5025
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 22 раза

Re: check и prop:Use в динамике

Сообщение kreator »

Предполагал использовать неопределённое число контролов, создавать всё в динамике, а информацию о них получать из некоей Queue. Элемент Queue не получится ведь использовать в prop:Use? Если только массив?
We are hard at work… for you. :)
Dark_Stranger
Новичок
Сообщения: 17
Зарегистрирован: 16 Апрель 2013, 16:34

Re: check и prop:Use в динамике

Сообщение Dark_Stranger »

Вот энто мона попробывать
ByteRef &BYTE
CODE
.....
ByteRef &= NEW(BYTE)
RQ:Index3{PROP:USE} = ByteRef
CHANGE(RQ:Index3, True)

Тока потом наверна еще Dispose нуна делать будет
kreator
✯ Ветеран ✯
Сообщения: 5025
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 22 раза

Re: check и prop:Use в динамике

Сообщение kreator »

То же самое, что и предлагал уважаемый админ. Попробуйте десять контролов создать по Вашему способу. Пока я решил использовать массив, типа того:

Код: Выделить всё

i#{prop:Use} = LOC:Check[j#]
LOC:Check[j#] = Q.FQValue1
где j# - некая переменная цикла.
Если появится идея, буду благодарен.
We are hard at work… for you. :)
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: check и prop:Use в динамике

Сообщение 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
kreator
✯ Ветеран ✯
Сообщения: 5025
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 22 раза

Re: check и prop:Use в динамике

Сообщение kreator »

Мне надо так:

Код: Выделить всё

SELF.W $ SELF.Q.Control{PROP:Use} = SELF.Q.Field
SELF.Q.Field = 1
И контрол должен быть CHECKED.
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3143
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 11 раз
Поблагодарили: 32 раза
Контактная информация:

Re: check и prop:Use в динамике

Сообщение Дед Пахом »

я не пойму, CHANGE(SELF.Q.Control, SELF.Q.Field) не работает, что ли?
С уважением, ДП
kreator
✯ Ветеран ✯
Сообщения: 5025
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 22 раза

Re: check и prop:Use в динамике

Сообщение kreator »

Change почему-то не работает. Использую Change для изменения стринговых полей, здесь всё хорошо. Check не идёт. Мне кажется дело в prop:Use. Ссылка на элемент массива работает как надо, ссылка на элемент очереди не идёт.
We are hard at work… for you. :)
Ответить