purebasic.info

PureBasic forum
Текущее время: Ср окт 18, 2017 7:45 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Гаджет ScrollBarGadget
СообщениеДобавлено: Пн сен 18, 2017 12:05 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 513
Благодарил (а): 2 раз.
Поблагодарили: 26 раз.
Пункты репутации: 9
Гаджет ScrollBarGadget в версии 5.31
Собственно при извлечении параметра с помощью GetGadgetState
прыгает бывает числовая градация это у всех так?:roll:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
EnableExplicit
 
 
Procedure ScrollBar_Vertical();нажата левая кнопка мыши на вертикальной прокрутки
  Protected n.l
  n=GetGadgetState(200)
  Debug Str(n)
 
EndProcedure
Procedure ScrollBar_Gorezontal();нажата левая кнопка мыши на горезонтальной прокрутки
 Debug GetGadgetState(201)
EndProcedure  
Procedure formy()
 
   If OpenWindow(0,0,0,800,580,"Editor", #PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_Invisible|#PB_Window_SizeGadget)
      SmartWindowRefresh(0, #True); Уменьшаем мерцания окна при изменении его размеров
      HideWindow(0,1)
       
    CanvasGadget(0,0,40,782,483,#PB_Screen_SmartSynchronization)
 
    ScrollBarGadget(200, 782, 40, 18,483 ,0, 1000, 1, #PB_ScrollBar_Vertical)
   
     ScrollBarGadget(201, 0, 523, 782,18 ,0, 1000, 1)      
    BindGadgetEvent(200,@ScrollBar_Vertical())
    ;BindGadgetEvent(201,@ScrollBar_Gorezontal())
    DisableGadget(201,1)
    DisableGadget(200,1)
   
    DisableGadget(200,0)
    SetGadgetAttribute(200,#PB_ScrollBar_Maximum,5000)
   
    ;
    AddKeyboardShortcut(0,#PB_Shortcut_Up,201)
    AddKeyboardShortcut(0,#PB_Shortcut_Down,202)
    ;
   ; Создаём строку состояния.
   If CreateStatusBar(0,WindowID(0))
   ; Добавляем три раздела.
   AddStatusBarField(100)
   AddStatusBarField(100)
   AddStatusBarField(800)
   EndIf
 
 
   HideWindow(0,0)
 
 
EndIf
 
EndProcedure
 
formy();
 
;{;
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
      Case #PB_Event_SizeWindow
 
      Case #PB_Event_Menu
       
        Select EventMenu()
         EndSelect
      Case #PB_Event_Gadget  
       
        Select EventGadget()
            Case 200
            Debug "scrollgadget"
        EndSelect
       
    EndSelect
 
 ForEver
End
 ;};
 
 
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Гаджет ScrollBarGadget
СообщениеДобавлено: Пн сен 18, 2017 10:45 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 513
Благодарил (а): 2 раз.
Поблагодарили: 26 раз.
Пункты репутации: 9
Скачал какую то версию 5.60 и та же болезнь при выводе прибавляет по 1 и в какой то момент раз и уже 2 прибавил
:?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Гаджет ScrollBarGadget
СообщениеДобавлено: Пн сен 18, 2017 10:58 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11033
Благодарил (а): 4 раз.
Поблагодарили: 373 раз.
Так и не понял в чем проблема.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Гаджет ScrollBarGadget
СообщениеДобавлено: Пн сен 18, 2017 11:12 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 513
Благодарил (а): 2 раз.
Поблагодарили: 26 раз.
Пункты репутации: 9
Пётр писал(а):
Так и не понял в чем проблема.

Проблема в том что при создании гаджета указан шаг изменения позиции как 1
при выводе номер=номер+1 а он прибавляет по 1 до какого то момента после раз и сразу увеличивает на 2.
Запусти код там в дебагере это должно быть видно. :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Гаджет ScrollBarGadget
СообщениеДобавлено: Пн сен 18, 2017 11:46 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11033
Благодарил (а): 4 раз.
Поблагодарили: 373 раз.
Прибавляет по одному.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Гаджет ScrollBarGadget
СообщениеДобавлено: Пн сен 18, 2017 10:24 pm 
Не в сети
доцент

Зарегистрирован: Ср янв 15, 2014 2:21 pm
Сообщений: 72
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
под линуксом получается так:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
scrollgadget
2
scrollgadget
3
scrollgadget
4
scrollgadget
5
scrollgadget
6
scrollgadget
7
scrollgadget
8
scrollgadget
9
scrollgadget
10
scrollgadget
 


в винде так:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
1
scrollgadget
2
2
scrollgadget
3
3
scrollgadget
4
4
scrollgadget
5
5
scrollgadget
6
6
scrollgadget
7
7
scrollgadget
8
8
scrollgadget
9
9
scrollgadget
10
10
scrollgadget



пурик 5.31


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Гаджет ScrollBarGadget
СообщениеДобавлено: Вт сен 19, 2017 12:20 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 513
Благодарил (а): 2 раз.
Поблагодарили: 26 раз.
Пункты репутации: 9
Дебагер на показ scolgadget выруби.
а то что он дублирует это тоже ещё устроило бы,но вот то что он начинает прыгать не с назначенным шагом это уже затык у меня получается .... :roll:
Попробывал такой код но тоже что то не то(не шагает +1),может он как в отдельном патоке должен работать :?:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
 
;Slightly adjusted version (better control of the track / scroll gadgets)
Global *ScrollBar
;#WindowHeight=345
;#WindowWidth=400
Procedure Callback(WindowID, Message, wParam, lParam)
  Shared  si,*ScrollBar
 
  If WindowID=WindowID(0)
   
    Select lParam
       
      Case *ScrollBar:
        Select Message
          Case #WM_HSCROLL:
            Select (wParam & $ffff)
               
              Case #SB_LINEUP:
                SetScrollPos_(lParam, #SB_CTL, 0, TRUE)
              Case #SB_LINEDOWN:
                     SetScrollPos_(lParam, #SB_CTL, 1000, TRUE);
              Case #SB_LINELEFT:                                   ;When user clicks one of the arrows
                N=GetScrollPos_(*ScrollBar,#SB_CTL)-1
                themin=0
                themax=0
                GetScrollRange_(*ScrollBar,#SB_CTL,@themin,@themax)
                If Nthemax
                  N=themax                                            ;Ensure that the value is in range
                EndIf        
                SetScrollPos_(*ScrollBar, #SB_CTL, N, 1)               ;1 on the end is the redraw flag :)
               
               
              Case #SB_PAGELEFT:                                   ;Page left / right is user clicking the space to the left or right of scroll box
                N=GetScrollPos_(*ScrollBar,#SB_CTL)-2
                themin=0
                themax=0
                GetScrollRange_(*ScrollBar,#SB_CTL,@themin,@themax)
                If Nthemax
                  N=themax                                            ;Ensure that the value is in range
                EndIf        
                SetScrollPos_(*ScrollBar, #SB_CTL, N, 1)
               
 
               
              Case #SB_THUMBPOSITION:           ;When the user has finished dragging the scroll bar bit
                N=wParam >> 16
                SetScrollPos_(*ScrollBar, #SB_CTL, N, 1)
               
 
               
              Case #SB_THUMBTRACK:             ;When the user is dragging the scroll box bit        
                N=wParam >> 16
                SetScrollPos_(*ScrollBar, #SB_CTL, N, 1)  
 
               
              Case #SB_ENDSCROLL:              ;User has finished scrolling the gadget!
                ;Could put the redraw code here i guess
                N=GetScrollPos_(*ScrollBar,#SB_CTL)
                SetScrollPos_(*ScrollBar, #SB_CTL, N, 1)   ;just redraws the gadget
   
               
              Case #SB_BOTTOM:                 ;'Home' and 'end' keys (not supported here :wink:
              Case #SB_TOP:
               
            EndSelect
           
            SetGadgetText(9, "Scroll "+Str(N))  
        EndSelect
       
    EndSelect
  EndIf
 
 
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 100, 120, 400, 345, "PureBasic - Gadget Demonstration", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
      SetWindowCallback(@Callback())
 
 
Global  ssi.SCROLLINFO
  ssi\cbSize = SizeOf(SCROLLINFO)
  ssi\fMask = #SIF_ALL
  ssi\nMin = 0
  ssi\nMax = 1000
  ssi\nPage = 1
  ssi\nPos = 0
  ssi\nTrackPos = 0
 
  *ScrollBar = CreateWindowEx_(0,"SCROLLBAR", "", #WS_CHILD | #WS_VISIBLE | #SBS_HORZ , 20, 150, 350, 20, WindowID(0), 0, GetModuleHandle_(0), 0)
  SendMessage_(*ScrollBar , #SBM_SETSCROLLINFO, 1, ssi)
 
  TextGadget(9, 100,200, 390, 24, "PureBasic - Gadget demonstration")
 
 
 
 
  ;Main loop
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
        Case 8 ; Quit...
          EventID = #PB_Event_CloseWindow
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
EndIf
End
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Гаджет ScrollBarGadget
СообщениеДобавлено: Вт сен 26, 2017 12:27 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 513
Благодарил (а): 2 раз.
Поблагодарили: 26 раз.
Пункты репутации: 9
А создавая процедуру обработчика BindGadgetEvent(200,@ScrollBar_Vertical())
в ней как пользоваться параметрами #SB_LINEUP,#SB_PAGEUP,#SB_THUMBPOSITION ? :roll:


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

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


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

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


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

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