Ein Event für diesesTrackBarGadget?

Für allgemeine Fragen zur Programmierung mit PureBasic.
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

Ein Event für diesesTrackBarGadget?

Beitrag von funkheld »

Hallo, guten.
Wie kann man dieses Routine anspringen : "Procedure board_setzen()" wenn ich bei diesem TrackBarGadget die Maustaste nach dem verschieben loslasse ?

Ich möchte es nicht mehr über ein Button machen, wenn der Regler verschoben ist.


Danke.

Gruss


Code: Alles auswählen

Global text_e.s,text_a.s,port.l,r_byte.c,w_byte.c,z.l,byte1.c,byte2.c
Global t0.l,t1.l,t2.l,t3.l,t4.l,t5.l,t6.l,t7.l,tt.l,byte1.c,byte2.c
Global *send

Declare board_setzen()

*send = AllocateMemory(10)

Enumeration
  #Window_0
  #Button_0
  #Button_1
  #Button_2
  #Button_res_a
  #Button_light
  #Button_sound
  #button_slider
  #Button_res_d
  #Button_res_c
  #Button_res_b
  #button_button
  #String_0
  #track_button
  #track_light
  #track_sound
  #track_slider
  #track_res_a
  #track_res_b
  #track_res_c
  #track_res_d
  
  #tstr_0
EndEnumeration

OpenWindow(#Window_0, 400, 150, 400,400, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)

ButtonGadget(#Button_0, 10,10, 80, 25, "Seriell ein")
ButtonGadget(#Button_1, 10,40, 80, 25, "Seriell aus")
StringGadget(#String_0, 100, 10, 150, 22, "")

ButtonGadget(#Button_button, 10,100, 80, 25, "Button")
ButtonGadget(#Button_light, 10,130, 80, 25, "Light")
ButtonGadget(#Button_sound, 10,160, 80, 25, "Sound")
ButtonGadget(#Button_slider, 10,190, 80, 25, "slider")
ButtonGadget(#Button_res_a, 10,220, 80, 25, "Res A")
ButtonGadget(#Button_res_b, 10,250, 80, 25, "Res B")
ButtonGadget(#Button_res_c, 10,280, 80, 25, "Res C")
ButtonGadget(#Button_res_d, 10,310, 80, 25, "Res D")

TrackBarGadget(#track_button, 100,  100, 250, 20, 0, 1023) 
TrackBarGadget(#track_light, 100,  130, 250, 20, 0, 1023)
TrackBarGadget(#track_sound, 100,  160, 250, 20, 0, 1023)
TrackBarGadget(#track_slider, 100,  190, 250, 20, 0, 1023)
TrackBarGadget(#track_res_a, 100,  220, 250, 20, 0, 1023)
TrackBarGadget(#track_res_b, 100,  250, 250, 20, 0, 1023)
TrackBarGadget(#track_res_c, 100,  280, 250, 20, 0, 1023)
TrackBarGadget(#track_res_d, 100,  310, 250, 20, 0, 1023)

port=-1

PokeB(*send,wert)
PokeB(*send+1,wert1)

Repeat
  Event = WaitWindowEvent(5)    
  
  Select Event
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      
      If EventGadget = #Button_0 
        If port=-1
          port=OpenSerialPort(#PB_Any, "COM3", 38400, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 2,2)
          If port
            text_e=""
            text_e + "...geöffnet   "+Str(port)
            SetGadgetText(#string_0, text_e)
          Else
            text_e=""
            text_e + "...nichts"
            SetGadgetText(#string_0, text_e) 
            port=-1
          EndIf
        EndIf  
      EndIf
      
      If EventGadget = #Button_1 
        If port > 0
          CloseSerialPort(port)
          text_e=""
          text_e + "...geschlossen"
          SetGadgetText(#string_0, text_e)
          port=-1
        EndIf
      EndIf
      
      If EventGadget = #Button_res_a
        t0=GetGadgetState(#track_res_a) 
        byte1 =128+32+((t0 & %1110000000) >> 7)
        byte2=t0 & %0001111111   
        board_setzen() 
      EndIf
      If EventGadget = #Button_light
        t1=GetGadgetState(#track_light) 
        byte1 =128+40+((t1 & %1110000000) >> 7)
        byte2=t1 & %0001111111   
        board_setzen() 
      EndIf
      If EventGadget = #Button_sound
        t2=GetGadgetState(#track_sound) 
        byte1 =128+48+((t2 & %1110000000) >> 7)
        byte2=t2 & %0001111111   
        board_setzen() 
      EndIf
      If EventGadget = #Button_slider
        t3=GetGadgetState(#track_slider) 
        byte1 =128+56+((t3 & %1110000000) >> 7)
        byte2=t3 & %0001111111   
        board_setzen() 
      EndIf
      If EventGadget = #Button_res_d
        t4=GetGadgetState(#track_res_d) 
        byte1 =128+0+((t4 & %1110000000) >> 7)
        byte2=t4 & %0001111111   
        board_setzen() 
      EndIf
      If EventGadget = #Button_res_c
        t5=GetGadgetState(#track_res_c) 
        byte1 =128+8+((t5 & %1110000000) >> 7)
        byte2=t5 & %0001111111   
        board_setzen() 
      EndIf
      If EventGadget = #Button_res_b
        t6=GetGadgetState(#track_res_b) 
        byte1 =128+16+((t6 & %1110000000) >> 7)
        byte2=t6 & %0001111111   
        board_setzen() 
      EndIf
      If EventGadget = #Button_button
        t7=GetGadgetState(#track_button) 
        byte1 =128+24+((t7 & %1110000000) >> 7)
        byte2=t7 & %0001111111   
        board_setzen() 
      EndIf
      
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
  
  If port > 0
    While AvailableSerialPortInput(port)  
      ReadSerialPortData(port, @r_byte, 1)
    Wend 
  EndIf  
  
ForEver

Procedure board_setzen()
  PokeB(*send,byte1)
  PokeB(*send+1,byte2)
  If port > 0
    For z=0 To 8
      Delay(1)
      WriteSerialPortData(port, *send, 2)
    Next
  EndIf  
EndProcedure
matbal
Beiträge: 261
Registriert: 30.03.2011 20:53

Re: Ein Event für diesesTrackBarGadget?

Beitrag von matbal »

GadgetState ändert sich, wenn der Regler verschoben oder die Maus losgelassen wird. Man könnte also prüfen, ob sich zwischen zwei Events der GadgetState nicht verändert hat. Wo debug n steht, würdest du deine Prozedur aufrufen.

Code: Alles auswählen

EnableExplicit

#FormMain = 0
#FormMain_Trackbar = 1

OpenWindow(#FormMain, 100, 100, 300, 50, "Test")
TrackBarGadget(#FormMain_Trackbar, 10, 10, 280, 20, 0, 100)

Define event, n, n_old

Repeat
   event = WaitWindowEvent()
   Select event
      Case #PB_Event_Gadget
         n = GetGadgetState(#FormMain_Trackbar)
         If n = n_old
            Debug n
         EndIf
         n_old = n
   EndSelect
Until event = #PB_Event_CloseWindow
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

Re: Ein Event für diesesTrackBarGadget?

Beitrag von funkheld »

Danke für die Antwort.

Gruss
Antworten