
Rechner
- The_Dark_Zim-.-
- Beiträge: 372
- Registriert: 18.03.2008 16:53
Schnuffi, dann musst Du auch explizit erwähnen, dass irgendwas noch nichtThe_Dark_Zim-.- hat geschrieben:nu macht man alles so wie alle es wollen und keiner hat ne lösung *dreck*
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
a²+b²=mc²
- The_Dark_Zim-.-
- Beiträge: 372
- Registriert: 18.03.2008 16:53
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:
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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- The_Dark_Zim-.-
- Beiträge: 372
- Registriert: 18.03.2008 16:53
ach so: Ersetzte dal diese Zeilen :
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 ^^
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))
;_________________________________________________________________________________________________________________________
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 ^^
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- The_Dark_Zim-.-
- Beiträge: 372
- Registriert: 18.03.2008 16:53

Nun bin ich ein glücklicher ZIM XD
THX da wäre ich nie drauf gekommen.

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.
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
[räusper] wenn Du gewisse Hinweise meinerseits aufmerksam gelesen hättest...The_Dark_Zim-.- hat geschrieben:THX da wäre ich nie drauf gekommen.
... hätten wir gemeinsam Schritt für Schritt in diese Richtung gehen können.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.
Grüße ... Kiffi
a²+b²=mc²
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
EDIT : ExamineKeyboard() usw. sind nicht für Fenster gedacht
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

EDIT : ExamineKeyboard() usw. sind nicht für Fenster gedacht
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- The_Dark_Zim-.-
- Beiträge: 372
- Registriert: 18.03.2008 16:53
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
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

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)
...
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64