新しく発言する EXIT インデックスへ
コマンドボタンや選択ボタンはつくれますか...

  コマンドボタンや選択ボタンはつくれますか? もりの 2004/02/19 20:36:02 
  参考ですが、、、 山中和義 2004/02/20 11:02:36 
   ├その1 山中和義 2004/02/20 11:04:38 
   ├その2 山中和義 2004/02/20 11:05:09 
   └動きましたが もりの 2004/02/20 19:10:43 
    └十進Basicは機能の面で、エクセルやロータス...2004/02/21 10:34:13 
     └それはそうですよね もりの 2004/02/21 10:44:52 

  コマンドボタンや選択ボタンはつくれますか? もりの 2004/02/19 20:36:02  ツリーへ

コマンドボタンや選択ボタンはつくれますか? 返事を書く
もりの 2004/02/19 20:36:02
VBAのマクロのように
処理ボタンなどはつくれるのでしょうか?
もしつくれるようでしたら
簡単な四則計算を
ボタンをクリックして
処理できるプログラムを
教えて下さい。
できるといいいですね。
できますか?

  参考ですが、、、 山中和義 2004/02/20 11:02:36  ツリーへ

Re: コマンドボタンや選択ボタンはつくれますか? 返事を書く
山中和義 2004/02/20 11:02:36
参考ですが、、、
小数点キーはサポートしていません。従って、整数電卓でしょうか!

レイアウト、機能拡張などは、カスタマイズしてください。

   ├その1 山中和義 2004/02/20 11:04:38  ツリーへ

Re: 参考ですが、、、 返事を書く
山中和義 2004/02/20 11:04:38
その1
!電卓プログラム ver 0.1 十進BASIC by K. Yamanaka
SET WINDOW 0,320,0,240 !左下が原点。横がX、縦Y

!ボタンの定義
dim x1(30),y1(30),x2(30),y2(30),s$(30),v(30)

data 100,100, 120,120,"0",0 !'ボタン1
data 120,100, 140,120,".",-10 !'ボタン2
data 100,120, 120,140,"1",1 !'ボタン3
data 120,120, 140,140,"2",2 !'ボタン4
data 140,120, 160,140,"3",3 !'ボタン5
data 100,140, 120,160,"4",4 !'ボタン6
data 120,140, 140,160,"5",5 !'ボタン7
data 140,140, 160,160,"6",6 !'ボタン8
data 100,160, 120,180,"7",7 !'ボタン9
data 120,160, 140,180,"8",8 !'ボタン10
data 140,160, 160,180,"9",9 !'ボタン11
data 160,100, 180,120,"+",-1 !'ボタン12
data 160,120, 180,140,"−",-2 !'ボタン13
data 160,140, 180,160,"×",-3 !'ボタン14
data 160,160, 180,180,"÷",-4 !'ボタン15
data 180,100, 200,140,"=",-5 !'ボタン16
data 180,140, 200,160,"CE",-12 !'ボタン18
data 180,160, 200,180,"C",-11 !'ボタン17

LET i = 1
LET ok = -1
do while ok<0 !定義されたボタンを表示する
READ IF MISSING THEN EXIT DO: x1(i),y1(i),x2(i),y2(i),s$(i),v(i)
LET i = i + 1
loop
LET NUM_BOX = i-1 !ボタンの数を設定する

for i=1 to NUM_BOX !キーボタンを表示する
DRAW BOTTUM(x1(i),y1(i),x2(i),y2(i),1)
next i


LET Accum = 0 !計算結果
LET PendingOp$ = "" !処理待ちの演算キー
LET ReadOut_Value = 0 !ディスプレイに表示される計算結果
LET FlagNewNum = 0 !新しい値を表示してよいかのフラグ
LET cl = 0 !入力桁数
LET f$ = "###,###,###.###" !'書式

DRAW BOX(100,200,200,220,1) !ディスプレイを表示する
call DisplayDataFormat(110+5,200+5,4,str$(ReadOut_Value),f$) !書式付き

LET ok = -1
DO WHILE ok<0
MOUSE POLL MX,MY,MLB,MRB
! print MX;MY,MLB;MRB
if MLB=1 then !マウスの左ボタンが押されたら
LET bt = CheckCollision(MX,MY) !数、演算、編集キーを得る
! print bt !debug debug debug

select case bt
case is >=0 !0〜9キー
call NumPressed(bt)
case -1
call Operation("+")
case -2
call Operation("-")
case -3
call Operation("*")
case -4
call Operation("/")
case -5
call Operation("=")
case -10 !.キー
!未サポート
case -11 !Cキー(またはACキー)
LET Accum = 0
LET PendingOp$ = ""
LET ReadOut_Value = 0
LET FlagNewNum = -1
LET cl = 0
case -12 !CEキー(Cキー)
LET ReadOut_Value = 0
LET FlagNewNum = -1
LET cl = 0

case -99 !キーは押されていない
end select

print ReadOut_Value;Accum;PendingOp$ !debug debug debug

DRAW BOX(100,200,200,220,0) !ディスプレイを表示する
call DisplayDataFormat(110+5,200+5,4,str$(ReadOut_Value),f$) !書式付き
end if

wait delay 0.1 !ちょっとだけ待つ

loop

STOP

   ├その2 山中和義 2004/02/20 11:05:09  ツリーへ

Re: 参考ですが、、、 返事を書く
山中和義 2004/02/20 11:05:09
その2
!数値キーの処理
Sub NumPressed(Num)
If FlagNewNum=-1 Then !C、CE、演算キーの後
LET ReadOut_Value = Num
LET FlagNewNum = 0
LET cl = 1
Else
If Readout_Value = 0 Then !1桁目なら
LET Readout_Value = Num
LET cl = 1
Else !2桁目以降なら
if cl<12 then !12桁以内なら
LET ReadOut_Value = ReadOut_Value * 10 + Num !繰り上げていく
LET cl = cl + 1
end If
End If
End If
End Sub

!演算キーの処理
Sub Operation(Op$)
LET ReadOut = ReadOut_Value !数値を得る ※加える数値など
If FlagNewNum=-1 and PendingOp$<>"=" Then !最初に押された演算キーを有効とする
!NOP
Else
LET FlagNewNum = -1
Select Case PendingOp$ !'各演算を行う
Case "+"
LET Accum = Accum + ReadOut
Case "-"
LET Accum = Accum - ReadOut
Case "/"
LET Accum = Accum / ReadOut
Case "*"
LET Accum = Accum * ReadOut
Case Else
LET Accum = ReadOut
End Select
LET ReadOut_Value = Accum !表示する数値とする
LET PendingOp$ = Op$ !今回の演算を記録しておく
End If
End Sub


!当り判定(枠内にいるか?)- ボタンが押されたか確認する
FUNCTION CheckCollision(x,y)
for i=1 to NUM_BOX
LET CheckCollision = -99 !まずは外!
if x>=x1(i) and x<=x2(i) then
if y>=y1(i) and y<=y2(i) then
LET CheckCollision = v(i) !枠内だ!
exit for
end if
end if
next i
END FUNCTION

!ボタンを描画する
PICTURE BOTTUM(x1,y1, x2,y2, c)
DRAW BOX(x1,y1, x2,y2, c) !枠内を表示する
call DisplayTEXT(x1+5,y1+7,4,s$(i)) !ボタン名を表示する

SET LINE COLOR 6 !枠を表示する
PLOT LINES:x1,y1; x2,y1 !反時計まわりに
PLOT LINES:x2,y1; x2,y2
PLOT LINES:x2,y2; x1,y2
PLOT LINES:x1,y2; x1,y1
END PICTURE

!枠内を描画する(塗潰し)
PICTURE BOX(x1,y1, x2,y2, c)
SET LINE COLOR c !ボタン枠を表示する
PLOT AREA: x1,y1; x2,y1; x2,y2; x1,y2
END PICTURE

!指定位置に書式付きで文字を表示する
SUB DisplayDataFormat(x,y,c,s$,f$)
SET TEXT COLOR c
PLOT TEXT, AT x,y, USING f$: val(s$)
END SUB

!指定の位置に文字を表示する
SUB DisplayTEXT(x,y,c,s$)
SET TEXT COLOR c
PLOT TEXT, AT x,y: s$
END SUB

END

   └動きましたが もりの 2004/02/20 19:10:43  ツリーへ

Re: 参考ですが、、、 返事を書く
もりの 2004/02/20 19:10:43
動きましたが
私が考えている
こととは違いますね
やっぱり私がアイデアを
出していかないと
いいものは作れませんね

エクセルやロータスの
ようなワークシートの中に
処理を実行するための
立体的なボタンがあれば
いいなということです
ただの電卓なら
ウィンドウズについて
いるもので
十分です
プログラムをつくる能力が
あるということはわかりました

またよろしくお願いします

あと著作権は書かないでくれますか

私が発表していく都合もありますし

情報コラボレーションの実践として
私はやっているのです

その点ご理解しただけますでしょうか
ご理解いただけないのでしたら
今後一切作ってくださらないで
結構です
昨年「情報とネットワーク」の理論編を書き
今年実践編を書くためにいろいろお願い
しているのです
情報コラボレーションを進めることが
こんなにいいんですよ

という実験なんですよ
でなければn88でもcでも
linuxでもなんでも
いんですよ

ここにこういう掲示板があるのを
見つけたのでここの掲示板と情報
コラボレーションを結びつけて
実践して成果(アウトカム)を
出そうと思っているわけです
この発言を読んでも
協力するよ」という気持ちが
ありましたら宜しくお願いします
青木さんのように僕には
それはむかないよ」というなら
おひきとりくださいね

共感してとことんいいものを
つくりましょうよ
という方だけ歓迎します


    └十進Basicは機能の面で、エクセルやロータス...2004/02/21 10:34:13  ツリーへ

Re: 動きましたが 返事を書く
2004/02/21 10:34:13
十進Basicは機能の面で、エクセルやロータスに到底及びません。
ここで出来るのは、その一部の機能を真似て再現することだけですし、処理速度も100倍違います。

エクセルのマクロを使えば遥かに優れたものが出来ます。

     └それはそうですよね もりの 2004/02/21 10:44:52  ツリーへ

Re: 十進Basicは機能の面で、エクセルやロータス... 返事を書く
もりの 2004/02/21 10:44:52
それはそうですよね
でも十進でどれくらいできるのか?
が知りたいわけなんですよ


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。