Dies ist ein Kleines Projekt welches ich für eine Kollegin schreiben musste sie wolte einfach nur ne art kasse mit der Sie alles eintippen kann damit sie +/- am abend weiss was sie eingenommen hat...
Code: Alles auswählen
;Kleine Kassensoftware, um Einnahmen zu überprüfen.
; Funktioniert mit dem FSC 10er Block. Spezielle Funktionen wird die Maus gebraucht.
;(c)2007 by René Linder
;Mit unterstützung aus dem Pure-Board.
;Changelog:
;****************************
;V0.1
;=======
; - Erste Version
;
;V0.2
;=======
; - Der del Button ist jetzt endlich zu was zu gebrauchen, eintrag Links Markieren und da drauf drücken ;)
; - Textfonts abgeändert.
; - Speichern des Logs geschieht jetzt Mit Datum-Zeit Kenzeichen.
;
;V0.3
;=======
; - Bugfix mit nicht gezeichneten Buttons. (Danke an D@nte)
; - Bugfix mit zu kurzem Stringgadget für die Textgrösse. (Danke an D@nte & edel)
; - Code Optimierung und Flackern behoben (Danke an D@nte & edel)
;
;V0.4
;======
; - Letzer eintrag markieren und löschen geht nicht löscht immer den ersten. Variabelschreibfehler...
;
;V0.4.5 - beta
;======
; - Testversion Vollbild ohne Fontanpassung
;
;V0.4.9 - beta
;======
; - Infobox welches die Fontgrösse zurückgibt entfernt
; - Herunterfahrenmöglichkeit mit Maus geschaffen. (Momentan Windows Only)
Declare ZeichenHinzu(Zeichen$)
Declare Shutdown(flags.l)
Macro MSGLF
Chr(13)+Chr(10)
EndMacro
Macro Tastenabfragen
Select Gadget
Case #Button_Num0
ZeichenHinzu("0")
Case #Button_Num1
ZeichenHinzu("1")
Case #Button_Num2
ZeichenHinzu("2")
Case #Button_Num3
ZeichenHinzu("3")
Case #Button_Num4
ZeichenHinzu("4")
Case #Button_Num5
ZeichenHinzu("5")
Case #Button_Num6
ZeichenHinzu("6")
Case #Button_Num7
ZeichenHinzu("7")
Case #Button_Num8
ZeichenHinzu("8")
Case #Button_Num9
ZeichenHinzu("9")
Case #Button_Num00
ZeichenHinzu("00")
Case #Button_M
Artikel$="Mineral"
Case #Button_W
Artikel$="Wein / Spirituosen"
Case #Button_B
Artikel$="Bier"
Case #Button_X
Artikel$=""
Preis$=""
Case #Button_Ok
If Artikel$<>"" And Preis$<>""
Laenge = Len(Preis$)
Preis$ = Left(Preis$,Laenge - 2)+"."+Right(Preis$,2)
AddGadgetItem(#Listview_0,-1,Artikel$+Chr(10)+Preis$)
Artikel$=""
Preis$=""
EndIf
Case #Button_Z
Ergebnis = CountGadgetItems(#Listview_0)
Abschluss$= "Wollen sie Wircklich abschliessen bei "+Str(Ergebnis)+" einträgen?"
Result = MessageRequester("Tagesabschluss...",Abschluss$,#PB_MessageRequester_YesNo)
If Result = #PB_MessageRequester_Yes
Preisende.f=0
Preisbier.f=0
PreisWein.f=0
PreisMineral.f=0
CreateFile(#File_Log,FormatDate("%dd-%mm-%yyyy--%hh-%ii-%ss", Date())+".txt")
For Zaehlen = 0 To Ergebnis-1
Artikelb$ = GetGadgetItemText(#Listview_0,Zaehlen,0)
Preisb$ = GetGadgetItemText(#Listview_0,Zaehlen,1)
WriteStringN(#File_Log,"Artikel:" + Artikelb$ +" Preis:"+Preisb$)
Preisende = Preisende + ValF(Preisb$)
Select Artikelb$
Case "Mineral"
PreisMineral = PreisMineral + ValF(Preisb$)
Case "Wein / Spirituosen"
PreisWein = PreisWein + ValF(Preisb$)
Case "Bier"
Preisbier = Preisbier + ValF(Preisb$)
EndSelect
Next
WriteStringN(#File_Log,"Endabrechnung:"+StrF(Preisende,2))
WriteStringN(#File_Log,"Endabrechnung Bier:"+StrF(Preisbier,2))
WriteStringN(#File_Log,"Endabrechnung Wein / Spirituosen:"+StrF(PreisWein,2))
WriteStringN(#File_Log,"Endabrechnung Mineral:"+StrF(PreisMineral,2))
CloseFile(#File_Log)
MessageRequester("Info","Abschluss bei:"+StrF(Preisende,2)+MSGLF+"Total Bier:"+StrF(Preisbier,2)+MSGLF+"Total Mineral:"+StrF(PreisMineral,2)+MSGLF+"Total Wein / Spirituosen:"+StrF(PreisWein,2))
ClearGadgetItemList(#Listview_0)
EndIf
Case #Button_Del
Markiert=GetGadgetState(#Listview_0)
ArtikelM$ = GetGadgetItemText(#Listview_0,Markiert,0)
PreisM$ = GetGadgetItemText(#Listview_0,Markiert,1)
Result = MessageRequester("Info","Eintrag Wircklich löschen?"+MSGLF+"Artikel:"+ArtikelM$+" Preis:"+PreisM$,#PB_MessageRequester_YesNo)
If Result = #PB_MessageRequester_Yes
RemoveGadgetItem(#Listview_0,Markiert)
EndIf
Case #Button_Stdn
Result = MessageRequester("Abfrage","Herunterfahren?",#PB_MessageRequester_YesNo)
If Result = #PB_MessageRequester_Yes
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Shutdown(1 )
CompilerEndIf
EndIf
EndSelect
EndMacro
Global Artikel$, Preis$, Status$
Enumeration
#Window_0
EndEnumeration
ExamineDesktops()
DeskX = DesktopWidth(0)
DeskY = DesktopHeight(0)
OpenWindow(#Window_0, 0, 0, DesktopWidth(0), DesktopHeight(0),"Kasse V0.4 , (c)2007 by René Linder",#PB_Window_BorderLess)
Enumeration
#File_Log
EndEnumeration
Enumeration
#Button_0
#Button_M
#Button_W
#Listview_0
#String_0
#Button_B
#Button_Num7
#Button_Num8
#Button_Num9
#Button_Num4
#Button_Num5
#Button_Num6
#Button_Num1
#Button_Num2
#Button_Num3
#Button_Z
#Button_X
#Button_Num0
#Button_Num00
#Button_Ok
#Button_Del
#Button_Stdn
EndEnumeration
If CreateGadgetList(WindowID(#Window_0))
ButtonX=(DeskX-280)/4-10
ButtonY=(DeskY-10)/6-10
ButtonXP=ButtonX+10
ButtonYP=ButtonY+10
;***********************
;* Default Fontgrösse Setzen
FontsX=DeskX/31-1
;MessageRequester("Info","Info:"+Str(FontsX))
If LoadFont(1,"Courier",FontsX)
SetGadgetFont(#PB_Default, FontID(1))
EndIf
ButtonGadget(#Button_Del, 280 , 10 , ButtonX, ButtonY, "Del")
ButtonGadget(#Button_M, 280+ButtonXP , 10 , ButtonX, ButtonY, "Mineral")
ButtonGadget(#Button_W, 280+(2*ButtonXP), 10 , ButtonX, ButtonY, "Wein Sprit.", #PB_Button_MultiLine | #PB_ListIcon_AlwaysShowSelection)
ButtonGadget(#Button_B, 280+(3*ButtonXP), 10 , ButtonX, ButtonY, "Bier")
ButtonGadget(#Button_Num7, 280 , 10+ButtonYP , ButtonX, ButtonY, "7")
ButtonGadget(#Button_Num8, 280+ButtonXP , 10+ButtonYP , ButtonX, ButtonY, "8")
ButtonGadget(#Button_Num9, 280+(2*ButtonXP), 10+ButtonYP , ButtonX, ButtonY, "9")
ButtonGadget(#Button_Num4, 280 , 10+(2*ButtonYP), ButtonX, ButtonY, "4")
ButtonGadget(#Button_Num5, 280+ButtonXP , 10+(2*ButtonYP), ButtonX, ButtonY, "5")
ButtonGadget(#Button_Num6, 280+(2*ButtonXP), 10+(2*ButtonYP), ButtonX, ButtonY, "6")
ButtonGadget(#Button_Num1, 280 , 10+(3*ButtonYP), ButtonX, ButtonY, "1")
ButtonGadget(#Button_Num2, 280+ButtonXP , 10+(3*ButtonYP), ButtonX, ButtonY, "2")
ButtonGadget(#Button_Num3, 280+(2*ButtonXP), 10+(3*ButtonYP), ButtonX, ButtonY, "3")
ButtonGadget(#Button_Z, 280+(3*ButtonXP), 10+ButtonYP , ButtonX, 2*ButtonY+10, "Z")
ButtonGadget(#Button_X, 280+(3*ButtonXP), 10+(3*ButtonYP), ButtonX, ButtonY, "X")
ButtonGadget(#Button_Num0, 280 , 10+(4*ButtonYP), 10+(2*ButtonX), ButtonY, "0")
ButtonGadget(#Button_Num00,280+(2*ButtonXP), 10+(4*ButtonYP), ButtonX, ButtonY, "00")
ButtonGadget(#Button_Ok, 280+(3*ButtonXP), 10+(4*ButtonYP), ButtonX, ButtonY, "Ok")
ButtonGadget(#Button_Stdn, 280+(3*ButtonXP), 10+(5*ButtonYP), ButtonX, ButtonY, "Ende")
ListIconGadget(#Listview_0, 10, 10, 260, 5*ButtonYP-10,"Artikel",180,#PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect )
StringGadget(#String_0, 10, 10+5*ButtonYP, 280+(3*ButtonXP)-20, ButtonY, "")
EndIf
AddGadgetColumn(#Listview_0, 1, "Preis", 55)
SetGadgetText(#String_0,Artikel$ + ", Preis:" + Preis$)
;************************
;* Gadget Formatierungen
If LoadFont(0,"Courier",10)
SetGadgetFont(#Listview_0, FontID(0))
EndIf
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad0, #Button_Num0)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad1, #Button_Num1)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad2, #Button_Num2)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad3, #Button_Num3)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad4, #Button_Num4)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad5, #Button_Num5)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad6, #Button_Num6)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad7, #Button_Num7)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad8, #Button_Num8)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad9, #Button_Num9)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Divide, #Button_M)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Multiply, #Button_W)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Subtract, #Button_B)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Add, #Button_Z)
AddKeyboardShortcut(#Window_0, 110, #Button_Num00)
AddKeyboardShortcut(#Window_0, 255, #Button_X)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, #Button_Ok)
Repeat
EventID = WaitWindowEvent()
PreisA$=Preis$
ArtikelA$=Artikel$
If EventID = #PB_Event_Gadget
Gadget = EventGadget()
Tastenabfragen
EndIf
If EventID = #PB_Event_Menu
Gadget = EventMenu()
Tastenabfragen
EndIf
If EventID = #PB_Event_CloseWindow
Quit=1
EndIf
Delay(0)
If Artikel$<>ArtikelA$ Or Preis$<>PreisA$
SetGadgetText(#String_0,Artikel$ + ", Preis:" + Preis$)
EndIf
Until Quit=1
Procedure Shutdown( flags.l )
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Privileges.TOKEN_PRIVILEGES
OpenProcessToken_(GetCurrentProcess_(), 40, @hToken)
Privileges\PrivilegeCount = 1
Privileges\Privileges[0]\Attributes = #SE_PRIVILEGE_ENABLED
LookupPrivilegeValue_(0, "SeShutdownPrivilege", @Privileges\Privileges[0]\Luid)
AdjustTokenPrivileges_(hToken, 0, @Privileges, 0, 0, 0)
CloseHandle_(hToken)
ExitWindowsEx_(flags, 0)
CompilerEndIf
EndProcedure
Procedure ZeichenHinzu(Zeichen$)
If Artikel$ = ""
EndIf
If Artikel$ <> ""
If Len(Preis$)<5
If Preis$ = "" And Zeichen$="0"
Else
Preis$ = Preis$ + Zeichen$
EndIf
EndIf
EndIf
EndProcedure
Ich werde selbst noch weiter drann schreiben so das ein Ständiges Protokoll gedruckt wird sobald ich ein solchen Protokolldrucker in die Finger Krieg ^^
Gruss G0
Dankeschöns und Changelog im Source.