Seite 1 von 1

Allgemeiner Programmaufbau!!!

Verfasst: 05.12.2005 13:03
von Dr.Pixel
Hallo.
Ich habe ein Programm geschrieben, welches ein Fenster öffnet in dem
verschiedene Buttons abgefragt werden und dadurch spezielle
Funktionen ausgeführt werden sollen.
Mir geht es um die Richtigkeit und Übersichtlichkeit des Programmcodes!!
Ist dieser Programmausschnitt richtig?
Sollte ich für jeden Button eine Procedure erstellen? (In Wirklichkeit habe ich sehr viele Buttons!!!)
Was könnte man hier noch verbessern?

mfg
Dr. Pixel

Code: Alles auswählen

Procedure button1()
CloseWindow(0)
MessageRequester("Achtung!","Button 1 !",0)
...
EndProcedure

Procedure button2()
MessageRequester("Achtung!","Button 2 !",0)
...
EndProcedure

Procedure button3()
MessageRequester("Achtung!","Button 3 !",0)
...
EndProcedure


Procedure OpenGUI()
If Open_Window_0()
  MessageRequester("Fehler konnte kein Fenster oeffnen","Fehler",0)
EndIf

MakeStayOnTop(  WindowID(), #True )

GUI:

   Repeat 
     EventID = WaitWindowEvent() 
     
     Select EventID 
     
       Case #PB_Event_Gadget 
         Select EventGadgetID()
           Case 1 : button1() : Break
           Case 2 : button2() : Break
           Case 3 : button3() : Break
         EndSelect 
           
     EndSelect 
   Until EventID = #PB_Event_CloseWindow
   CloseWindow(0)
   Close.l = -1 
ProcedureReturn Close.l
EndProcedure

OpenGUI()

Verfasst: 05.12.2005 14:59
von roherter
Du könntest auch eine Procedure erstellen die übergibt welchen button du gedrückt hast so z.b.

Code: Alles auswählen

Procedure Button(button_wert)
if button_wert=1
;button1 wurde gedrückt
endif 
if button_wert=2
;button2 wurde gedrückt
endif 
endif
endprocedure

;aufruf
Button(1)

Aber ist geschmacksache kannste so oder so machen!

Re: Allgemeiner Programmaufbau!!!

Verfasst: 05.12.2005 15:34
von Kiffi
> Mir geht es um die Richtigkeit und Übersichtlichkeit des
> Programmcodes!!

OK, dann könntest Du damit anfangen, Deinen Buttons richtige Namen zu
geben. 1, 2, 3 (oder auch button1, button2, button3, ...) Glaub mir: Wenn
genügend Buttons da sind, dann blickst Du nicht mehr durch, welcher
Button wo steht und was er macht.

Besser, Du benennst die Buttons so, wie die Aktionen, die sie auslösen
sollen. Das ganze wird in eine Enumeration gepackt, damit die Buttons
automatisch durchnummeriert werden.

Code: Alles auswählen

Enumeration
 #cmdLoad
 #cmdSave
 #cmdQuit
EndEnumeration

[...]

 Select EventGadgetID()
  Case #cmdLoad : cmdLoad_Click()
  Case #cmdSave : cmdSave_Click()
  Case #cmdQuit : cmdSave_Click()
 EndSelect 
> Ist dieser Programmausschnitt richtig?

nein, denn der Break-Befehl ist in der Eventschleife, so wie Du sie vorhast,
fehl am Platz.

> Sollte ich für jeden Button eine Procedure erstellen? (In Wirklichkeit
> habe ich sehr viele Buttons!!!)

kommt darauf an, welche Funktionen die Buttons auslösen sollen. Wenn
das alles unterschiedliche Aktionen sind, dann würde ich wirklich jedem
Button eine eigene Prozedur spendieren. Wenn die Aktionen sich nur
unwesentlich unterscheiden, so kannst Du eine Sammelprozedur erstellen,
die jeder Button dann mit einem anderen Parameter aufruft.

Grüße ... Kiffi

Verfasst: 05.12.2005 16:26
von Konne
Also ich habe immer ganz gute Erfahrungen mit einem solchen aufbau gemacht:

Code: Alles auswählen

Enumeration
  ;Gadgets usw
Endenumeration

Procedure Window()
  ;Hier das fenster mit Gadgets erstellen
Endprocedure

Window()
repeat
  select waitwindowevent()
     case #pb_event_gadget
       select evnetGadgetID()
         ;..Hier die Gadgets  abfragen
       endselect
  endselect
forever

Die Frage ob man jedes Event in ne Procedure packen soll, würde ich mit Jein beantworten.
Funktionen die man öffter genau gleich braucht (zB wenn man auch noch einen Shortcut hat) und sehr größere Dinge (so über 10 Zeilen) würde ich in ne Proizedur packen, alles andere kann man auch so machen, nur sollte man dann auf das einrücken achten.