Seite 3 von 4

Verfasst: 14.04.2008 09:10
von The_Dark_Zim-.-
/:-> nu macht man alles so wie alle es wollen und keiner hat ne lösung *dreck*

Verfasst: 14.04.2008 09:25
von Kiffi
The_Dark_Zim-.- hat geschrieben:/:-> nu macht man alles so wie alle es wollen und keiner hat ne lösung *dreck*
Schnuffi, dann musst Du auch explizit erwähnen, dass irgendwas noch nicht
so funktioniert, wie Du es Dir erhofft hast. Mit Deinen letzten zwei Postings
vermittelst Du uns den Eindruck, dass Du keine Probleme mehr hast.
(Kaeru Gaman hat ja auch noch einmal extra nachgefragt)

Also: Was funktioniert nicht?

Grüße ... Kiffi

Verfasst: 14.04.2008 11:12
von The_Dark_Zim-.-
SRY <)
Die Komma eingabe funktioniert noch nicht !
Achja und wenn man auf der tastertur + und so drückt geht das nicht !

Hoffe ihr könnt mir helfen ;)

Verfasst: 14.04.2008 12:00
von STARGÅTE
Kleiner Tip:

Wenn du die Konstanten vergabe der ZahlenButton besser wählst, kannst bei der Abfrage der gedrückten zahl und deren Auswirkungen 90% Code sparen:
#ButtonZahl_0 - #ButtonZahl_9 habe ich neu eingebaut, damit diese GadgetIDs hintereinander liegen.
Damit kannst du alle 10 Abfragen deiner Zahlen zu einer zusammenfassen, indem du die Gedrückte Zahl mit:
GadgetID-#ButtonZahl_0
bekommst.
habe dein Code unten hingeschrieben und auch alle überflüssigen SetGadgetFont() rausgenommen:

Code: Alles auswählen

Enumeration 
  #Window_0 
EndEnumeration 

Enumeration 
  #String_0 
  #Button_0 
  #Button_1 
  #Button_2 
  #Button_3 
  #Button_4 
  #Button_5 
  #Button_6 
  #Button_7 
  #Button_8 
  #Button_9 
  #Button_10 
  #Button_11 
  #Button_12 
  #Button_13 
  #Button_14 
  #Button_15 
  #Button_16 
  #Button_17 
  #ButtonZahl_0
  #ButtonZahl_1
  #ButtonZahl_2
  #ButtonZahl_3
  #ButtonZahl_4
  #ButtonZahl_5
  #ButtonZahl_6
  #ButtonZahl_7
  #ButtonZahl_8
  #ButtonZahl_9
EndEnumeration 

