EVENT для динамически создаваемых контролов

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
m0uSE
Новичок
Сообщения: 15
Зарегистрирован: 31 Август 2005, 4:13

EVENT для динамически создаваемых контролов

Сообщение m0uSE »

Здравствуйте.

создаю кнопку:

ctrl=create(0,CREATE:BUTTON)
...
ctrl{prop:hide} = false

и таких кнопок около 80 штук :shock:

как отлавливать нажатие на каждую из них в отдельности и выполнить соответствуеше номеру кнопки действие...
Нет нечего невозможного, есть мало гороятное !
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

CASE ACCEPTED()
OF ctrl
! do action
OF ctrl+1
! do action
OF ctrl+2
! do action
OF ctrl+3 OROF ctrl+4
! do action
ELSE
IF ACCEPTED() = ctrl+5
! do action
END
IF ACCEPTED() = ctrl+5
! do action
END
END
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

ctrl = номер первого созданного контрола
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Сообщение StillZero »

так IMHO попроще будет

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

CtrlFEQ LONG,DIM(80)

 code
 ...
 CtrlFEQ[1]=CREATE(0,CREATE:Button)

 ACCEPT
    CASE EVENT()
       OF EVENT:ACCEPTED
          LOOP counter=1 to 80
             IF FIELD()=CtrlFEQ[counter]
                message('нажали кнопку с номером '&counter)
             END
           END
    END
 END
PS
опять "Сапера" делаешь?
m0uSE
Новичок
Сообщения: 15
Зарегистрирован: 31 Август 2005, 4:13

Сообщение m0uSE »

CASE ACCEPTED()
OF ctrl
! do action
OF ctrl+1
! do action
OF ctrl+2
! do action
OF ctrl+3 OROF ctrl+4
! do action
ELSE
IF ACCEPTED() = ctrl+5
! do action
END
IF ACCEPTED() = ctrl+5
! do action
END
END
так зделал но чуть башня не съехала пока на все 80 прописал :)

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

CtrlFEQ LONG,DIM(80)

 code
 ...
 CtrlFEQ[1]=CREATE(0,CREATE:Button)

 ACCEPT
    CASE EVENT()
       OF EVENT:ACCEPTED
          LOOP counter=1 to 80
             IF FIELD()=CtrlFEQ[counter]
                message('нажали кнопку с номером '&counter)
             END
           END
    END
 END 
подобное не проходило хотя по другому делал... может наворотил :)
PS
опять "Сапера" делаешь?
нет... это учет по запуску игр в клубе... запускает и записывает в базу + 1 :) но так как неизвестно у кого скоко игр то приходится создавать кнопки динамически :) всем спосибо за ответы вобшем проблема решена...
Нет нечего невозможного, есть мало гороятное !
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

Судя по всему ты что то криво сделал... или продумал.
По идее в твоем варианте Var +=1
можно код очень компактным сделать...
Типа заюзать смещение контрола и смещение переменной в файле, или еще как ...
Ответить