Taschenrechner V1.73 von / BBPro
hi,

hier ein kleiner taschenrechner in blitzplus.
vielleicht interessierts ja jemanden ... ;-)

[code:1:fd11886faa]
hWnd% = CreateWindow ("FastCalc 1.73",(ClientWidth (Desktop ()) - 150),0,150,234,Desktop (),17)

Global Button_Num [9]
Global Button_Func [9]
Global Button_NewFunc [17]

Gosub CreateNumArea
Gosub CreateButtons
Gosub CreateNewButtons

Op% = 0
ShowErgMode% = 2
TempNum$ = ""
TempErg# = 0
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

Repeat

ID = WaitEvent (1)

Gosub CheckEnd
Gosub CheckNums

Forever

WaitKey
End

;---------------------------------- SUBS

.CheckNums

KEY = GetKey ()
WhereFrom% = 0

If ID = $401 Then

WhereFrom% = EventSource ()

If WhereFrom% = Button_Func [0] Or WhereFrom% = Button_Func [2] Or WhereFrom% = Button_Func [3] Or WhereFrom% = Button_Func [4] Or WhereFrom% = Button_Func [5] Then
If Op% = 0 Then
Op% = - 1
SetGadgetText (OpArea,"")
TempErg# = Float# (TempNum$)
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If
End If

End If

If KeyHit (82) Then WhereFrom% = Button_Num [0]
If KeyHit (79) Then WhereFrom% = Button_Num [1]
If KeyHit (80) Then WhereFrom% = Button_Num [2]
If KeyHit (81) Then WhereFrom% = Button_Num [3]
If KeyHit (75) Then WhereFrom% = Button_Num [4]
If KeyHit (76) Then WhereFrom% = Button_Num [5]
If KeyHit (77) Then WhereFrom% = Button_Num [6]
If KeyHit (71) Then WhereFrom% = Button_Num [7]
If KeyHit (72) Then WhereFrom% = Button_Num [8]
If KeyHit (73) Then WhereFrom% = Button_Num [9]

If KeyHit (78) Then WhereFrom% = Button_Func [2]
If KeyHit (74) Then WhereFrom% = Button_Func [3]
If KeyHit (55) Then WhereFrom% = Button_Func [4]
If KeyHit (181) Then WhereFrom% = Button_Func [5]

If KeyHit (1) Then WhereFrom% = Button_Func [6]
If KeyHit (14) Then WhereFrom% = Button_Func [1]
If KeyHit (53) Then WhereFrom% = Button_Func [8]
If KeyHit (83) Then WhereFrom% = Button_Func [7]
If KeyHit (156) Then WhereFrom% = Button_Func [0]

Select WhereFrom%

Case Button_Num [0]
TempNum$ = TempNum$ + 0
SetGadgetText (NumArea,TempNum$)
Case Button_Num [1]
TempNum$ = TempNum$ + 1
SetGadgetText (NumArea,TempNum$)
Case Button_Num [2]
TempNum$ = TempNum$ + 2
SetGadgetText (NumArea,TempNum$)
Case Button_Num [3]
TempNum$ = TempNum$ + 3
SetGadgetText (NumArea,TempNum$)
Case Button_Num [4]
TempNum$ = TempNum$ + 4
SetGadgetText (NumArea,TempNum$)
Case Button_Num [5]
TempNum$ = TempNum$ + 5
SetGadgetText (NumArea,TempNum$)
Case Button_Num [6]
TempNum$ = TempNum$ + 6
SetGadgetText (NumArea,TempNum$)
Case Button_Num [7]
TempNum$ = TempNum$ + 7
SetGadgetText (NumArea,TempNum$)
Case Button_Num [8]
TempNum$ = TempNum$ + 8
SetGadgetText (NumArea,TempNum$)
Case Button_Num [9]
TempNum$ = TempNum$ + 9
SetGadgetText (NumArea,TempNum$)

Case Button_Func [0]
If Op% = 1 Then
TempErg# = TempErg# + Float# (TempNum$)
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If
If Op% = 2 Then
TempErg# = TempErg# - Float# (TempNum$)
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If
If Op% = 3 Then
TempErg# = TempErg# * Float# (TempNum$)
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If
If Op% = 4 Then
If Float# (TempNum$) = 0 Then Notify "You tried to divide by zero !": Return
TempErg# = TempErg# / Float# (TempNum$)
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If
If Op% = 5 Then
TempErg# = TempErg# ^ Float# (TempNum$)
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If
If Op% = 6 Then
If Float# (TempNum$) = 0 Then Notify "You tried to divide by zero !": Return
TempErg# = TempErg# Mod Float# (TempNum$)
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If
If Op% = 7 Then
TempErg# = TempErg# Or Float# (TempNum$)
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If
If Op% = 8 Then
TempErg# = TempErg# And Float# (TempNum$)
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If
If Op% = 9 Then
TempErg# = TempErg# Xor Float# (TempNum$)
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If
Op% = - 1
SetGadgetText (OpArea,"")

Case Button_Func [1]
If Len (TempNum$) > 0 Then
TempNum$ = Left$ (TempNum$,Len (TempNum$) - 1)
SetGadgetText (NumArea,TempNum$)
End If

Case Button_Func [2]
Op% = 1
SetGadgetText (OpArea,"+")
Case Button_Func [3]
Op% = 2
SetGadgetText (OpArea,"-")
Case Button_Func [4]
Op% = 3
SetGadgetText (OpArea,"*")
Case Button_Func [5]
Op% = 4
SetGadgetText (OpArea,"/")

Case Button_Func [6]
Op% = 0
SetGadgetText (OpArea,"")
TempNum$ = ""
SetGadgetText (NumArea,TempNum$)
TempErg# = 0
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

Case Button_Func [7]
If Instr (TempNum$,".") = 0 Then
TempNum$ = TempNum$ + "."
End If

Case Button_Func [8]
If TempNum$ <> "" Then
TempNum$ = (Float# (TempNum$) * - 1)
SetGadgetText (NumArea,TempNum$)
End If

Case Button_Func [9]
If Mode% = 0 Then
Mode% = 1
SetGadgetText (Button_Func [9],"Normal")
SetGadgetShape (hWnd%,GadgetX (hWnd%),GadgetY (hWnd%),150,460)
Else
Mode% = 0
SetGadgetText (Button_Func [9],"Erweitert")
SetGadgetShape (hWnd%,GadgetX (hWnd%),GadgetY (hWnd%),150,234)
End If

Case Button_NewFunc [0]
TempErg# = Sqr (TempErg#)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

Case Button_NewFunc [1]
If TempErg# <> 0 Then
TempErg# = 1 / TempErg#
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))
End If

Case Button_NewFunc [2]
TempErg# = TempErg# ^ 2
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

Case Button_NewFunc [3]
Op% = 5
SetGadgetText (OpArea,"^")

Case Button_NewFunc [4]
TempNum$ = "3.1415927"
SetGadgetText (NumArea,TempNum$)

Case Button_NewFunc [5]
TempErg# = Sin# (TempErg#)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

Case Button_NewFunc [6]
TempErg# = Cos# (TempErg#)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

Case Button_NewFunc [7]
TempErg# = Tan# (TempErg#)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

Case Button_NewFunc [8]
TempErg# = Int (TempErg#)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

