hier ist das Prog mit einem Windowsfenster. Ich habe es dokumentiert und soll dir verdeutlichen, wie viel schneller du zum Ziel kommst.
Natürlich kannst du das nur feststellen, wenn du es mit den angegebenen Tools nachvollziehst.
Code: Alles auswählen
;{- Enumerations / DataSections
;:PureFORM:Init:Start:
; PureFORM V1.99 ~ 28.07.2009 07:14:08
; Zum Compilieren braucht man die Gnozal-Tools
; erhältlich hier: http://freenet-homepage.de/gnozal/
; Diese Grundgerüst wurde mit Gnozals PureFORM erstellt und generiert
; Dadurch ereicht man kürzere Entwicklungszeit und man kann sich sofort auf das Programmieren konzentrieren
; Folgende Tools von Gnozal werden hier in diesem Code verwendet: PureFORM, PureCOLOR
; Interessant ist die Verwendung von PureRESIZE, wird aber hier nicht verwendet.
; Festlegen der Konstanten zum einfachen Händeln.
; Konstantennamen sind innerhalb des Codes ausagekrätiger z.B. #Text_9 ist besser als die Zahl 19
; Die Konstantennamen wurden im Tool PureFORM festgelegt bzw. nach Bedarf verändert
; die Enumerationanfänge 10,100,200 wurden nach der Generierung in der Purebasic-Ide gesetzt
;{ Windows
;Fensternummern: fängt mit 0 an
Enumeration
#Window_0
EndEnumeration
;}
;{ Gadgets
;die Gadget erhalten Nummern ab 10 - 99
Enumeration 10
#Text_0
#Text_1
#Text_2
#Text_3
#Text_4
#Text_5
#Text_6
#Text_7
#Text_8
#Text_9
#Text_10
#Text_11
#Text_12
#Text_13
#Text_14
#Text_15
#Text_16
#Text_17
#Text_18
#Text_19
#Text_20
#Text_21
#Text_22
#Account
#Name
#Adress
#State
#Zip
#City
#Phone
#Comment
EndEnumeration
;}
;{ Fonts
;die Fonts erhalten Nummern ab 100 - 199
Enumeration 100
#Font_Text_0
#Font_Text_1
#Font_Text_2
#Font_Text_3
#Font_Text_4
#Font_Text_5
#Font_Text_6
#Font_Text_7
#Font_Text_8
#Font_Text_9
#Font_Text_10
#Font_Text_11
#Font_Text_12
#Font_Text_13
#Font_Text_14
#Font_Text_15
#Font_Text_16
#Font_Text_17
#Font_Text_18
#Font_Text_19
#Font_Text_20
#Font_Text_21
#Font_Text_22
EndEnumeration
;}
;{ Keys
;die Keys erhalten Nummern ab 200
Enumeration 200
#Menu_Enter
#Menu_F1
#Menu_F2
#Menu_F3
#Menu_ESC
#Menu_Down
#Menu_UP
EndEnumeration
;}
;:PureFORM:Init:End:
;}
;:PureFORM:Windows:Start:
;:PureFORM:Window_0_1:Start:
;Aufbau der Fenstermaske mit einem Windowsfenster
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 235, 168, 637, 504, "Eingabemaske", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
TextGadget(#Text_0, 65, 15, 155, 25, "Input Field Example")
TextGadget(#Text_1, 65, 35, 495, 25, "1992 Nocturnal Greations - David Pastore, Timothy Trumann")
TextGadget(#Text_2, 5, 50, 620, 25, "______________________________________________________________________________")
TextGadget(#Text_3, 65, 70, 560, 25, "Keys: up,down,left,right - to scroll cursor though fields")
TextGadget(#Text_4, 130, 90, 235, 20, "insert - toggle insert mode")
TextGadget(#Text_5, 130, 105, 295, 25, "delete - delete char at cursor")
TextGadget(#Text_6, 130, 120, 265, 25, "home - go to begining of field")
TextGadget(#Text_7, 130, 135, 215, 25, "end - go to end of text")
TextGadget(#Text_8, 130, 150, 285, 25, "F1 - convert field to lower case")
TextGadget(#Text_9, 130, 166, 470, 25, "F2 - convert field to upper case")
TextGadget(#Text_10, 130, 180, 295, 20, "F3 - convert field to proper case")
TextGadget(#Text_11, 130, 195, 285, 25, "Esc - quits")
TextGadget(#Text_12, 5, 210, 620, 25, "______________________________________________________________________________")
TextGadget(#Text_13, 80, 235, 85, 25, "Account # :")
TextGadget(#Text_14, 80, 265, 85, 25, "Name :")
TextGadget(#Text_15, 80, 300, 85, 25, "Address :")
TextGadget(#Text_16, 80, 335, 85, 25, "City :")
TextGadget(#Text_17, 400, 300, 45, 25, "State:")
TextGadget(#Text_18, 502, 300, 30, 25, "Zip:")
TextGadget(#Text_19, 80, 370, 85, 25, "Phone :")
TextGadget(#Text_20, 65, 615, 155, 25, "Gadget_20")
TextGadget(#Text_21, 80, 405, 85, 25, "Comment :")
TextGadget(#Text_22, 5, 425, 620, 25, "______________________________________________________________________________")
StringGadget(#Account, 180, 235, 75, 20, "")
StringGadget(#Name, 180, 265, 215, 20, "")
StringGadget(#Adress, 180, 300, 215, 20, "")
StringGadget(#City, 180, 335, 215, 20, "")
StringGadget(#Phone, 180, 370, 215, 20, "")
StringGadget(#Comment, 180, 405, 408, 20, "")
StringGadget(#State, 441, 300, 55, 20, "")
StringGadget(#Zip, 532, 300, 55, 20, "")
; Gadget Fonts
SetGadgetFont(#Text_0, LoadFont(#Font_Text_0, "Times New Roman", 11, 272))
SetGadgetFont(#Text_1, LoadFont(#Font_Text_1, "Times New Roman", 11, 272))
SetGadgetFont(#Text_2, LoadFont(#Font_Text_2, "Times New Roman", 11, 272))
SetGadgetFont(#Text_3, LoadFont(#Font_Text_3, "Times New Roman", 11, 272))
SetGadgetFont(#Text_4, LoadFont(#Font_Text_4, "Times New Roman", 11, 272))
SetGadgetFont(#Text_5, LoadFont(#Font_Text_5, "Times New Roman", 11, 272))
SetGadgetFont(#Text_6, LoadFont(#Font_Text_6, "Times New Roman", 11, 272))
SetGadgetFont(#Text_7, LoadFont(#Font_Text_7, "Times New Roman", 11, 272))
SetGadgetFont(#Text_8, LoadFont(#Font_Text_8, "Times New Roman", 11, 272))
SetGadgetFont(#Text_9, LoadFont(#Font_Text_9, "Times New Roman", 11, 272))
SetGadgetFont(#Text_10, LoadFont(#Font_Text_10, "Times New Roman", 11, 272))
SetGadgetFont(#Text_11, LoadFont(#Font_Text_11, "Times New Roman", 11, 272))
SetGadgetFont(#Text_12, LoadFont(#Font_Text_12, "Times New Roman", 11, 272))
SetGadgetFont(#Text_13, LoadFont(#Font_Text_13, "Times New Roman", 11, 272))
SetGadgetFont(#Text_14, LoadFont(#Font_Text_14, "Times New Roman", 11, 272))
SetGadgetFont(#Text_15, LoadFont(#Font_Text_15, "Times New Roman", 11, 272))
SetGadgetFont(#Text_16, LoadFont(#Font_Text_16, "Times New Roman", 11, 272))
SetGadgetFont(#Text_17, LoadFont(#Font_Text_17, "Times New Roman", 11, 272))
SetGadgetFont(#Text_18, LoadFont(#Font_Text_18, "Times New Roman", 11, 272))
SetGadgetFont(#Text_19, LoadFont(#Font_Text_19, "Times New Roman", 11, 272))
SetGadgetFont(#Text_20, LoadFont(#Font_Text_20, "Times New Roman", 11, 272))
SetGadgetFont(#Text_21, LoadFont(#Font_Text_21, "Times New Roman", 11, 272))
SetGadgetFont(#Text_22, LoadFont(#Font_Text_22, "Times New Roman", 11, 272))
; Gadget Colors
PureCOLOR_SetGadgetColor(#Text_0, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_1, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_2, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_3, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_4, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_5, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_6, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_7, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_8, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_9, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_10, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_11, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_12, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_13, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_14, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_15, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_16, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_17, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_18, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_19, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_20, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_21, $FFFFFF, $A00000)
PureCOLOR_SetGadgetColor(#Text_22, $FFFFFF, $A00000)
; Window Backcolor
PureCOLOR_SetWindowColor(#Window_0, $A00000)
;:PureFORM:Window_0_1:End:
; Your code here ...
;
;:PureFORM:Window_0_2:Start:
EndIf
EndProcedure
; Unterprogramm für die Cursorbewegung, z.B. rauf und runter zum nächsten Eingabefeld
Procedure menu_pos(poscase)
agadget=GetActiveGadget() ;welches Eingabefeld wird verlassen?
If poscase ; aber wohin? Hier wurde Enter oder die Pfeiltaste nach unten gedrückt.
agadget=agadget+1 ; Das Gadget hat eine Nummer, das nächste Gadget eine Nummer höher
If agadget>#Comment ; haben wir das letzte Eingabefeld erreicht?
agadget=#Account ; dann setzen wir es auf das Erste
EndIf
Else ; es wurde die Pfeiltaste nach unten gedrückt
agadget=agadget-1 ; Das Gadget hat eine Nummer, das nächste Gadget eine Nummer tiefer
If agadget<#Account ; haben wir das erste Eingabefeld erreicht?
agadget=#Comment ; dann setzen wir es auf das Letzte
EndIf
EndIf
SetActiveGadget(agadget) ; und Aktivieren das Eingabefeld, der Schreibcursor ist weitergesprungen
EndProcedure
; Unterprogramm für die Textumwandlung innerhalb eines Eingabefeldes, z.B. Groß- oder Kleinschreibung
Procedure menu_key(keycase)
Define text$ ; hier speichern wir den Inhalt des Eingabefeldes zwischen
agadget=GetActiveGadget() ; aus welchem Eingabefeld wurde eine Funktionstaste gedrückt?
text$=GetGadgetText(agadget) ; erstmal das Eingabefeld auslesen
If keycase=1 ; welche Funktionstaste wurde gedrückt? F1
text$=LCase(text$) ; wir ändern auf klein um
ElseIf keycase=2 ; F2 wurde gedrückt
text$=UCase(text$) ; also schreiben wir GROß
ElseIf keycase=3 ; F3 wurde gedrückt
text$=UCase(Left(text$,1))+ Mid(text$,2) ; es wird nur der -erste- Buchstabe GROß geschrieben
EndIf
SetGadgetText(agadget,text$) ; und setzen das Ergebnis in das Eingabefeld ein
EndProcedure
;:PureFORM:Window_0_2:End:
;:PureFORM:Windows:End:
;
;:PureFORM:Gadgets:Start:
;:PureFORM:Gadgets:End:
; Wir starten und Öffnen das Windowsfenster mit dem Aufbau der Eingabemaske
OpenWindow_Window_0()
;:PureFORM:Main:Start:
;:PureFORM:Main:End:
;{- Shortcut Keys
; Dies sind die Definierungen der Positions- / Bewegungstasten für die Eingabemaske
; sofern sie nicht direkt von den Gadgets/Eingabefeldern unterstützt werden
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, #Menu_Enter)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_F1, #Menu_F1)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_F2, #Menu_F2)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_F3, #Menu_F3)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Escape, #Menu_ESC)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Down, #Menu_Down)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Up, #Menu_UP)
;
;}
;{- Event loop
; Die eigentliche Ereignisschleife unserer Eingabemaske. Hier spielt die Musik.
Repeat
;:PureFORM:Loop:Start:
Select WaitWindowEvent()
; ///////////////////
; hier reagieren wir auf Ereignisse, die die Eingabefelder versenden
; die Case habe ich aber nicht herausgelöscht, um nicht zu verwirren, da sie von PureFORM generiert werden.
Case #PB_Event_Gadget
Select EventGadget()
Case #Text_0
Case #Text_1
Case #Text_2
Case #Text_3
Case #Text_4
Case #Text_5
Case #Text_6
Case #Text_7
Case #Text_8
Case #Text_9
Case #Text_10
Case #Text_11
Case #Text_12
Case #Text_13
Case #Text_14
Case #Text_15
Case #Text_16
Case #Text_17
Case #Text_18
Case #Text_19
Case #Text_20
Case #Text_21
Case #Text_22
Case #Account
Case #Name
Case #Adress
Case #City
Case #Phone
Case #Comment
Case #State
Case #Zip
EndSelect
; Diese Case werden gebraucht und steuern unsere Eingabemaske
; Die Funktion "AddKeyboardShortcut" verursacht ein Ereignis vom Typ "#PB_Event_Menu"
Case #PB_Event_Menu
Select EventMenu()
Case #Menu_Enter ; wir drücken die Enter-/Returntaste, ein Eingabefeld weiter
menu_pos(1)
Case #Menu_F1 ; wir drücken die F1-Taste, die Buchstaben im Eingabefeld werden -klein- geschrieben
menu_key(1)
Case #Menu_F2 ; wir drücken die F2-Taste, die Buchstaben im Eingabefeld werden -GROß- geschrieben
menu_key(2)
Case #Menu_F3 ; wir drücken die F3-Taste, der -erste- Buchstabe in einem Eingabefeld wird -groß- Geschrieben
menu_key(3)
Case #Menu_ESC ; wir drücken die ESC-Taste, wir beenden das Programm
CloseWindow(#Window_0)
End
Case #Menu_Down ; wir drücken die Pfeiltasten nach unten, ein Eingabefeld tiefer
menu_pos(1)
Case #Menu_UP ; wir drücken die Pfeiltasten nach oben, ein Eingabefeld höher
menu_pos(0)
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0 ; upps, Schließenbutton des Fensters wurde angeklickt
CloseWindow(#Window_0)
Break
EndSelect
EndSelect
;:PureFORM:Loop:End:
ForEver
;
;}
;:PureFORM:AfterLoop:Start:
;:PureFORM:AfterLoop:End: