purebasic.info

PureBasic forum
Текущее время: Вт ноя 13, 2018 7:55 am

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: панель в гноме
СообщениеДобавлено: Сб авг 06, 2016 8:57 pm 
Не в сети
док

Зарегистрирован: Ср янв 15, 2014 2:21 pm
Сообщений: 76
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Добрый день!
имеется код:
Код:
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
Global frm_0, Panel_0, txt_0, txt_1, txt_2, txt_3, txt_4
 
Procedure End_Program()
  UnbindEvent(#PB_Event_CloseWindow, @End_Program(), frm_0)
  End  
EndProcedure
 
Procedure PanelChange()
  i=GetGadgetState(Panel_0)
  Select i
    Case 0
      SetGadgetText(txt_0, Str(i))
    Case 1
      SetGadgetText(txt_1, Str(i))
    Case 2
      SetGadgetText(txt_2, Str(i))
    Case 3
      SetGadgetText(txt_3, Str(i))
    Case 4
      SetGadgetText(txt_4, Str(i))
  EndSelect
EndProcedure
 
Procedure Openfrm_0(x = 0, y = 0, width = 730, height = 465)
  frm_0 = OpenWindow(#PB_Any, x, y, width, height, "окно", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
  Panel_0 = PanelGadget(#PB_Any, 5, 5, 720, 455)
  AddGadgetItem(Panel_0, -1, "0")
    txt_0 = TextGadget(#PB_Any, 10, 0, 355, 25, "")
  AddGadgetItem(Panel_0, -1, "1")
    txt_1 = TextGadget(#PB_Any, 5, 0, 180, 25, "")
  AddGadgetItem(Panel_0, -1, "2")
    txt_2 = TextGadget(#PB_Any, 5, 6, 185, 19, "")
  AddGadgetItem(Panel_0, -1, "3")
    txt_3 = TextGadget(#PB_Any, 5, 0, 200, 25, "")
  AddGadgetItem(Panel_0, -1, "4")
    txt_4 = TextGadget(#PB_Any, 5, 0, 265, 25, "")
  CloseGadgetList()
   
  BindEvent(#PB_Event_CloseWindow, @End_Program(), frm_0)
  BindGadgetEvent(Panel_0, @PanelChange(), #PB_EventType_Change)
EndProcedure
 
Openfrm_0()
 
Repeat
  WaitWindowEvent()
  Delay(3)
ForEver
 



интересно в этом коде то, что под виндой он работает как надо, а вот под убунтой - нет.
событие происходит не когда кликаем на вкладку, а когда с нее уходим!

как быть?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: панель в гноме
СообщениеДобавлено: Сб авг 06, 2016 10:48 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 777
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 12 раз.
Пункты репутации: 0
Цитата:
событие происходит не когда кликаем на вкладку, а когда с нее уходим!

По моему GetGadgetState(Panel_0) возвращает не правильно.
Так попробуй.
Код:
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
Global frm_0, Panel_0, txt_0, txt_1, txt_2, txt_3, txt_4
 
 
    ProcedureC CallBack( *Event.GdkEventAny, *Handle )
        Protected *Widget.GtkWidget = gtk_get_event_widget_(*Event)
       
        Select *Event\type
          Case #GDK_BUTTON_PRESS
            ;Debug "1 "+gtk_notebook_get_current_page_( GadgetID(Panel_0) )
          Case #GDK_BUTTON_RELEASE
            ;Debug "2 "+gtk_notebook_get_current_page_( GadgetID(Panel_0) )
            PostEvent(#PB_Event_Gadget,frm_0,Panel_0,#PB_EventType_Change)
          Case #GDK_DESTROY
          Case #GDK_DELETE
          Case #GDK_UNMAP
           
            gdk_event_handler_set_( 0, 0, 0 )
          Default
           
        EndSelect
       
            gtk_main_do_event_( *Event )
       
        EndProcedure
     
     
Procedure End_Program()
  UnbindEvent(#PB_Event_CloseWindow, @End_Program(), frm_0)
  End  
EndProcedure
 
Procedure PanelChange()
  i=GetGadgetState(Panel_0)
 
  Debug "State "+i
 
  Select i
    Case 0
      SetGadgetText(txt_0, Str(i))
    Case 1
      SetGadgetText(txt_1, Str(i))
    Case 2
      SetGadgetText(txt_2, Str(i))
    Case 3
      SetGadgetText(txt_3, Str(i))
    Case 4
      SetGadgetText(txt_4, Str(i))
  EndSelect
EndProcedure
 
Procedure Openfrm_0(X = 0, Y = 0, Width = 730, Height = 465)
  frm_0 = OpenWindow(#PB_Any, X, Y, Width, Height, "окно", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
  Panel_0 = PanelGadget(#PB_Any, 5, 5, 720, 455)
  AddGadgetItem(Panel_0, -1, "0")
    txt_0 = TextGadget(#PB_Any, 10, 0, 355, 25, "")
  AddGadgetItem(Panel_0, -1, "1")
    txt_1 = TextGadget(#PB_Any, 5, 0, 180, 25, "")
  AddGadgetItem(Panel_0, -1, "2")
    txt_2 = TextGadget(#PB_Any, 5, 6, 185, 19, "")
  AddGadgetItem(Panel_0, -1, "3")
    txt_3 = TextGadget(#PB_Any, 5, 0, 200, 25, "")
  AddGadgetItem(Panel_0, -1, "4")
    txt_4 = TextGadget(#PB_Any, 5, 0, 265, 25, "")
  CloseGadgetList()
 
  gdk_event_handler_set_( @CallBack(), 0, 0 )
         
  BindEvent(#PB_Event_CloseWindow, @End_Program(), frm_0)
  BindGadgetEvent(Panel_0, @PanelChange(), #PB_EventType_Change)
EndProcedure
 
Openfrm_0()
 
Repeat
  WaitWindowEvent()
  Delay(3)
ForEver



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: панель в гноме
СообщениеДобавлено: Сб авг 06, 2016 11:24 pm 
Не в сети
док

Зарегистрирован: Ср янв 15, 2014 2:21 pm
Сообщений: 76
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Спасибо! Вот так заработало:
Код:
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
Global frm_0, Panel_0, txt_0, txt_1, txt_2, txt_3, txt_4
 
ProcedureC CallBack( *Event.GdkEventAny, *Handle )
  Protected *Widget.GtkWidget = gtk_get_event_widget_(*Event)
  Select *Event\type
    Case #GDK_BUTTON_PRESS
      ;Debug "1 "+gtk_notebook_get_current_page_( GadgetID(Panel_0) )
    Case #GDK_BUTTON_RELEASE
      i=gtk_notebook_get_current_page_( GadgetID(Panel_0) )
      Select i
        Case 0
          SetGadgetText(txt_0, Str(i))
        Case 1
          SetGadgetText(txt_1, Str(i))
        Case 2
          SetGadgetText(txt_2, Str(i))
        Case 3
          SetGadgetText(txt_3, Str(i))
        Case 4
          SetGadgetText(txt_4, Str(i))
      EndSelect
     
      ;PostEvent(#PB_Event_Gadget, frm_0, Panel_0, #PB_EventType_Change)
    Case #GDK_DESTROY
    Case #GDK_DELETE
    Case #GDK_UNMAP
      gdk_event_handler_set_( 0, 0, 0 )
    Default
  EndSelect
  gtk_main_do_event_( *Event )
EndProcedure
     
Procedure End_Program()
  UnbindEvent(#PB_Event_CloseWindow, @End_Program(), frm_0)
  End  
EndProcedure
 
Procedure Openfrm_0(X = 0, Y = 0, Width = 730, Height = 465)
  frm_0 = OpenWindow(#PB_Any, X, Y, Width, Height, "окно", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
  Panel_0 = PanelGadget(#PB_Any, 5, 5, 720, 455)
  AddGadgetItem(Panel_0, -1, "0")
    txt_0 = TextGadget(#PB_Any, 10, 0, 355, 25, "")
  AddGadgetItem(Panel_0, -1, "1")
    txt_1 = TextGadget(#PB_Any, 5, 0, 180, 25, "")
  AddGadgetItem(Panel_0, -1, "2")
    txt_2 = TextGadget(#PB_Any, 5, 6, 185, 19, "")
  AddGadgetItem(Panel_0, -1, "3")
    txt_3 = TextGadget(#PB_Any, 5, 0, 200, 25, "")
  AddGadgetItem(Panel_0, -1, "4")
    txt_4 = TextGadget(#PB_Any, 5, 0, 265, 25, "")
  CloseGadgetList()
 
  gdk_event_handler_set_( @CallBack(), 0, 0 )
  BindEvent(#PB_Event_CloseWindow, @End_Program(), frm_0)
EndProcedure
 
Openfrm_0()
 
Repeat
  WaitWindowEvent()
  Delay(3)
ForEver



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

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


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

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


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

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