Global FontID1 
FontID1 = LoadFont(1, "Arial", 10, #PB_Font_Bold) 
Global FontID2 
FontID2 = LoadFont(2, "Arial", 14) 
Global FontID3 
FontID3 = LoadFont(3, "Arial", 22) 

InitKeyboard() And InitSprite() 

  If OpenWindow(#Window_0, 511, 245, 518, 548, "Rechner",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered ) 
   If OpenWindowedScreen(WindowID(0), 511, 245, 518, 548, 0, 0, 0) 
    If CreateGadgetList(WindowID(#Window_0)) 
      SetGadgetFont(-1, FontID2) 
      
      StringGadget(#String_0, 20, 40, 480, 30, "") 
      ButtonGadget(#Button_0, 20, 140, 60, 60, "CE") 
      ButtonGadget(#Button_1, 100, 140, 60, 60, "/") 
      ButtonGadget(#Button_2, 180, 140, 60, 60, "X") 
      ButtonGadget(#ButtonZahl_7, 20, 220, 60, 60, "7") 
      ButtonGadget(#ButtonZahl_8, 100, 220, 60, 60, "8") 
      ButtonGadget(#ButtonZahl_9, 180, 220, 60, 60, "9") 
      ButtonGadget(#ButtonZahl_4, 20, 300, 60, 60, "4") 
      ButtonGadget(#ButtonZahl_5, 100, 300, 60, 60, "5") 
      ButtonGadget(#ButtonZahl_6, 180, 300, 60, 60, "6") 
      ButtonGadget(#Button_9, 260, 140, 60, 60, "-") 
      ButtonGadget(#Button_10, 260, 220, 60, 140, "+") 
      ButtonGadget(#Button_11, 260, 380, 60, 140, "OK") 
      ButtonGadget(#ButtonZahl_3, 180, 380, 60, 60, "3") 
      ButtonGadget(#ButtonZahl_2, 100, 380, 60, 60, "2") 
      ButtonGadget(#ButtonZahl_1, 20, 380, 60, 60, "1") 
      ButtonGadget(#ButtonZahl_0, 20, 460, 140, 60, "0") 
      ButtonGadget(#Button_16, 180, 460, 60, 60, ",") 
      ButtonGadget(#Button_17, 390, 460, 110, 60, "EXIT") 
    EndIf 
   EndIf 
  EndIf 

Repeat 
  
  Event = WaitWindowEvent() 
  
  WindowID = EventWindow() 
  
  GadgetID = EventGadget() 
  
  EventType = EventType() 
    
ExamineKeyboard() 

If KeyboardPushed (1) 
  End 
EndIf  

  If Event = #PB_Event_Gadget 
    If GadgetID = #String_0 

ElseIf GadgetID = #Button_0 ;CE 

      StringGadget(#String_0, 20, 40, 480, 30, "") 
 
;_________________________________________________________________________________________________________________________ 

ElseIf GadgetID => #ButtonZahl_0 And GadgetID <= #ButtonZahl_9  ;0-9 
    
     If v=1 
      
      StringGadget(#String_0, 20, 40, 480, 30, "") 
      
      v=0 
    
     EndIf    
    
    x.f=ValF(GetGadgetText(#string_0)) 
    
      If x.f =0 
    
     x.f=GadgetID-#ButtonZahl_0 
    
     StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)) 
    
    Else
     
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+Str(GadgetID-#ButtonZahl_0)) 
    EndIf 
  
;_________________________________________________________________________________________________________________________ 

ElseIf GadgetID = #Button_16 ;, 

   x.f=ValF(GetGadgetText(#string_0)) 
    
     StringGadget(#String_0, 20, 40, 480, 30, Str(x)+".") 
    
ElseIf GadgetID = #Button_17 

    End 
    
ElseIf GadgetID = #Button_1 ;/ 

v=0 

     a.f=1 
     b.f=0 
     c.f=0 
     d.f=0 
      
     SetGadgetText(0, ReplaceString(GetGadgetText(0),",",".")) 
     f.f=ValF(GetGadgetText(#string_0)) 
    
     StringGadget(#String_0, 20, 40, 480, 30, "") 
 
ElseIf GadgetID = #Button_2 ;x 

v=0 

     a.f=0 
     b.f=1 
     c.f=0 
     d.f=0 
    
     SetGadgetText(0, ReplaceString(GetGadgetText(0),",",".")) 
     f.f=ValF(GetGadgetText(#string_0)) 
    
     StringGadget(#String_0, 20, 40, 480, 30, "") 
      
ElseIf GadgetID = #Button_9 ;- 

v=0 
    
     a.f=0 
     b.f=0 
     c.f=1 
     d.f=0 
    
     SetGadgetText(0, ReplaceString(GetGadgetText(0),",",".")) 
     f.f=ValF(GetGadgetText(#string_0)) 
    
     StringGadget(#String_0, 20, 40, 480, 30, "") 
    
ElseIf GadgetID = #Button_10 ;+ 

v=0 
    
     a.f=0 
     b.f=0 
     c.f=0 
     d.f=1 
    
     SetGadgetText(0, ReplaceString(GetGadgetText(0),",",".")) 
     f.f=ValF(GetGadgetText(#string_0)) 
    
     StringGadget(#String_0, 20, 40, 480, 30, "") 
    
ElseIf GadgetID = #Button_11 ;ok 
    
    SetGadgetText(0, ReplaceString(GetGadgetText(0),",",".")) 
    g.f=ValF(GetGadgetText(#string_0)) 
  
 v=1  

;_________________________________________________________________________________________________________________________ 

   If c=1 
    
    e.f=f.f-g.f 
    StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2)) 
    
   EndIf 
    
   If a=1 
    
    e.f=f.f/g.f 
    StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2)) 
    
   EndIf 
    
   If b=1 
    
    e.f=f.f*g.f 
    StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2)) 
    
   EndIf 
    
   If d=1 
    
    e.f=f.f+g.f 
    StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2)) 
    
   EndIf 
;_________________________________________________________________________________________________________________________ 
EndIf 

If KeyboardPushed (#PB_Key_Decimal) 
 a.f=1 
 b.f=0 
 c.f=0 
 d.f=0 

  SetGadgetText(0, ReplaceString(GetGadgetText(0),",",".")) 
  f.f=ValF(GetGadgetText(#string_0)) 
    
   StringGadget(#String_0, 20, 40, 480, 30, "") 
    
EndIf  

If KeyboardPushed (#PB_Key_Divide) 
 a.f=0 
 b.f=1 
 c.f=0 
 d.f=0 
  
  SetGadgetText(0, ReplaceString(GetGadgetText(0),",",".")) 
  f.f=ValF(GetGadgetText(#string_0)) 
    
   StringGadget(#String_0, 20, 40, 480, 30, "") 
    
EndIf 

If KeyboardPushed (#PB_Key_Subtract) 

 a.f=0 
 b.f=0 
 c.f=1 
 d.f=0 
  
  SetGadgetText(0, ReplaceString(GetGadgetText(0),",",".")) 
  f.f=ValF(GetGadgetText(#string_0)) 
    
   StringGadget(#String_0, 20, 40, 480, 30, "") 
 
EndIf 

If KeyboardPushed (#PB_Key_Add) 
 a.f=0 
 b.f=0 
 c.f=0 
 d.f=1 
  
  SetGadgetText(0, ReplaceString(GetGadgetText(0),",",".")) 
  f.f=ValF(GetGadgetText(#string_0)) 
    
   StringGadget(#String_0, 20, 40, 480, 30, "") 
     
 EndIf 
EndIf 

Until Event = #PB_Event_CloseWindow 
End 

Verfasst: 14.04.2008 12:16
von The_Dark_Zim-.-
:o verdammt das ist ja voll klein geworden. :allright:
hm da muss ich ja noch viel lernen XD

Aber leider noch keine lösung für das Kommaproblem :'(

Trotzdem ein Dickes Dankeschön :mrgreen:

Verfasst: 14.04.2008 12:23
von STARGÅTE
ach so: Ersetzte dal diese Zeilen :

Code: Alles auswählen

;_________________________________________________________________________________________________________________________ 

ElseIf GadgetID => #ButtonZahl_0 And GadgetID <= #ButtonZahl_9  ;0-9 
    
     If v=1 
      
      StringGadget(#String_0, 20, 40, 480, 30, "") 
      
      v=0 
    
     EndIf    
    
    
   StringGadget(#String_0, 20, 40, 480, 30, GetGadgetText(#string_0)+Str(GadgetID-#ButtonZahl_0)) 
  
;_________________________________________________________________________________________________________________________
Dein Problem war folgendes:
ValF() hat bei einem String: "123,"
das Komma hinten weggemacht und 123 drauß gemacht:
Das ganze umgehst du indem du (solange nicht gerechnet wird)
bei der eingabe der Zahl noch nicht in eine echte Zahl umwandelst sondern die ganze Zeit als String läßt,
damit sparst du wiederum Zeilen ^^

Verfasst: 14.04.2008 12:47
von The_Dark_Zim-.-
:shock:
Nun bin ich ein glücklicher ZIM XD
THX da wäre ich nie drauf gekommen.
:allright:
Du hast es einfach drauf ;)

Kannst du mir evtl. auch nen Tipp geben wie ich das machen kann das er die + Tasten usw. auch annimmt.
Im mom verschwindet dann immer die eingabe und setzt sie auf 0.

Verfasst: 14.04.2008 13:02
von Kiffi
The_Dark_Zim-.- hat geschrieben:THX da wäre ich nie drauf gekommen.
[räusper] wenn Du gewisse Hinweise meinerseits aufmerksam gelesen hättest...
Kiffi hat geschrieben:Benenne die Konstanten doch einfach #Button_Zahl_0 bis #Button_Zahl_9
für die Zahlenbuttons und dann #Button_Multiplizieren, Button_Dividieren,
etc. etc.
... hätten wir gemeinsam Schritt für Schritt in diese Richtung gehen können.

Grüße ... Kiffi

Verfasst: 14.04.2008 13:05
von STARGÅTE
da musst du aufpassen:

Ich würde die vorschlagen das du das StringGadget (oben) #PB_String_ReadOnly machen und dann mit
AddKeyboardShortcut() dir jede zahl und die Operatoren definieren.

Dann kannst du mit
If Event = #PB_Event_Menu
und MenuID() herausfinden welche Taste gedrückt wurde (wie bei den Buttons)

Der Grund dafür ist, wenn du diese Eingaben im Edit Feld oben machen würdest dann schreibt ja ja auch immer ein + oder - mit hinein.

Am cleversten wäre es wieder wenn du die KeyboardShortcut gleich mit den Button verbindest und nicht alles separat abfragst.

Pobiert halt mal ^^, sonst muss ich wieder ran :allright:

EDIT : ExamineKeyboard() usw. sind nicht für Fenster gedacht

Verfasst: 14.04.2008 17:17
von The_Dark_Zim-.-
Ich frag zwar nur ungerne, aber könnte ich erfahren wie ich das einbauen soll ^^
Ich bekomms noch net hin ich versuch es aber weiter.

EDIT:
Ich hab mal versucht einfach das hier ein zu fügen aber das geht net :cry:

Code: Alles auswählen

...
 
  GadgetID = EventGadget()
 
  EventType = EventType()
  
  MenuID = EventMenu()
   
ExamineKeyboard()

If KeyboardPushed (1)
  End
EndIf 


        If Event = #PB_Event_Menu
           If MenuID = #PB_Shortcut_Return
             End
           EndIf

  If Event = #PB_Event_Gadget
    If GadgetID = #String_0

ElseIf GadgetID = #Button_0 ;CE

      StringGadget(#String_0, 20, 40, 480, 30, "", #PB_String_ReadOnly)
...