Ergebnis anzeigen Teil 2

Anfängerfragen zum Programmieren mit PureBasic.
Kallewirsch
Beiträge: 49
Registriert: 11.01.2010 01:22

Ergebnis anzeigen Teil 2

Beitrag von Kallewirsch »

Hallo

hab ne neue Frage:

im unten angezeigtem Code wird das Ergebnis x100 berechnet...... wie bringe ich ein Fenster zum auswählen in das Prg. in dem man nen Haken für ne Berechnung "x100 oder x1000" setzen muß?


Für euch ist das bestimmt ganz einfach...aber ich muss das erst mal gesehen haben damit es mir klar wird.

Danke schon mal

Gruß
Kallewirsch

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #Button_loeschen
  #Button_Close
  #Button_drucken
  #String_0
  #String_1
  #String_2
  #String_3
  #String_4
  #STRING_5
  #TString_0
  #TString_1
  #TString_2
  #TString_3
  #TString_4
  #TString_5
  #TString_6
  #TString_7
  #TString_8
  #STRING_INPUT
  #STRING_INPUT_1
  #STRING_INPUT_2
  #MB_ICONEXCLAMATION

EndEnumeration


#CRLF$ = Chr(13)+Chr(10)

LoadFont(0, "Arial", 20)
LoadFont(1, "Arial", 24)



