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] |