Seite 1 von 5

Ergebnis anzeigen?

Verfasst: 20.02.2010 18:44
von Kallewirsch
Hallo Leute,

bin mal wieder am rumprobieren und komm nicht weiter :cry:

Frage: wie kann ich den Mittelwert in dem "List-Fenster" darstellen.

bzw. wie mach ich es den richtig wenn ich nur immer den berechneten Wert Anzeigen will , also keine Auflistung?

Danke für die Hilfe

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #String_0
  #String_1
  #String_2
  #String_3
  #LIST_INPUT

EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 248, 16, 730, 642, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

      ButtonGadget(#Button_0, 40, 540, 150, 50, "Berechnen")
      StringGadget(#String_0, 40, 50, 160, 60, "Zahl1")
      StringGadget(#String_1, 40, 140, 160, 60, "Zahl2")
      StringGadget(#String_2, 40, 230, 160, 60, "Zahl3")
      StringGadget(#String_3, 40, 320, 160, 60, "Zahl4")
      ListViewGadget(#LIST_INPUT, 250, 320, 280, 100)
      
    EndIf
      Repeat
    iEvent.i = WaitWindowEvent()
   
    Select iEvent
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Button_0

          ;   Nur Mittelwert von 1 und 2 wird berechnet
          
            Mittelwert$ = StrD( (ValD(GetGadgetText(#String_0)) + ValD(GetGadgetText(#String_1))) / 2)
          ;  MessageRequester("Mittelwert von 1 und 2",Mittelwert$)
            AddGadgetItem(#LIST_INPUT, -1, GetGadgetText( #String_0 ))

        EndSelect
     EndSelect
   Until iEvent = #PB_Event_CloseWindow

EndProcedure

Open_Window_0()

---
Anmerkung von Moderator Andesdaf:
Threadtitel korrigiert
---

Re: Ergebniss anzeigen?

Verfasst: 20.02.2010 18:51
von Mok
Einfach aus der List ein StringGadget machen und mit SetGadgetText() den Text setzen
ungefähr so:

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #String_0
  #String_1
  #String_2
  #String_3
  #STRING_INPUT

EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 248, 16, 730, 642, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

      ButtonGadget(#Button_0, 40, 540, 150, 50, "Berechnen")
      StringGadget(#String_0, 40, 50, 160, 60, "Zahl1", #PB_String_Numeric)
      StringGadget(#String_1, 40, 140, 160, 60, "Zahl2", #PB_String_Numeric)
      StringGadget(#String_2, 40, 230, 160, 60, "Zahl3", #PB_String_Numeric)
      StringGadget(#String_3, 40, 320, 160, 60, "Zahl4", #PB_String_Numeric)
      StringGadget(#STRING_INPUT, 250, 320, 280, 100,"", #PB_String_Numeric)
     
    EndIf
      Repeat
    iEvent.i = WaitWindowEvent()
   
    Select iEvent
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Button_0

          ;   Nur Mittelwert von 1 und 2 wird berechnet
         
            Mittelwert$ = StrD( (ValD(GetGadgetText(#String_0)) + ValD(GetGadgetText(#String_1))) / 2)
            SetGadgetText(#STRING_INPUT,Mittelwert$)

        EndSelect
     EndSelect
   Until iEvent = #PB_Event_CloseWindow

EndProcedure

Open_Window_0()
PS: Ergebnis schreibt man immernoch mit 1 s

Re: Ergebnis anzeigen?

Verfasst: 20.02.2010 19:16
von Kallewirsch
Hallo Mok,

wieder mal Danke für deine Hilfe! (Dachte ich mir schon das natürlich wieder sooooo einfach ist)

Dieses #PB_String_Numeric) was sagt mir das genau? und wo finde ich diese ganzen #PB......Dinger mit Erklärung?

Re: Ergebnis anzeigen?

Verfasst: 20.02.2010 19:23
von WPö
Schaust Du mal in die PB-Hilfe. Da gibt es auf der rechten Seite fast ganz unten die Erklärung der PB-Konstanten mit den PB-Befehlen, die sie verwenden.

Gruß - WPö

Re: Ergebnis anzeigen?

Verfasst: 20.02.2010 19:25
von Kaeru Gaman
diese #PB-Dinger heißen PB-interne Konstanten.
Alle #-Dinger sind Konstanten.

Eine Übersicht über die PB-Konstanten findest du in der Help. (in der Kapitelübersicht unten Rechts bei "Übersichten")
dort steht dabei, von welchem Befehl sie verwendet werden, genauere Beschreibungen findest du dann beim jeweiligen Befehl.

Re: Ergebnis anzeigen?

Verfasst: 20.02.2010 19:44
von Kallewirsch
DANKE!!!

endlich weis ich wo ich diese Liste Liste finde :D

Re: Ergebnis anzeigen?

Verfasst: 20.02.2010 23:45
von Kallewirsch
Hallo zusammen,

(ich schon wieder) :oops:

Wie bekomme ich einen Text z.B. Zahl 1 eingeben (der bei Eingabe der Zahl dann nicht verschwindet) in das Eingabefeld?
Hab es mal so gemacht damit man einen Text hat StringGadget(#String_5, 40, 30, 160, 20, "Zahl 1 eingeben", #PB_String_ReadOnly)

Danke an die Helfer!!!

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #String_0
  #String_1
  #String_2
  #String_3
  #STRING_4
  #String_5
  #STRING_INPUT

EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 248, 16, 730, 642, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

      ButtonGadget(#Button_0, 40, 540, 150, 50, "Berechnen")
      StringGadget(#String_5, 40, 30, 160, 20, "Zahl 1 eingeben", #PB_String_ReadOnly) 
      StringGadget(#String_0, 40, 50, 160, 60, "Zahl1", #PB_String_Numeric)
      StringGadget(#String_1, 40, 140, 160, 60, "Zahl2", #PB_String_Numeric)
      StringGadget(#String_2, 40, 230, 160, 60, "Zahl3", #PB_String_Numeric)
      StringGadget(#String_3, 40, 320, 160, 60, "Zahl4", #PB_String_Numeric)
      StringGadget(#String_4, 250, 300, 280, 20, "Mittelwert von Zahl 1 und 2", #PB_String_ReadOnly)
      StringGadget(#STRING_INPUT, 250, 320, 280, 100,"", #PB_String_Numeric)
     
    EndIf
      Repeat
    iEvent.i = WaitWindowEvent()
   
    Select iEvent
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Button_0

          ;   Nur Mittelwert von 1 und 2 wird berechnet
         
            Mittelwert$ = StrD( (ValD(GetGadgetText(#String_0)) + ValD(GetGadgetText(#String_1))) / 2)
            SetGadgetText(#STRING_INPUT,Mittelwert$)

        EndSelect
     EndSelect
   Until iEvent = #PB_Event_CloseWindow

EndProcedure

Open_Window_0()

Re: Ergebnis anzeigen?

Verfasst: 21.02.2010 09:36
von Pelagio
Hallo Kallewirsch,

für diesen Zweck gibt es das TextGadget, quasi ein Lable, das nur darstellt aber in dem nichts eingegeben werden kann (siehe Hilfe).
Ich hoffe es stört nicht das ich zur besseren Erkenntnis deinen Code etwas modifiziert habe.

Code: Alles auswählen

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #String_0
  #String_1
  #String_2
  #String_3
  #Ergebnis
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
EndEnumeration

Procedure.s Mittelwert(vValue.s)
   Protected n.a, pErgebnis.f, pLen.a = CountString(vValue, ";")+1

   For n=1 To pLen
      pErgebnis + Val(StringField(vValue, n, ";"))
   Next n
   ProcedureReturn StrD(pErgebnis/plen,2)
EndProcedure


Procedure Open_Window_0()
  Protected n.a, pValue.s
  
  If OpenWindow(#Window_0, 248, 16, 180, 400, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

      ButtonGadget(#Button_0, 040, 330, 100, 50, "Berechnen")
      TextGadget  (#Text_0  , 040, 030, 100, 20, "Zahl 1 eingeben:") 
      StringGadget(#String_0, 040, 050, 100, 20, #NULL$, #PB_String_Numeric)
      TextGadget  (#text_1  , 040, 080, 100, 20, "Zahl 2 eingeben:") 
      StringGadget(#String_1, 040, 100, 100, 20, #NULL$, #PB_String_Numeric)
      TextGadget  (#Text_2  , 040, 130, 100, 20, "Zahl 3 eingeben:") 
      StringGadget(#String_2, 040, 150, 100, 20, #NULL$, #PB_String_Numeric)
      TextGadget  (#Text_3  , 040, 180, 100, 20, "Zahl 4 eingeben:") 
      StringGadget(#String_3, 040, 200, 100, 20, #NULL$, #PB_String_Numeric)
      TextGadget  (#Text_4  , 040, 250, 100, 20, "Mittelwert")
      StringGadget(#Ergebnis, 040, 270, 100, 20, #NULL$, #PB_String_Numeric|#PB_String_ReadOnly)
     
   EndIf
   Repeat
      iEvent.i = WaitWindowEvent()
   
      Select iEvent
         Case #PB_Event_Gadget
            Select EventGadget()
               Case #Button_0
                  pValue= #NULL$
                  For n=#String_0 To #String_3
                     If Not(GetGadgetText(n)=#NULL$)
                        If pValue: pValue + ";": EndIf
                        pValue + GetGadgetText(n) 
                     EndIf
                  Next n
                  If pValue<>#NULL$: SetGadgetText(#Ergebnis, Mittelwert(pValue)): EndIf
            EndSelect
      EndSelect
   Until iEvent = #PB_Event_CloseWindow
EndProcedure

Open_Window_0()
:allright:

Re: Ergebnis anzeigen?

Verfasst: 21.02.2010 22:49
von Kallewirsch
Hallo zusammen,

ich mal wieder.......

Hi Pelagio,

das TextGadget hab ich schon vor deiner Antwort gefunden ( ich bin ein Held, :) ), aber deinen Code kann ich nicht anzeigen, vermutlich liegt es an der Demo. Trotzdem DANKE.

Nun aber eine weitere Frage:
Wie mache ich es, dass das Prg. durch 2 teilt wenn nur Zahl 1 und Zahl 2 eingegeben werden, oder durch z.B. 3 teilt wenn Zahl 1-3 eingegeben werden?

Danke schon mal!!!!

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #String_0
  #String_1
  #String_2
  #String_3
  #STRING_4
  #String_5
  #STRING_INPUT

EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 248, 16, 730, 642, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

      ButtonGadget(#Button_0, 40, 540, 150, 50, "Berechnen")
      StringGadget(#String_5, 40, 30, 160, 20, "Zahl 1 eingeben", #PB_String_ReadOnly)
      StringGadget(#String_0, 40, 50, 160, 60, "Zahl1", #PB_String_Numeric)
      StringGadget(#String_1, 40, 140, 160, 60, "Zahl2", #PB_String_Numeric)
      StringGadget(#String_2, 40, 230, 160, 60, "Zahl3", #PB_String_Numeric)
      StringGadget(#String_3, 40, 320, 160, 60, "Zahl4", #PB_String_Numeric)
      StringGadget(#String_4, 250, 300, 280, 20, "Mittelwert von Zahl 1 und 2", #PB_String_ReadOnly)
      StringGadget(#STRING_INPUT, 250, 320, 280, 100,"", #PB_String_Numeric)
     
    EndIf
      Repeat
    iEvent.i = WaitWindowEvent()
   
    Select iEvent
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Button_0

          ;   Nur Mittelwert von 1 und 2 wird berechnet
         
            Mittelwert$ = StrD( (ValD(GetGadgetText(#String_0)) + ValD(GetGadgetText(#String_1))) / 2)
            SetGadgetText(#STRING_INPUT,Mittelwert$)

        EndSelect
     EndSelect
   Until iEvent = #PB_Event_CloseWindow

EndProcedure

Open_Window_0()

Re: Ergebnis anzeigen?

Verfasst: 22.02.2010 15:45
von dysti
Hallo Kallewirsch,

wenn du uns mitgeteilt hättest, das du eine Demo verwendest, dann wäre von Pelagio die Kontante: "#NULL$" nicht benutzt worden.
Er hätte dann statt dessen ein "" verwendet.
Anhand der Fehlermeldung wäre man schon von selbst darauf gekommen.
Die Demo meckert hier nämlich "Kontante nicht gefunden"
Wenn du dir dann die Mühe gemacht hättest, den Code von Pelagio mal durchzuschauen, dann wäre dir aufgefallen, das er genau dein neues Problem gelöst hat.
Ok, wie dem auch sei.
Ich gehe also davon aus, das du noch nicht soviel Erfahrung in PB hast.
Deshalb habe ich dein Code in deinem Stil erweitert.
Habe noch ein paar Dinge hinzu gefügt, damit du siehst, wie die PB-Befehle verwendet werden.
Solltest du nicht durchsteigen, kommentiere ich dir das auch im Einzelnen.

.....und hier der Code:

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #String_0
  #String_1
  #String_2
  #String_3
  #STRING_4
  #TString_0
  #TString_1
  #TString_2
  #TString_3
  #TString_4
  #TString_5
  #STRING_INPUT

EndEnumeration

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

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


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 248, 16, 730, 642, "Kallewirsch Mittelwertrechner",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      SetWindowColor(#Window_0,$FBE6C5)
      TextGadget(#TString_0, 300, 50, 450, 250, "    Kallewirsch" + #CRLF$ + "Mittelwertrechner")
      SetGadgetColor(#TString_0, #PB_Gadget_BackColor,$FBE6C5)
      SetGadgetFont(#TString_0, FontID(0))
      ButtonGadget(#Button_0, 40, 440, 150, 50, "Berechnen")
      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_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))
     
    EndIf
      Repeat
    iEvent.i = WaitWindowEvent()
   
    Select iEvent
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Button_0

          ;   Nur Mittelwert von 1 und 2 wird berechnet
            eingabe1$=GetGadgetText(#String_0)
            eingabe2$=GetGadgetText(#String_1)
            eingabe3$=GetGadgetText(#String_2)
            eingabe4$=GetGadgetText(#String_3)
            If Len(eingabe1$)<1
            MessageRequester("Fehler","Es muß eine Eingabe im Feld 1 gemacht werden")
            Else
            If Len(eingabe2$)<1
            MessageRequester("Fehler","Zur Berechnung muß ein Wert in Feld 2 angegeben werden")
            Else
            Mittelwert = ValD(eingabe1$) + ValD(eingabe2$)
            Teiler=2
            If Len(eingabe3$)>=1
            Mittelwert = ValD(eingabe1$) + ValD(eingabe2$) + ValD(eingabe3$)
            Teiler=3
            EndIf
            If Len(eingabe3$)>=1
            Mittelwert = ValD(eingabe1$) + ValD(eingabe2$) + ValD(eingabe3$) + ValD(eingabe4$)
            Teiler=4
            EndIf
            EndIf
            SetGadgetText(#STRING_INPUT,StrD(Mittelwert/Teiler))
            EndIf
           Case #String_0
            SetGadgetColor(#String_0, #PB_Gadget_BackColor,$00FFFF)
            SetGadgetColor(#String_1, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_2, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_3, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor,$FFFFFF)
           Case #String_1
            SetGadgetColor(#String_0, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_1, #PB_Gadget_BackColor,$00FFFF)
            SetGadgetColor(#String_2, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_3, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor,$FFFFFF)
           Case #String_2
            SetGadgetColor(#String_0, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_1, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_2, #PB_Gadget_BackColor,$00FFFF)
            SetGadgetColor(#String_3, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor,$FFFFFF)
           Case #String_3
            SetGadgetColor(#String_0, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_1, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_2, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_3, #PB_Gadget_BackColor,$00FFFF)
           Case #STRING_INPUT
            SetGadgetColor(#String_0, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_1, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_2, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#String_3, #PB_Gadget_BackColor,$FFFFFF)
            SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor,$ABACFB)

        EndSelect
     EndSelect
   Until iEvent = #PB_Event_CloseWindow

EndProcedure

Open_Window_0()