Procedure ergebnisloeschen()
      ; Achtung hier Ermittlung der richtigen Zifferanzahl
         If (EventType()=#PB_EventType_LostFocus)
            aFeld=EventGadget()
            iFeld$ = GetGadgetText(aFeld)
            If (Len(iFeld$)>0) And (Len(iFeld$)<5)
               MessageRequester("InfoBox", "Zahl zu klein! Mindestens 5 Stellen!") ; #MB_ICONEXCLAMATION)
               SetActiveGadget(aFeld)
               
            SetGadgetText(#STRING_INPUT_2, ("Eingabe FALSCH!"))
            SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$3300FF)
           
            ElseIf (Len(iFeld$)>7)
               MessageRequester("InfoBox", "Zahl zu groß! Maximal 7 Stellen!",  #MB_ICONEXCLAMATION)
               SetGadgetText(aFeld,"")
               SetActiveGadget(aFeld)
               
            SetGadgetText(#STRING_INPUT_2, ("Eingabe FALSCH!"))
            SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$3300FF)
           
            EndIf
         Else
            For n=#string_0 To #String_5
               SetGadgetColor(n, #PB_Gadget_BackColor, -1)
            Next n
            SetGadgetColor(GetActiveGadget(), #PB_Gadget_BackColor,$00FFFF)
            SetGadgetText(#STRING_INPUT, "")
            SetGadgetText(#STRING_INPUT_1, "")
         EndIf

      ; wir löschen das Feld
      SetGadgetText(#STRING_INPUT,"")
      ; und setzen die Hintergrundfarbe wieder auf weiß
      SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor,$FFFFFF)
      SetGadgetText(#STRING_INPUT_1,"")
      SetGadgetColor(#STRING_INPUT_1, #PB_Gadget_BackColor,$FFFFFF)
     
   
     
EndProcedure

  If OpenWindow(#Window_0, 248, 16, 730, 642, "Mittelwertrechner",  #PB_Window_SystemMenu | #PB_Window_ScreenCentered| #PB_Window_SizeGadget | #PB_Window_TitleBar )
     
      SetWindowColor(#Window_0,$FFFFFF)
     ; TextGadget(#TString_0, 300, 50, 450, 250, "Danke für " + #CRLF$ + "die Hilfe! " + #CRLF$ + "So ist der Rechner super!!!")
    ;  SetGadgetColor(#TString_0, #PB_Gadget_BackColor,$FBE6C5)
      SetGadgetFont(#TString_0, FontID(0))
      ButtonGadget(#Button_0, 250, 500, 100, 50, "Berechnen")
      ButtonGadget(#Button_loeschen, 425, 500, 100, 50, "Löschen")
      ButtonGadget(#Button_Close, 600, 500, 100, 50, "Schließen")
      
      ButtonGadget(#Button_drucken, 250, 580, 100, 50, "Drucken")
      
      TextGadget(#TString_1, 40, 30, 160, 20, "Zahl 1 eingeben")
     ; SetGadgetColor(#TString_1, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_0, 40, 50, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_0, FontID(0))
      TextGadget(#TString_2, 40, 120, 160, 20, "Zahl 2 eingeben")
     ; SetGadgetColor(#TString_2, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_1, 40, 140, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_1, FontID(0))
      TextGadget(#TString_3, 40, 210, 160, 20, "Zahl 3 eingeben")
   ;   SetGadgetColor(#TString_3, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_2, 40, 230, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_2, FontID(0))
      TextGadget(#TString_4, 40, 300, 160, 20, "Zahl 4 eingeben")
   ;   SetGadgetColor(#TString_4, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_3, 40, 320, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_3, FontID(0))
      TextGadget(#TString_6, 40, 390, 160, 20, "Zahl 5 eingeben")
  ;    SetGadgetColor(#TString_6, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_4, 40, 410, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_4, FontID(0))
      TextGadget(#TString_7, 40, 480, 160, 20, "Zahl 6 eingeben")
   ;   SetGadgetColor(#TString_7, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_5, 40, 500, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_5, FontID(0))
      TextGadget(#TString_5, 250, 300, 280, 20, "Mittelwert der Eingaben")
  ;    SetGadgetColor(#TString_5, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#STRING_INPUT, 250, 320, 450, 50,"", #PB_String_Numeric)
      SetGadgetFont(#STRING_INPUT, FontID(1))
      TextGadget(#TString_8, 250, 380, 280, 20, "Mittelwert x100")
   ;   SetGadgetColor(#TString_8, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#STRING_INPUT_1, 250, 400, 450, 50,"", #PB_String_Numeric)
     
      TextGadget(#STRING_INPUT_2, 250, 150, 130, 100,"", #PB_Text_Border)
     ;  StringGadget(#STRING_INPUT_2, 250, 150, 130, 100,"", #PB_String_ReadOnly)   
    ;   SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$FFFFFF)
       SetGadgetFont(#STRING_INPUT_2, FontID(0)) 
       
       
      Repeat
    iEvent.i = WaitWindowEvent()
    Select iEvent
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Button_0
           SetControl=0
            eingabe1$=GetGadgetText(#String_0)
            eingabe2$=GetGadgetText(#String_1)
            eingabe3$=GetGadgetText(#String_2)
            eingabe4$=GetGadgetText(#String_3)
            eingabe5$=GetGadgetText(#String_4)
            eingabe6$=GetGadgetText(#STRING_5)
            If (eingabe1$<>"")
              ; If Feldpruefung(1,eingabe1$) ; springt nur hier hinein, wenn die Rückgabe 1 ist   
               Teiler + 1
               Mittelwert  = ValD(eingabe1$)
          ;     EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 1 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If (eingabe2$<>"")
          ;     If Feldpruefung(2,eingabe2$)
               Teiler + 1
               Mittelwert + ValD(eingabe2$)
       ;        EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 2 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If (eingabe3$<>"")
          ;     If Feldpruefung(3,eingabe3$)
               Teiler + 1
               Mittelwert + ValD(eingabe3$)
        ;       EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 3 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If (eingabe4$<>"")
         ;      If Feldpruefung(4,eingabe4$)
               Teiler + 1
               Mittelwert + ValD(eingabe4$)
         ;      EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 4 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If (eingabe5$<>"")
         ;      If Feldpruefung(5,eingabe5$)
               Teiler + 1
               Mittelwert + ValD(eingabe5$)
         ;      EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 5 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If (eingabe6$<>"")
          ;     If Feldpruefung(6,eingabe6$)
               Teiler + 1
               Mittelwert + ValD(eingabe6$)
         ;      EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 6 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If Teiler=6
              SetGadgetText(#STRING_INPUT,StrD(Mittelwert/Teiler))
              a1.d = Mittelwert / Teiler * 100
              Mittel100 = Round(a1, #PB_Round_Up)       
              SetGadgetText(#STRING_INPUT_1,Str(Mittel100))
              SetGadgetColor(#STRING_INPUT_1, #PB_Gadget_BackColor,$00FFFF)   
           
            SetGadgetText(#STRING_INPUT_2, ("Eingabe in Ordnung"))
            SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$00FF00)
           
            Else
           
            MessageRequester("Fehler","Es müssen alle Felder korrekt ausgefüllt werden!")
            EndIf
           
           
            Teiler=0

           
           
           Case #Button_loeschen
           
                SetGadgetText(#String_0,"")
                SetGadgetText(#String_1,"")
                SetGadgetText(#String_2,"")
                SetGadgetText(#String_3,"")
                SetGadgetText(#String_4,"")
                SetGadgetText(#STRING_5,"")
               
                SetGadgetText(#STRING_INPUT_2,"")
                SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$FFFFFF)       
           

                ergebnisloeschen()
               
           Case #String_0
                ergebnisloeschen()
           Case #String_1
                ergebnisloeschen()
           Case #String_2
                ergebnisloeschen()
           Case #String_3
                ergebnisloeschen()
           Case #String_4
                ergebnisloeschen()
           Case #STRING_5
                ergebnisloeschen()
             
           Case #STRING_INPUT
                SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor,$00FFFF)
           
           Case #BUTTON_CLOSE
                Quit = #True
                     
        EndSelect
     EndSelect                     
   
         
   Until iEvent = #PB_Event_CloseWindow Or Quit = #True

EndIf


End 
PureBasic 5.00 (Windows - x86)
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Ergebnis anzeigen Teil 2

Beitrag von Mok »

OptionGadget() und DisableGadget() einfach kombinieren
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: Ergebnis anzeigen Teil 2

Beitrag von Pelagio »

Hallo Kallewirsch,

bevor Du deinen Code ausbaust, würde ich an deiner Stelle versuchen den Code etwas zu straffen und übersichtlicher zu gestalten.
Aber nichts desto Trotz hier dein überarbeiteter Code:

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #Button_loeschen
  #Button_Close
  #Button_drucken
  #String_0
  #String_1
  #String_2
  #String_3
  #String_4
  #STRING_5
  #TString_0
  #TString_1
  #TString_2
  #TString_3
  #TString_4
  #TString_5
  #TString_6
  #TString_7
  #Option_1
  #Option_2
  #STRING_INPUT
  #STRING_INPUT_1
  #STRING_INPUT_2
  #MB_ICONEXCLAMATION

EndEnumeration


#CRLF$ = Chr(13)+Chr(10)

LoadFont(0, "Arial", 20)
LoadFont(1, "Arial", 24)



Procedure ergebnisloeschen()
      ; Achtung hier Ermittlung der richtigen Zifferanzahl
         If (EventType()=#PB_EventType_LostFocus)
            aFeld=EventGadget()
            iFeld$ = GetGadgetText(aFeld)
            If (Len(iFeld$)>0) And (Len(iFeld$)<5)
               MessageRequester("InfoBox", "Zahl zu klein! Mindestens 5 Stellen!") ; #MB_ICONEXCLAMATION)
               SetActiveGadget(aFeld)
               
            SetGadgetText(#STRING_INPUT_2, ("Eingabe FALSCH!"))
            SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$3300FF)
           
            ElseIf (Len(iFeld$)>7)
               MessageRequester("InfoBox", "Zahl zu groß! Maximal 7 Stellen!",  #MB_ICONEXCLAMATION)
               SetGadgetText(aFeld,"")
               SetActiveGadget(aFeld)
               
            SetGadgetText(#STRING_INPUT_2, ("Eingabe FALSCH!"))
            SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$3300FF)
           
            EndIf
         Else
            For n=#string_0 To #String_5
               SetGadgetColor(n, #PB_Gadget_BackColor, -1)
            Next n
            SetGadgetColor(GetActiveGadget(), #PB_Gadget_BackColor,$00FFFF)
            SetGadgetText(#STRING_INPUT, "")
            SetGadgetText(#STRING_INPUT_1, "")
         EndIf

      ; wir löschen das Feld
      SetGadgetText(#STRING_INPUT,"")
      ; und setzen die Hintergrundfarbe wieder auf weiß
      SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor,$FFFFFF)
      SetGadgetText(#STRING_INPUT_1,"")
      SetGadgetColor(#STRING_INPUT_1, #PB_Gadget_BackColor,$FFFFFF)
     
   
     
EndProcedure

  If OpenWindow(#Window_0, 248, 16, 730, 642, "Mittelwertrechner",  #PB_Window_SystemMenu | #PB_Window_ScreenCentered| #PB_Window_SizeGadget | #PB_Window_TitleBar )
     
      SetWindowColor(#Window_0,$FFFFFF)
     ; TextGadget(#TString_0, 300, 50, 450, 250, "Danke für " + #CRLF$ + "die Hilfe! " + #CRLF$ + "So ist der Rechner super!!!")
    ;  SetGadgetColor(#TString_0, #PB_Gadget_BackColor,$FBE6C5)
      SetGadgetFont(#TString_0, FontID(0))
      ButtonGadget(#Button_0, 250, 500, 100, 50, "Berechnen")
      ButtonGadget(#Button_loeschen, 425, 500, 100, 50, "Löschen")
      ButtonGadget(#Button_Close, 600, 500, 100, 50, "Schließen")
      
      ButtonGadget(#Button_drucken, 250, 580, 100, 50, "Drucken")
      
      TextGadget(#TString_1, 40, 30, 160, 20, "Zahl 1 eingeben")
     ; SetGadgetColor(#TString_1, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_0, 40, 50, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_0, FontID(0))
      TextGadget(#TString_2, 40, 120, 160, 20, "Zahl 2 eingeben")
     ; SetGadgetColor(#TString_2, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_1, 40, 140, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_1, FontID(0))
      TextGadget(#TString_3, 40, 210, 160, 20, "Zahl 3 eingeben")
   ;   SetGadgetColor(#TString_3, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_2, 40, 230, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_2, FontID(0))
      TextGadget(#TString_4, 40, 300, 160, 20, "Zahl 4 eingeben")
   ;   SetGadgetColor(#TString_4, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_3, 40, 320, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_3, FontID(0))
      TextGadget(#TString_6, 40, 390, 160, 20, "Zahl 5 eingeben")
  ;    SetGadgetColor(#TString_6, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_4, 40, 410, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_4, FontID(0))
      TextGadget(#TString_7, 40, 480, 160, 20, "Zahl 6 eingeben")
   ;   SetGadgetColor(#TString_7, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#String_5, 40, 500, 160, 60, "", #PB_String_Numeric)
      SetGadgetFont(#String_5, FontID(0))
      TextGadget(#TString_5, 250, 300, 280, 20, "Mittelwert der Eingaben")
  ;    SetGadgetColor(#TString_5, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#STRING_INPUT, 250, 320, 450, 50,"", #PB_String_Numeric)
      SetGadgetFont(#STRING_INPUT, FontID(1))
; Achtung: Änderung
      OptionGadget(#Option_1,250, 380, 100, 20, "Mittelwert x100")
      OptionGadget(#Option_2,350, 380, 100, 20, "Mittelwert x1000")
; END Änderung 
      
      SetGadgetState(#Option_1, #True)
   ;  TextGadget(#TString_8, 250, 380, 280, 20, "Mittelwert x100")
   ;   SetGadgetColor(#TString_8, #PB_Gadget_BackColor,$FBE6C5)
      StringGadget(#STRING_INPUT_1, 250, 400, 450, 50,"", #PB_String_Numeric)
     
      TextGadget(#STRING_INPUT_2, 250, 150, 130, 100,"", #PB_Text_Border)
     ;  StringGadget(#STRING_INPUT_2, 250, 150, 130, 100,"", #PB_String_ReadOnly)   
    ;   SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$FFFFFF)
       SetGadgetFont(#STRING_INPUT_2, FontID(0)) 
       
       
      Repeat
    iEvent.i = WaitWindowEvent()
    Select iEvent
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Button_0
           SetControl=0
            eingabe1$=GetGadgetText(#String_0)
            eingabe2$=GetGadgetText(#String_1)
            eingabe3$=GetGadgetText(#String_2)
            eingabe4$=GetGadgetText(#String_3)
            eingabe5$=GetGadgetText(#String_4)
            eingabe6$=GetGadgetText(#STRING_5)
            If (eingabe1$<>"")
              ; If Feldpruefung(1,eingabe1$) ; springt nur hier hinein, wenn die Rückgabe 1 ist   
               Teiler + 1
               Mittelwert  = ValD(eingabe1$)
          ;     EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 1 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If (eingabe2$<>"")
          ;     If Feldpruefung(2,eingabe2$)
               Teiler + 1
               Mittelwert + ValD(eingabe2$)
       ;        EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 2 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If (eingabe3$<>"")
          ;     If Feldpruefung(3,eingabe3$)
               Teiler + 1
               Mittelwert + ValD(eingabe3$)
        ;       EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 3 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If (eingabe4$<>"")
         ;      If Feldpruefung(4,eingabe4$)
               Teiler + 1
               Mittelwert + ValD(eingabe4$)
         ;      EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 4 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If (eingabe5$<>"")
         ;      If Feldpruefung(5,eingabe5$)
               Teiler + 1
               Mittelwert + ValD(eingabe5$)
         ;      EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 5 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If (eingabe6$<>"")
          ;     If Feldpruefung(6,eingabe6$)
               Teiler + 1
               Mittelwert + ValD(eingabe6$)
         ;      EndIf
            Else
            If SetControl=0
            MessageRequester("Eingabefehler","Feld 6 muß ausgefüllt werden!")
            SetControl=1
            EndIf
            EndIf
           
            If Teiler=6
              SetGadgetText(#STRING_INPUT,StrD(Mittelwert/Teiler))

; Achtung: Änderung              
              If GetGadgetState(#Option_1)
                  a1.d = Mittelwert / Teiler * 100
              Else
                  a1.d = Mittelwert / Teiler * 1000
              EndIf
; END Änderung
              
              Mittel100 = Round(a1, #PB_Round_Up)       
              SetGadgetText(#STRING_INPUT_1,Str(Mittel100))
              SetGadgetColor(#STRING_INPUT_1, #PB_Gadget_BackColor,$00FFFF)   
           
            SetGadgetText(#STRING_INPUT_2, ("Eingabe in Ordnung"))
            SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$00FF00)
           
            Else
           
            MessageRequester("Fehler","Es müssen alle Felder korrekt ausgefüllt werden!")
            EndIf
           
           
            Teiler=0

           
           
           Case #Button_loeschen
           
                SetGadgetText(#String_0,"")
                SetGadgetText(#String_1,"")
                SetGadgetText(#String_2,"")
                SetGadgetText(#String_3,"")
                SetGadgetText(#String_4,"")
                SetGadgetText(#STRING_5,"")
               
                SetGadgetText(#STRING_INPUT_2,"")
                SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$FFFFFF)       
           

                ergebnisloeschen()
               
           Case #String_0
                ergebnisloeschen()
           Case #String_1
                ergebnisloeschen()
           Case #String_2
                ergebnisloeschen()
           Case #String_3
                ergebnisloeschen()
           Case #String_4
                ergebnisloeschen()
           Case #STRING_5
                ergebnisloeschen()
             
           Case #STRING_INPUT
                SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor,$00FFFF)
           
           Case #BUTTON_CLOSE
                Quit = #True
                     
        EndSelect
     EndSelect                     
   
         
   Until iEvent = #PB_Event_CloseWindow Or Quit = #True

EndIf


End
:allright:
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.10 LTS]. :allright:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Ergebnis anzeigen Teil 2

Beitrag von ts-soft »

>> und übersichtlicher zu gestalten.
Wie wäre es, wenn Ihr den Code auch mal vernünftig einrückt? Gerade die If / EndIf ebenen stimmen
ja nun garnicht. Wie soll er sich da zurechtfinden? Ausserdem gehört das mit zu den Grundlagen, die
er ja lernen möchte :)
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: Ergebnis anzeigen Teil 2

Beitrag von Pelagio »

ts-soft hat geschrieben:Wie wäre es, wenn Ihr den Code auch mal vernünftig einrückt?
Du hast recht, dies wurde aber auch schon in Beispielen vorab (Teil 1) vorgemacht aber leider nicht übernommen und so bleibt die Frage: Code oder Design!
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.10 LTS]. :allright:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Ergebnis anzeigen Teil 2

Beitrag von ts-soft »

Ein Knopfdruck und die Formatierung stimmt (IDE-Einrucker von HeXOr)

Code: Alles auswählen

EnableExplicit

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #Button_loeschen
  #Button_Close
  #Button_drucken
  #String_0
  #String_1
  #String_2
  #String_3
  #String_4
  #STRING_5
  #TString_0
  #TString_1
  #TString_2
  #TString_3
  #TString_4
  #TString_5
  #TString_6
  #TString_7
  #Option_1
  #Option_2
  #STRING_INPUT
  #STRING_INPUT_1
  #STRING_INPUT_2
EndEnumeration

#MB_ICONEXCLAMATION = 48

#CRLF$ = Chr(13) + Chr(10)

LoadFont(0, "Arial", 20)
LoadFont(1, "Arial", 24)



Procedure ergebnisloeschen()
  ; Achtung hier Ermittlung der richtigen Zifferanzahl
  Protected aFeld, iFeld$, n
  If (EventType() = #PB_EventType_LostFocus)
    aFeld  = EventGadget()
    iFeld$ = GetGadgetText(aFeld)
    If (Len(iFeld$) > 0) And (Len(iFeld$) < 5)
      MessageRequester("InfoBox", "Zahl zu klein! Mindestens 5 Stellen!") ; #MB_ICONEXCLAMATION)
      SetActiveGadget(aFeld)

      SetGadgetText(#STRING_INPUT_2, ("Eingabe FALSCH!"))
      SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor, $3300FF)

    ElseIf (Len(iFeld$) > 7)
      MessageRequester("InfoBox", "Zahl zu groß! Maximal 7 Stellen!",  #MB_ICONEXCLAMATION)
      SetGadgetText(aFeld, "")
      SetActiveGadget(aFeld)

      SetGadgetText(#STRING_INPUT_2, ("Eingabe FALSCH!"))
      SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor, $3300FF)

    EndIf
  Else
    For n = #string_0 To #String_5
      SetGadgetColor(n, #PB_Gadget_BackColor, -1)
    Next n
    SetGadgetColor(GetActiveGadget(), #PB_Gadget_BackColor, $00FFFF)
    SetGadgetText(#STRING_INPUT, "")
    SetGadgetText(#STRING_INPUT_1, "")
  EndIf

  ; wir löschen das Feld
  SetGadgetText(#STRING_INPUT, "")
  ; und setzen die Hintergrundfarbe wieder auf weiß
  SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetText(#STRING_INPUT_1, "")
  SetGadgetColor(#STRING_INPUT_1, #PB_Gadget_BackColor, $FFFFFF)



EndProcedure

If OpenWindow(#Window_0, 248, 16, 730, 642, "Mittelwertrechner",  #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget | #PB_Window_TitleBar )

  SetWindowColor(#Window_0, $FFFFFF)
  ; TextGadget(#TString_0, 300, 50, 450, 250, "Danke für " + #CRLF$ + "die Hilfe! " + #CRLF$ + "So ist der Rechner super!!!")
  ;  SetGadgetColor(#TString_0, #PB_Gadget_BackColor,$FBE6C5)
  SetGadgetFont(#TString_0, FontID(0))
  ButtonGadget(#Button_0, 250, 500, 100, 50, "Berechnen")
  ButtonGadget(#Button_loeschen, 425, 500, 100, 50, "Löschen")
  ButtonGadget(#Button_Close, 600, 500, 100, 50, "Schließen")

  ButtonGadget(#Button_drucken, 250, 580, 100, 50, "Drucken")

  TextGadget(#TString_1, 40, 30, 160, 20, "Zahl 1 eingeben")
  ; SetGadgetColor(#TString_1, #PB_Gadget_BackColor,$FBE6C5)
  StringGadget(#String_0, 40, 50, 160, 60, "", #PB_String_Numeric)
  SetGadgetFont(#String_0, FontID(0))
  TextGadget(#TString_2, 40, 120, 160, 20, "Zahl 2 eingeben")
  ; SetGadgetColor(#TString_2, #PB_Gadget_BackColor,$FBE6C5)
  StringGadget(#String_1, 40, 140, 160, 60, "", #PB_String_Numeric)
  SetGadgetFont(#String_1, FontID(0))
  TextGadget(#TString_3, 40, 210, 160, 20, "Zahl 3 eingeben")
  ;   SetGadgetColor(#TString_3, #PB_Gadget_BackColor,$FBE6C5)
  StringGadget(#String_2, 40, 230, 160, 60, "", #PB_String_Numeric)
  SetGadgetFont(#String_2, FontID(0))
  TextGadget(#TString_4, 40, 300, 160, 20, "Zahl 4 eingeben")
  ;   SetGadgetColor(#TString_4, #PB_Gadget_BackColor,$FBE6C5)
  StringGadget(#String_3, 40, 320, 160, 60, "", #PB_String_Numeric)
  SetGadgetFont(#String_3, FontID(0))
  TextGadget(#TString_6, 40, 390, 160, 20, "Zahl 5 eingeben")
  ;    SetGadgetColor(#TString_6, #PB_Gadget_BackColor,$FBE6C5)
  StringGadget(#String_4, 40, 410, 160, 60, "", #PB_String_Numeric)
  SetGadgetFont(#String_4, FontID(0))
  TextGadget(#TString_7, 40, 480, 160, 20, "Zahl 6 eingeben")
  ;   SetGadgetColor(#TString_7, #PB_Gadget_BackColor,$FBE6C5)
  StringGadget(#String_5, 40, 500, 160, 60, "", #PB_String_Numeric)
  SetGadgetFont(#String_5, FontID(0))
  TextGadget(#TString_5, 250, 300, 280, 20, "Mittelwert der Eingaben")
  ;    SetGadgetColor(#TString_5, #PB_Gadget_BackColor,$FBE6C5)
  StringGadget(#STRING_INPUT, 250, 320, 450, 50, "", #PB_String_Numeric)
  SetGadgetFont(#STRING_INPUT, FontID(1))
  ; Achtung: Änderung
  OptionGadget(#Option_1, 250, 380, 100, 20, "Mittelwert x100")
  OptionGadget(#Option_2, 350, 380, 100, 20, "Mittelwert x1000")
  ; END Änderung

  SetGadgetState(#Option_1, #True)
  ;  TextGadget(#TString_8, 250, 380, 280, 20, "Mittelwert x100")
  ;   SetGadgetColor(#TString_8, #PB_Gadget_BackColor,$FBE6C5)
  StringGadget(#STRING_INPUT_1, 250, 400, 450, 50, "", #PB_String_Numeric)

  TextGadget(#STRING_INPUT_2, 250, 150, 130, 100, "", #PB_Text_Border)
  ;  StringGadget(#STRING_INPUT_2, 250, 150, 130, 100,"", #PB_String_ReadOnly)
  ;   SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$FFFFFF)
  SetGadgetFont(#STRING_INPUT_2, FontID(0))


  Define iEvent.i, SetControl, Teiler, Mittelwert, a1.d, Mittel100, Quit
  Define eingabe1$, eingabe2$, eingabe3$, eingabe4$, eingabe5$, eingabe6$
  
  Repeat
    iEvent.i = WaitWindowEvent()
    Select iEvent
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Button_0
            SetControl = 0
            eingabe1$  = GetGadgetText(#String_0)
            eingabe2$  = GetGadgetText(#String_1)
            eingabe3$  = GetGadgetText(#String_2)
            eingabe4$  = GetGadgetText(#String_3)
            eingabe5$  = GetGadgetText(#String_4)
            eingabe6$  = GetGadgetText(#STRING_5)
            If (eingabe1$ <> "")
              ; If Feldpruefung(1,eingabe1$) ; springt nur hier hinein, wenn die Rückgabe 1 ist
              Teiler + 1
              Mittelwert  = ValD(eingabe1$)
              ;     EndIf
            Else
              If SetControl = 0
                MessageRequester("Eingabefehler", "Feld 1 muß ausgefüllt werden!")
                SetControl = 1
              EndIf
            EndIf

            If (eingabe2$ <> "")
              ;     If Feldpruefung(2,eingabe2$)
              Teiler + 1
              Mittelwert + ValD(eingabe2$)
              ;        EndIf
            Else
              If SetControl = 0
                MessageRequester("Eingabefehler", "Feld 2 muß ausgefüllt werden!")
                SetControl = 1
              EndIf
            EndIf

            If (eingabe3$ <> "")
              ;     If Feldpruefung(3,eingabe3$)
              Teiler + 1
              Mittelwert + ValD(eingabe3$)
              ;       EndIf
            Else
              If SetControl = 0
                MessageRequester("Eingabefehler", "Feld 3 muß ausgefüllt werden!")
                SetControl = 1
              EndIf
            EndIf

            If (eingabe4$ <> "")
              ;      If Feldpruefung(4,eingabe4$)
              Teiler + 1
              Mittelwert + ValD(eingabe4$)
              ;      EndIf
            Else
              If SetControl = 0
                MessageRequester("Eingabefehler", "Feld 4 muß ausgefüllt werden!")
                SetControl = 1
              EndIf
            EndIf

            If (eingabe5$ <> "")
              ;      If Feldpruefung(5,eingabe5$)
              Teiler + 1
              Mittelwert + ValD(eingabe5$)
              ;      EndIf
            Else
              If SetControl = 0
                MessageRequester("Eingabefehler", "Feld 5 muß ausgefüllt werden!")
                SetControl = 1
              EndIf
            EndIf

            If (eingabe6$ <> "")
              ;     If Feldpruefung(6,eingabe6$)
              Teiler + 1
              Mittelwert + ValD(eingabe6$)
              ;      EndIf
            Else
              If SetControl = 0
                MessageRequester("Eingabefehler", "Feld 6 muß ausgefüllt werden!")
                SetControl = 1
              EndIf
            EndIf

            If Teiler = 6
              SetGadgetText(#STRING_INPUT, StrD(Mittelwert / Teiler))

              ; Achtung: Änderung
              If GetGadgetState(#Option_1)
                a1.d = Mittelwert / Teiler * 100
              Else
                a1.d = Mittelwert / Teiler * 1000
              EndIf
              ; END Änderung

              Mittel100 = Round(a1, #PB_Round_Up)
              SetGadgetText(#STRING_INPUT_1, Str(Mittel100))
              SetGadgetColor(#STRING_INPUT_1, #PB_Gadget_BackColor, $00FFFF)

              SetGadgetText(#STRING_INPUT_2, ("Eingabe in Ordnung"))
              SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor, $00FF00)

            Else

              MessageRequester("Fehler", "Es müssen alle Felder korrekt ausgefüllt werden!")
            EndIf


            Teiler = 0



          Case #Button_loeschen

            SetGadgetText(#String_0, "")
            SetGadgetText(#String_1, "")
            SetGadgetText(#String_2, "")
            SetGadgetText(#String_3, "")
            SetGadgetText(#String_4, "")
            SetGadgetText(#STRING_5, "")

            SetGadgetText(#STRING_INPUT_2, "")
            SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor, $FFFFFF)


            ergebnisloeschen()

          Case #String_0
            ergebnisloeschen()
          Case #String_1
            ergebnisloeschen()
          Case #String_2
            ergebnisloeschen()
          Case #String_3
            ergebnisloeschen()
          Case #String_4
            ergebnisloeschen()
          Case #STRING_5
            ergebnisloeschen()

          Case #STRING_INPUT
            SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor, $00FFFF)

          Case #BUTTON_CLOSE
            Quit = #True

        EndSelect
    EndSelect


  Until iEvent = #PB_Event_CloseWindow Or Quit = #True

EndIf


End
// edit
Variablendeklaration und EnableExplicit hinzugefügt. falsche #MB_ICONEXCLAMATION aus der Enumeration
entfernt und separat mit 48 deklariert.
Kallewirsch
Beiträge: 49
Registriert: 11.01.2010 01:22

Re: Ergebnis anzeigen Teil 2

Beitrag von Kallewirsch »

Hallo Pelagio, hi ts-soft,

vielen Dank, ....ist ja gaaaanz einfach wenn man es weiß.

wollte gerade ordnung ins Programm bringen (damit ich nicht nochmal Schimpfe kriege)......aber wie ich sehe hat ts-soft schon aufgeräumt.

Hab jetzt aber noch die Kommentarzeilen entfernt.

Dieses Programm soll ja nur mein Versuchs-Ausprobier-Test-Übungsprogramm sein.....darf also auch etwas durcheinander aussehen.

Wo ist den Dysti........sagt mal...hat der Teil 2 nicht gefunden? :?:

@ts-soft
falsche #MB_ICONEXCLAMATION aus der Enumeration
entfernt und separat mit 48 deklariert.
So, nun erklärs mir mal........was bedeutet =48? und warum wars vorher falsch?

Gruß und Danke
Kallewirsch
PureBasic 5.00 (Windows - x86)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Ergebnis anzeigen Teil 2

Beitrag von ts-soft »

Kallewirsch hat geschrieben: @ts-soft
falsche #MB_ICONEXCLAMATION aus der Enumeration
entfernt und separat mit 48 deklariert.
So, nun erklärs mir mal........was bedeutet =48? und warum wars vorher falsch?
In eine Enumeration kommen Deine Konstanten für Fenster, Gadgets, Bilder und Menüs. Diese werden
dort durchnummeriert. #MB_ICONEXCLAMATION ist aber keine Deiner Konstanten, der Du einfach
irgendwelche Werte geben darfst, sonder der Wert steht fest und ist in der Hilfe zur WinAPI deklariert.
Und zwar mit 48.
Konstanten dienen lediglich der Wiedererkennung, der Compiler ersetzt diese in der Executable durch
ihren Wert. Wenn Dein #MB_ICONEXCLAMATION aber kein 48, sondern den Wert abhängig von der
Position in der Enumeration hat, woher soll Windows Wissen, das Du 48 meinst?

Gruß
Thomas
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Ergebnis anzeigen Teil 2

Beitrag von Mok »

@Kalle: Flags müssen als Konstanten definiert werden. Da jedes Flag auch in Zahlenform vorliegen kann (MessageRequester("Info","Hallo",0) ist dasselbe wie MessageRequester("Info","Hallo",#PB_MessageRequester_OK), weil die Konstante #PB_MessageRequester_Ok den Wert 0 hat) und nicht jeder Programmierer sich hunderttausend Zahlen und die dazugehörigen Auswirkungen merken will. Darum gibt es auch die Konstanten mit einem (mehor oder weniger) viel sagendem Namen, aus dem man die Wirkung herauslesen kann.
#MB_ICONEXCLAMATION ist eine von der WinAPI definierte Konstante. Da diese in den Demos nicht verfügbar ist, musste die vorher mit ihrem eigentlichen Wert deklariert werden, jedoch nicht in einem Enumeration-Block sondern als <Konstante> = <Wert>. Der Grund des ganzen: Allne Konstanten in einem Enumeration-Block werden Werte von 0 bis X zugewiesen. Theoretisch würde das von dir gepostete sogar funktionieren, wenn #MB_ICONEXCLAMATION das 49. Element im Block wäre.
Jetzt hab ich Hunger!

MfG, Mok

Edit:
ts war schneller :(
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Re: Ergebnis anzeigen Teil 2

Beitrag von dysti »

......wenn Pelagio dir schon die Lösung gezeigt hat, habe ich nichts mehr zu sagen, außer es gibt eine bessere oder andere Lösung.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Antworten