Werte aus Listicon addieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fox
Beiträge: 75
Registriert: 08.08.2007 10:14
Kontaktdaten:

Re: Werte aus Listicon addieren

Beitrag von Fox »

Danke bizzl, hab ich jetzt zum Glück verstanden. Was ich eigentlich versuche ist alle Elemente, die im ListIconGadget sind zu addieren und dann via Enter eben diese Summe in ein StringGadget schreiben lassen möchte. Bei der Ausgabe des Wertes nach der oberen Manier gibt er mir aber lediglich den 1. Wert zurück, wobei das ganze ja in der For Next Schleife steht. Konktret sollte das ganze also eigentlich wie folgt aussehen:

Bild

Wo liegt der Fehler?

@RSBasic: +1 ändert nichts, da 0 ohnehin der Spaltentitel ist.

@Tommy: Muss mal meine Signatur auffrischen, die ist schon uralt.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Werte aus Listicon addieren

Beitrag von NicTheQuick »

Ich würde mal sagen, es ist langsam Zeit, dass du uns deinen Code zeigst. Sonst wird das hier nichts. Screenshots bringen auch nichts. Du machst offensichtlich irgendwas grundlegendes falsch.
Benutzeravatar
Fox
Beiträge: 75
Registriert: 08.08.2007 10:14
Kontaktdaten:

Re: Werte aus Listicon addieren

Beitrag von Fox »

Sorry, bin wirklich total raus. Hier der Code:

Code: Alles auswählen

; Autor: Fox


;- Preisliste

#Biergr = "5,00€"
#Bierkl = "2,50€"
#Colagr = "2,30€"
#Colakl = "1,40€"
#Wassergr = "2,20€"
#Wasserkl = "1,20€"
#Limogr = "2,30€"
#Limokl = "1,40€"
#Cocktail = "5,50€"
#Shisha1 = "5,00€"
#Shisha2 = "6,00€"
#Shisha3 = "7,00€"

Enumeration
  #Interface
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Panel
  #FrameOther
  #Rechnung
  #FrameDrinks
  #Frame3D_5
  #Button_Del
  #Button_Bierkl
  #Button_Colakl
  #Button_Biergr
  #Button_Colagr
  #Button_Limokl
  #Button_Wasserkl
  #Button_Wassergr
  #Button_Limogr
  #Button_Cocktail
  #Button_Shisha1
  #Button_Shisha2
  #Button_Shisha3
  #Button_Enter
  #ListIcon_Tisch
  #Button_BillPrint
  #ListIcon_Bill
  #Listview_Tagesabrechnung
  #String_Date
  #Button_Tagesabschluss
  #Frame3D_Bediener
  #Image_Mario
  #Image_Sebastian
  #Image_Martin
  #CheckBox_Martin
  #CheckBox_Mario
  #CheckBox_Sebastian
  #Text_Speicherort
  #String_Speicherort
  #Button_Speicherort
  #Text_Zugang
  #Button_Zugang
  #Text_Rechnungsnr
  #String_Rechnungsnr
  #Text_Summe
  #String_Summe
  #Text_Eur
EndEnumeration

;- Image Plugins
UseJPEGImageDecoder()

;- Image Globals
Global Image0
Global Image1
Global Image2

;- Catch Images
Image0 = CatchImage(0, ?Image0)
Image1 = CatchImage(1, ?Image1)
Image2 = CatchImage(2, ?Image2)

;- Images
DataSection
Image0:
  IncludeBinary "C:\Users\Seminar\Desktop\Projekt Zeitlos\Mario.jpg"
Image1:
  IncludeBinary "C:\Users\Seminar\Desktop\Projekt Zeitlos\Sebastian.jpg"
Image2:
  IncludeBinary "C:\Users\Seminar\Desktop\Projekt Zeitlos\Martin.jpg"
EndDataSection

Procedure.i Euro2Cent(euro.s)
   Protected i.i = FindString(euro, ",")
   If (i = 0)
      ProcedureReturn Val(euro)
   Else
      Protected cents.i = Val(Mid(euro, i + 1, 2))
      If (Mid(euro, i + 1, 1) = "0")
         ProcedureReturn Val(Left(euro, i)) * 100 + cents
      Else
         ProcedureReturn Val(Left(euro, i)) * 100 + cents * 10
      EndIf
   EndIf
EndProcedure

Procedure.s Cent2Euro(cent.i)
   If cent < 100
      ProcedureReturn "0," + RSet(Str(cent), 2, "0") + "€"
   Else
      ProcedureReturn Str(cent / 100) + "," + RSet(Str(cent % 100), 2, "0") + "€"
   EndIf
EndProcedure



  If OpenWindow(#Interface, 0, 7, 1376, 726, "Zeitlos - Kassensystem",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )

      
      ;- Panel
      PanelGadget(#Panel, 0, 0, 1350, 680)
      AddGadgetItem(#Panel, -1, "Kasse")
      Frame3DGadget(#FrameOther, 828, 8, 320, 480, "Sonstiges")
      Frame3DGadget(#FrameDrinks, 18, 8, 390, 480, "Getränke")
      Frame3DGadget(#Frame3D_5, 428, 8, 370, 480, "Shisha")
      ButtonGadget(#Button_Enter, 1168,448, 60, 40, "Enter")
      ButtonGadget(#Button_Del, 1268, 448, 60, 40, "Entfernen")
      ButtonGadget(#Button_Bierkl, 28, 28, 100, 50, "Bier 0.5 l")
      ButtonGadget(#Button_Colakl, 158, 98, 100, 50, "Cola klein")
      ButtonGadget(#Button_Biergr, 28, 98, 100, 50, "Bier 1 l")
      ButtonGadget(#Button_Colagr, 158, 28, 100, 50, "Cola groß")
      ButtonGadget(#Button_Limokl, 158, 378, 100, 50, "Limo klein")
      ButtonGadget(#Button_Wasserkl, 158, 238, 100, 50, "Wasser klein")
      ButtonGadget(#Button_Wassergr, 158, 168, 100, 50, "Wasser groß")
      ButtonGadget(#Button_Limogr, 158, 308, 100, 50, "Limo groß")
      ButtonGadget(#Button_Cocktail, 288, 28, 100, 50, "Cocktail")
      ButtonGadget(#Button_Shisha1, 438, 28, 100, 50, "Shisha Kategorie 1")
      ButtonGadget(#Button_Shisha2, 438, 98, 100, 50, "Shisha Kategorie 2")
      ButtonGadget(#Button_Shisha3, 438, 168, 100, 50, "Shisha Kategorie 3")
      TextGadget(#Text_Rechnungsnr, 488, 618, 80, 20, "Rechnungsnr.:")
      StringGadget(#String_Rechnungsnr, 568, 618, 230, 20,"0", #PB_String_Numeric)
      
      ;-
      ListIconGadget(#ListIcon_Tisch, 18, 508, 400, 130, "Tischnr.:", 200, #PB_ListIcon_AlwaysShowSelection)
      ButtonGadget(#Button_BillPrint, 1188, 558, 140, 70, "Rechnung drucken")
      
      ;-
      ListIconGadget(#ListIcon_Bill, 1168, 8, 150, 430, "Posten:", 70)
      AddGadgetColumn(#ListIcon_Bill, 1, "Betrag:", 80)
      TextGadget(#Text_Summe, 1138, 498, 50, 20, "Summe:")
      StringGadget(#String_Summe, 1218, 498, 90, 20, "", #PB_String_ReadOnly)
      TextGadget(#Text_Eur, 1318, 498, 20, 20, "€")
      AddGadgetItem(#Panel, -1, "Tagesabrechnung")
      ListViewGadget(#Listview_Tagesabrechnung, 948, 48, 380, 500)
      StringGadget(#String_Date, 948, 8, 380, 20, "", #PB_String_ReadOnly)
      ButtonGadget(#Button_Tagesabschluss, 1118, 588, 210, 40, "Tagesabschluss")
      Frame3DGadget(#Frame3D_Bediener, 8, 18, 550, 530, "Bediener:")
      ImageGadget(#Image_Mario, 18, 48, 130, 140, Image0)
      ImageGadget(#Image_Sebastian, 18, 218, 130, 140, Image1)
      ImageGadget(#Image_Martin, 18, 388, 130, 140, Image2)
      CheckBoxGadget(#CheckBox_Martin, 168, 508, 30, 20, "")
      CheckBoxGadget(#CheckBox_Mario, 168, 168, 30, 20, "")
      CheckBoxGadget(#CheckBox_Sebastian, 168, 338, 30, 20, "")
      AddGadgetItem(#Panel, -1, "Bilanzen")
      AddGadgetItem(#Panel, -1, "Einstellungen")
      TextGadget(#Text_Speicherort, 8, 18, 70, 20, "Speicherort:")
      StringGadget(#String_Speicherort, 88, 18, 140, 20, "", #PB_String_ReadOnly)
      ButtonGadget(#Button_Speicherort, 238, 18, 50, 20, "...")
      TextGadget(#Text_Zugang, 8, 48, 85, 20, "Sicherer Zugang:")
      ButtonGadget(#Button_Zugang, 108, 48, 70, 20, "Ändern")
      CloseGadgetList()
      

  Repeat
    EventID = WaitWindowEvent()
    
    If EventID = #PB_Event_Gadget

      Select EventGadget()
          
            Case #Button_Bierkl
              AddGadgetItem(#ListIcon_Bill, -1, "Bier 0,5 l" + Chr(10) + #Bierkl, 0, 0)
            
              
            Case #Button_Biergr
              AddGadgetItem(#ListIcon_Bill, -1, "Bier 1,0 l" + Chr(10) + #Biergr, 0, 0)
              
              
            Case #Button_Colagr
              AddGadgetItem(#ListIcon_Bill, -1, "Cola groß" + Chr(10) + #Colagr, 0, 0)  
              
            Case #Button_Colakl
              AddGadgetItem(#ListIcon_Bill, -1, "Cola klein" + Chr(10) + #Colakl, 0, 0)  
              
            Case #Button_Wassergr
              AddGadgetItem(#ListIcon_Bill, -1, "Wasser groß" + Chr(10) + #Wassergr, 0, 0)  
              
            Case #Button_Wasserkl
              AddGadgetItem(#ListIcon_Bill, -1, "Wasser klein" + Chr(10) + #Wasserkl, 0, 0)  
              
            Case #Button_Limogr
              AddGadgetItem(#ListIcon_Bill, -1, "Limo groß" + Chr(10) + #Limogr, 0, 0)   
                          
            Case #Button_Limokl
              AddGadgetItem(#ListIcon_Bill, -1, "Limo klein" + Chr(10) + #Limokl, 0, 0)                  
              
            Case #Button_Cocktail
              AddGadgetItem(#ListIcon_Bill, -1, "Cocktail" + Chr(10) + #Cocktail, 0, 0)  
              
            Case #Button_Shisha1
              AddGadgetItem(#ListIcon_Bill, -1, "Shisha Kat. 1" + Chr(10) + #Shisha1, 0, 0)  
              
            Case #Button_Shisha2
              AddGadgetItem(#ListIcon_Bill, -1, "Shisha Kat. 2" + Chr(10) + #Shisha2, 0, 0)
                            
            Case #Button_Shisha3
              AddGadgetItem(#ListIcon_Bill, -1, "Shisha Kat. 3" + Chr(10) + #Shisha3, 0, 0)
              
            Case #Button_Enter
              
              
            Case #Button_BillPrint
              postenzahl = CountGadgetItems(#ListIcon_Bill)
              
              If CreateFile(#Rechnung, GetGadgetText(#String_Rechnungsnr) + ".txt")
                  WriteStringN(#Rechnung,"    Zeitlos  -  Cocktails, Bar, Lounge & Shisha")
                  WriteStringN(#Rechnung, "")
              
              For ab = 0 To postenzahl
                WriteStringN(#Rechnung, GetGadgetItemText(#ListIcon_Bill, ab, 0))
                WriteStringN(#Rechnung, GetGadgetItemText(#ListIcon_Bill, ab, 1))
              Next
              WriteStringN(#Rechnung,"______________________________________________")
              WriteStringN(#Rechnung, "Summe:")
              WriteStringN(#Rechnung, "MwSt.:")
              WriteStringN(#Rechnung, "")
              WriteStringN(#Rechnung, "Es bediente Sie:")
              WriteStringN(#Rechnung,"")
              WriteStringN(#Rechnung, "Rechnungsnr.:" + GetGadgetText(#String_Rechnungsnr))
              
                CloseFile(#Rechnung)
              Else
                MessageRequester("Fehler", "Rechnung konnte nicht erstellt werden. Zugriffsfehler")
              EndIf
              
             
      ViewBill = MessageRequester("", "Rechnung ansehen?", #PB_MessageRequester_YesNo)
      
      
            If ViewBill = #PB_MessageRequester_Yes       
               RunProgram(GetGadgetText(#String_Rechnungsnr) + ".txt")
            Else                                      
               MessageRequester("","Fehler bei Rechnungserstellung")
            EndIf

              ClearGadgetItems(#ListIcon_Bill)
              
    EndSelect

    EndIf

  Until EventID = #PB_Event_CloseWindow

EndIf
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: Werte aus Listicon addieren

Beitrag von Waldixxl »

Hallo Fox
ersetze die Procdure Euro2Cent(euro.s) durch

Code: Alles auswählen

Procedure.i Euro2Cent(euro.s)
   euro = ReplaceString(euro, ",", ".")
   Protected d.d = ValD(euro)
   ProcedureReturn d * 100
EndProcedure
und füge

Code: Alles auswählen

For i=0 To CountGadgetItems(#ListIcon_Bill)
    Summe+Euro2Cent(GetGadgetItemText(#ListIcon_Bill,i,1))
Next
SetGadgetText(#String_Summe, Cent2Euro(Summe))
diesen Code beim #Button_Enter ein

Walter
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Benutzeravatar
Fox
Beiträge: 75
Registriert: 08.08.2007 10:14
Kontaktdaten:

Re: Werte aus Listicon addieren

Beitrag von Fox »

1000 Danke Walter, funktioniert super!
Antworten