Hilfe, wie kann ich ein EventGadget() zurücksetzten?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Besser ???
Ja, kann man so nehmen, obwohl in der Praxis wirds bei mir nie so aussehen :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Jeder hat so sein eigenen Stil. Soll ja nur ein Beispiel sein wie man einiger massen sauber die Events von Window abarbeitet.

FF 8)

P.S. Für grössere Projekte mit mehreren Fenstern nehme ich mein "Visual Generic" um den Code automatisch zu generieren. Habe wenigsten nicht mehr die Arbeit selber alle Event zu programmieren.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Jeder hat so sein eigenen Stil.
Stimmt :)

Code: Alles auswählen

; Windows
Enumeration
  #Window_0
EndEnumeration

; Menu bars
Enumeration
  #Menu_Window_0
EndEnumeration

; Menu items
Enumeration
  #Menu_Window_0_Datei_Oeffnen
EndEnumeration

; Gadgets
Enumeration
  #Button_0
  #Button_1
  #Button_2
EndEnumeration

Prototype GadgetEvent(Event.l)

; Gadgetevents
Procedure Event_Button_0(Event.l)
  Debug "#Button_0"
EndProcedure

Procedure Event_Button_1(Event.l)
  Debug "#Button_1"
EndProcedure

Procedure Event_Button_2(Event.l)
  Debug "#Button_2"
EndProcedure

Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, #PB_Ignore, #PB_Ignore, 142, 137, "Window_0", #PB_Window_SystemMenu|#PB_Window_Invisible|#PB_Window_TitleBar)
    If CreateMenu(#Menu_Window_0, WindowID(#Window_0))
      MenuTitle("&Datei")
      MenuItem(#Menu_Window_0_Datei_Oeffnen, "Oeffnen")
    EndIf
    If CreateGadgetList(WindowID(#Window_0))
      ButtonGadget(#Button_0, 10, 5, 120, 30, "Gadget_0")
      SetGadgetData(#Button_0, @Event_Button_0())
      
      ButtonGadget(#Button_1, 10, 40, 120, 30, "Gadget_1")
      SetGadgetData(#Button_1, @Event_Button_1())
      
      ButtonGadget(#Button_2, 10, 75, 120, 30, "Gadget_2")
      SetGadgetData(#Button_2, @Event_Button_2())
    EndIf
    ProcedureReturn WindowID(#Window_0)
  EndIf
EndProcedure

If OpenWindow_Window_0()
  ; Initstuff
  HideWindow(#Window_0, #False)
  
  ;- Event loop

  Define.l Event, EventGadget, EventType, EventMenu, EventWindow
  Define.GadgetEvent GadgetEvent
  Repeat

    Event       = WaitWindowEvent()
    EventGadget = EventGadget()
    EventType   = EventType()
    EventMenu   = EventMenu()
    EventWindow = EventWindow()

    Select Event

      Case #PB_Event_Gadget
        GadgetEvent = GetGadgetData(EventGadget)
        GadgetEvent(EventType)
        
      Case #PB_Event_Menu

      Case #PB_Event_CloseWindow
      
        Select EventWindow
          Case #Window_0
            Break
        EndSelect
    EndSelect
  ForEver
EndIf



Die lokalen Variablen muß man natürlich nicht alle unbedingt bestücken,
aber es gibt keinen Grund das diese Global sind.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Knight_Rider_2000
Beiträge: 145
Registriert: 05.02.2007 20:46
Kontaktdaten:

Beitrag von Knight_Rider_2000 »

Vielen Dank Leute
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
Antworten