purebasic.info

PureBasic forum
Текущее время: Вс окт 21, 2018 5:41 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
СообщениеДобавлено: Сб авг 05, 2017 8:19 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Сб авг 05, 2017 8:34 pm
Сообщений: 41
Откуда: Россия, Брянск
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Здравствуйте!
Подскажите, пожалуйста, почему нет реакции на событие?

Код:
1
2
3
4
5
6
7
8
9
10
If OpenWindow(0, 0, 0, 240, 200, "Тортила",  #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
  SpinGadget     (1, 180, 20, 60, 20, 5, 1000,#PB_Spin_Numeric)
  SetGadgetText(0, "5")
  Repeat
    Event = WaitWindowEvent()
    If Eventt=#PB_EventType_Change And EventGadget()=1
      Debug ("Change")
    EndIf
    Until Event = #PB_Event_CloseWindow
         EndIf


Теоретически, при изменении значения SpinGadget, должно срабатывать событие #PB_EventType_Change
Собственно, хочу сделать контролируемый ввод числа: стрелочками и с клавиатуры, исключив при этом ввод мусора, ввод слишком большого или слишком маленького числа.
Заранее спасибо.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 05, 2017 8:54 pm 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 433
Благодарил (а): 50 раз.
Поблагодарили: 20 раз.
Пункты репутации: 10
Цитата:
Eventt

и
Цитата:
SetGadgetText(0

Опечатка? В остальном код корректный.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 05, 2017 8:59 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Чёрный Волк писал(а):
Подскажите, пожалуйста, почему нет реакции на событие?


Совет начинающему, дабы впредь не было таких обидных ошибок:
Всегда первой строкой кода пишите такую волшебную строчку
EnableExplicit
это принудит к объявлению переменных, но исключит подобные ошибки.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 05, 2017 10:04 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11300
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Чёрный Волк писал(а):
Event = WaitWindowEvent()   
If Eventt=#PB_EventType_Change
Во первых Event и Eventt это не одна и та же переменная. Во вторых WaitWindowEvent возвращает события (их список), а не типы событий.
В справке есть пример http://www.purebasic.com/documentation/ ... adget.html

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 05, 2017 10:57 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Сб авг 05, 2017 8:34 pm
Сообщений: 41
Откуда: Россия, Брянск
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Чёрный Волк писал(а):
Event = WaitWindowEvent()
If Eventt=#PB_EventType_Change
Во первых Event и Eventt это не одна и та же переменная. Во вторых WaitWindowEvent возвращает события (их список), а не типы событий.
В справке есть пример http://www.purebasic.com/documentation/ ... adget.html


Спасибо, большое! Понял!

Цитата:
В справке есть пример

Знаю. Собственно по справке и смотрел, но только вот не понял чуток...

Свой код исправил.
Получилось примерно так:

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
If OpenWindow(0, 0, 0, 240, 200, "Тортила",  #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
  SpinGadget     (1, 180, 20, 60, 20, 5, 1000,#PB_Spin_Numeric)
  SetGadgetText(1, "5")
  Repeat
    Event = WaitWindowEvent()
    If Event=#PB_Event_Gadget  And EventGadget()=1
      EventType = EventType()
      If EventType=#PB_EventType_Change
       
      Debug ("Change")
    EndIf  
    EndIf
    Until Event = #PB_Event_CloseWindow
         EndIf



Всё верно? Или я опять где-то накосячил?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 05, 2017 11:03 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Сб авг 05, 2017 8:34 pm
Сообщений: 41
Откуда: Россия, Брянск
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Чёрный Волк писал(а):
Подскажите, пожалуйста, почему нет реакции на событие?


Совет начинающему, дабы впредь не было таких обидных ошибок:
Всегда первой строкой кода пишите такую волшебную строчку
EnableExplicit
это принудит к объявлению переменных, но исключит подобные ошибки.


Спасибо! Совет стоящий, ибо объявлять перемененные - дело полезное!
Только, вот я еще не знаю, как они в PB Объявляются, т.к. PB с меня этого просто не требовал :oops:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 05, 2017 11:44 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Сб авг 05, 2017 8:34 pm
Сообщений: 41
Откуда: Россия, Брянск
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Еще такой вопрос...
Как правильно менять параметры SpinGadget
Ну, например минимально (максимально) допустимое значение, координаты и т.д.
Ведь в процессе работы программы они могут меняться, точнее может появиться необходимость их изменить...
Я пока-что просто переписываю SpinGadget начисто т.е.

Код:
1
2
3
4
5
SpinGadget     (1, 180, 20, 60, 20, 5, 1000,#PB_Spin_Numeric)
if (что-то случилось)
 SpinGadget     (1, 180, 20, 60, 20, 15, 1000,#PB_Spin_Numeric)
Endif
 



Но правильно ли это????


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс авг 06, 2017 6:54 am 
Не в сети
док

Зарегистрирован: Пн сен 27, 2010 10:30 am
Сообщений: 144
Откуда: Уренгой
Благодарил (а): 0 раз.
Поблагодарили: 10 раз.
Пункты репутации: 5
Из справки по SpinGadget()

SetGadgetAttribute(): With one of the following attributes:
#PB_Spin_Minimum ; Changes the minimum value. - меняем минимум
#PB_Spin_Maximum ; Changes the maximum value. - меняем максимум

SetGadgetState(); Change the gadget value. - меняем активное положение
SetGadgetText(); - меняем текст


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс авг 06, 2017 7:10 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Сб авг 05, 2017 8:34 pm
Сообщений: 41
Откуда: Россия, Брянск
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
КЭС писал(а):
Из справки по SpinGadget()

SetGadgetAttribute(): With one of the following attributes:
#PB_Spin_Minimum ; Changes the minimum value. - меняем минимум
#PB_Spin_Maximum ; Changes the maximum value. - меняем максимум

SetGadgetState(); Change the gadget value. - меняем активное положение
SetGadgetText(); - меняем текст

Спасибо.
А остальные (х.у. Width, Height) не меняются?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс авг 06, 2017 8:12 am 
Не в сети
док

Зарегистрирован: Пн сен 27, 2010 10:30 am
Сообщений: 144
Откуда: Уренгой
Благодарил (а): 0 раз.
Поблагодарили: 10 раз.
Пункты репутации: 5
Для этого ResizeGadget() есть.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс авг 06, 2017 8:18 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Сб авг 05, 2017 8:34 pm
Сообщений: 41
Откуда: Россия, Брянск
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
КЭС писал(а):
Для этого ResizeGadget() есть.

Спасибо, большущее!
Плохо всё таки не знать синтаксис языка - чувствуешь себя слепым котёнком :oops:


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB