Seite 2 von 2

Verfasst: 05.04.2007 19:58
von ts-soft
>> Besser ???
Ja, kann man so nehmen, obwohl in der Praxis wirds bei mir nie so aussehen :mrgreen:

Verfasst: 05.04.2007 20:01
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.

Verfasst: 05.04.2007 20:49
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.

Verfasst: 06.04.2007 12:22
von Knight_Rider_2000
Vielen Dank Leute