Habs. Das ganze basiert auf windowedScreen damit man den KeyboardReleased Befehl verwenden kann. Das Prinzip ist einfach. Man klick auf neue Ware. Ins obere Kästchen gibt man den Namen ein und im unter den Preis (in Cent). Dann klick man auf add. Der Name des Fenster änder sich dann in #Name+" (press Key)". Dann drückt man einfach die Taste zu der die Ware zugeordnet werden soll (Tastenkombinationen funktionieren nicht!). Hat man dies getan muss man nur noch die Tasten für die Waren drücken und schon erscheint der Gesamtpreis. Ist die abrechnung vertig klick man auf Löschen und schon kann die nächste Bestellung kommen.
PS: die Konstante #Name muss noch deinen Wunschnamen für das Programm erhalten.
/Edit Fehlendes ClearScreen() eingefügt.
Code: Alles auswählen
#Name="???"
Ware.s
Price.f
Total.f
InitKeyboard()
InitSprite()
LoadFont(1,"Arial",10)
OpenWindow(1,0,0,300,460,#Name,#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(1),10,10,280,400,0,0,0)
CreateGadgetList(WindowID(1))
ButtonGadget(3,10,420,140,30,"Neue Ware")
Structure ware
Ware.s
Price.f
EndStructure
Dim Key.ware(256)
NewList Ware.ware()
Repeat
Repeat
If IsWindow(1)=0
End
EndIf
WEvent=WindowEvent()
Select WEvent
Case #PB_Event_CloseWindow
CloseWindow(EventWindow())
Case #PB_Event_Gadget
Select EventGadget()
Case 3
OpenWindow(2,0,0,200,100,"Neue Ware",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
CreateGadgetList(WindowID(2))
StringGadget(4,10,10,180,20,"Ware")
StringGadget(5,10,40,180,20,"0",#PB_String_Numeric)
ButtonGadget(6,10,70,180,20,"add")
Case 6
Ware=GetGadgetText(4)
Price=Val(GetGadgetText(5))/100
CloseWindow(2)
SetWindowTitle(1,#Name+" (press Key)")
EndSelect
EndSelect
Until WEvent=0
ClearScreen(0)
ExamineKeyboard()
Y=0
StartDrawing(ScreenOutput())
DrawingFont(FontID(1))
ResetList(Ware())
Total=0
While NextElement(Ware())
DrawText(10,Y,Ware()\Ware+"("+StrF(Ware()\Price,2)+")")
Total+Ware()\Price
Y+20
Wend
DrawText(10,380,"Total:"+StrF(Total,2)+"¬")
StopDrawing()
For a=1 To 255
If KeyboardReleased(a)
If GetWindowTitle(1)=#Name+" (press Key)"
Key(a)\Ware=Ware
Key(a)\Price=Price
SetWindowTitle(1,#Name)
ElseIf Not Key(a)\ware=""
AddElement(Ware())
Ware()\Ware=Key(a)\Ware
Ware()\Price=Key(a)\Price
EndIf
EndIf
Next a
FlipBuffers()
Until IsWindow(1)=0