Case Button_NewFunc [9]
SetGadgetText (ErgArea,FilterL$ (Bin$ (TempErg#),"0"))

Case Button_NewFunc [10]
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

Case Button_NewFunc [11]
ShowErgMode% = 3
SetGadgetText (ErgArea,FilterL$ (Hex$ (TempErg#),"0"))

Case Button_NewFunc [12]
Op% = 6
SetGadgetText (OpArea,"")

Case Button_NewFunc [13]
Op% = 7
SetGadgetText (OpArea,"?")

Case Button_NewFunc [14]
Op% = 8
SetGadgetText (OpArea,"&")

Case Button_NewFunc [15]
Op% = 9
SetGadgetText (OpArea,"!!")

Case Button_NewFunc [16]
TempErg# = Exp# (TempErg#)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

Case Button_NewFunc [17]
TempErg# = Log# (TempErg#)
SetGadgetText (ErgArea,FilterR$ (FilterR$ (TempErg#,"0"),"."))

End Select
Return

.CheckEnd
If ID = $803 Then End
Return

.CreateNumArea
OpArea = CreateTextField (6,24,12,17,hWnd%,65536)
DisableGadget OpArea
NumArea = CreateTextField (20,24,118,17,hWnd%,65536)
DisableGadget NumArea
ErgArea = CreateTextField (6,4,109,17,hWnd%,65536)
DisableGadget ErgArea
Return

.CreateButtons
Restore DataField
For Temp% = 1 To 9
Read PosX%
Read PosY%
Button_Num [Temp%] = CreateButton (Temp%,PosX%,PosY%,24,24,hWnd%,65536)
Next

Read PosX%
Read PosY%
Button_Num [0] = CreateButton (0,PosX%,PosY%,24,24,hWnd%,65536)

Read PosX%
Read PosY%
Button_Func [0] = CreateButton ("=",PosX%,PosY%,24,24,hWnd%,65536)

Read PosX%
Read PosY%
Button_Func [1] = CreateButton ("<---",PosX%,PosY%,24,24,hWnd%,65536)

For Temp% = 0 To 3
Read Title$
Button_Func [Temp% + 2] = CreateButton (Title$,114,((Temp% * 34) + 46),24,24,hWnd%,65536)
Next

Read PosX%
Read PosY%
Button_Func [6] = CreateButton ("C",PosX%,PosY%,17,17,hWnd%,65536)

Read PosX%
Read PosY%
Button_Func [7] = CreateButton (",",PosX%,PosY%,24,24,hWnd%,65536)

Read PosX%
Read PosY%
Button_Func [8] = CreateButton ("+/-",PosX%,PosY%,24,24,hWnd%,65536)

Read PosX%
Read PosY%
Button_Func [9] = CreateButton ("Erweitert",PosX%,PosY%,60,24,hWnd%,65536)
Return

.CreateNewButtons
Restore NewDataField

For Temp% = 0 To 17
Read Title$
Read PosX%
Read PosY%
Button_NewFunc [Temp%] = CreateButton (Title$,PosX%,PosY%,24,24,hWnd%,65536)
Next

Label = CreateLabel (" (c) 2003 by BBPro",6,408,132,18,hWnd%,65539)

Return

;---------------------------------- FUNCTIONS


Function FilterL$ (Var$,Zeichen$)
L = 0
U = 0
Temp1 = Len (Var$)
For T = 1 To Temp1
S$ = Mid$ (Var$,T,1)
If S$ = Zeichen$ And U = 0 Then L = L + 1
If S$ <> Zeichen$ Then U = 1
Next
Dif = Temp1 - L
Ergebnis$ = Right$ (Var$,Dif)
Return Ergebnis$
End Function

Function FilterR$ (Var$,Zeichen$)
L = 0
U = 0
Temp1 = Len (Var$)
For T = Temp1 To 1 Step -1
S$ = Mid$ (Var$,T,1)
If S$ = Zeichen$ And U = 0 Then L = L + 1
If S$ <> Zeichen$ Then U = 1
Next
Dif = Temp1 - L
Ergebnis$ = Left$ (Var$,Dif)
Return Ergebnis$
End Function

;---------------------------------- DATAFIELD

.DataField
Data 6,46,42,46,78,46
Data 6,80,42,80,78,80
Data 6,114,42,114,78,114
Data 42,148

Data 114,182
Data 6,182

Data "+"
Data "-"
Data "*"
Data "/"

Data 120,4

Data 78,148
Data 6,148

Data 42,182

.NewDataField
Data "sqr",6,228
Data "1/x",42,228
Data "x^2",78,228
Data "x^y",114,228

Data "Pi",6,264
Data "Sin",42,264
Data "Cos",78,264
Data "Tan",114,264

Data "Int",6,300
Data "Bin",42,300
Data "Dec",78,300
Data "Hex",114,300

Data "Mod",6,336
Data "Or",42,336
Data "And",78,336
Data "Xor",114,336

Data "Exp",6,372
Data "Log",42,372
[/code:1:fd11886faa]



Suche:
(unterstützt mySQL Wildcards ala %)
Titel:
Text:
Autor: