忍者ブログ
暇人おやじの暇なつぶやき
[7] [8] [9] [10] [11] [12] [13] [14] [15] [16]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

button命令でボタンを表示することかできた

ではこのボタンを、大きいボタンや小さいボタンにしたい
そうサイズを変更したいのだ

これには特別な命令が用意されている
「 objsize 

この命令はオブジェクトサイズという、オブジェクトのサイズを変更するもの

ボタンじゃなくてオブジェクト?はて、なんのことだろうか

まずは次のプログラムを実行してみよう

button "規定値",*shori1
mes "aaa"
objsize 100,24,10
button "100*24",*shori1
objsize 128,48,10
mes "aaa"
button "128*48",*shori1
*shori1


メッセージ表示とボタンの表示を行うプログラムだが
objsize命令が次の行の命令に作用しているようだが、最後のボタンでは
2行前の命令に対して作用している

objsize 128,48,10
mes "aaa"
button "128*48",*shori1


mesについては作用していない事がわかる
これでなんとなくオブジェクトがわかっただろうか

まーこれじゃわかるわけ無いか>_<
PR
そろそろ春の訪れを感じるように鼻がむずむずしてきませんか?

そうです、花粉の季節です
東北方面ではまだまだ雪が舞い散っているようですが
関東は暖かくなってきました

今年も残り9ヶ月
なかなか進まないプログラムにも日の光があたるように
コードという栄養剤を蒔きましょう

goto 行け
gosub 行って戻って来い

似ているようで違う命令
ボタンの例でも記載したように

button gosub " shori1 ",*shori1

button命令の場合gosubを記載しなければgotoが基本

button " shori1 ",*shori1


botton命令の場合gosubにあまり意味はないように感じる
というのはbuttonの待ちの仕組みと戻り場所が特殊な感があるからだ

普通gosub命令はその処理(=サブルーチン)を行いreturn命令の後に、gosubを発行した
次の行に戻る

gosub *shori1
mes "本処理1"
stop

*shori1
 mes "サブ処理1"
return


この一行目を
button gosub "ボタン" , *shori1
すると、先ほどとは逆の表示になる
しかし、ボタンを押した後では"本処理1"の表示はされない
何故か?それはボタンの待つ処理がstop命令又はプログラムの最後だからだ
つまりサブルーチンを終えて帰る場所がstopになる

次のように変更してみるとそれがよくわかる
button gosub "ボタン" , *shori1
mes "本処理1"
goto *shori9
stop

*shori1
 mes "サブ処理1"
return
*shori9
 mes "本処理9"


またこのコードではサブルーチン「shori1」が本プログラム中にある
3行目のgotoで、サブルーチンを飛び越えている
通常はgosubでのサブルーチンは本プログラム処理の最後にまとめて
記載するのがわかりやすいプログラムになる

とはいえこのbutton命令でのgosubは所謂イベントドリブンな処理が
組めるので非常に重宝することは間違いないでしょう

昨夜の強風から電車の遅れがあるようで
朝なのに人はまばら、、、これでよくも会社が成り立つものだw
といっても仲間・・・(略

さて、button 命令にはgosubを記載できる
例)
button gosub "文字",*shori1

gosubとは、サブルーチン、つまり別の処理を行いまた戻って来いという意味である
したがって、例のような場合にはボタンを押したら*shori1の処理を行って戻ってきなさい
となる
また、*shori1側ではサブルーチンなので戻る為のreturnを記載する
button gosub "文字",*shori1
stop
*shori1
 mes "shori1"
 return
 さて、この戻るという処理とボタンの処理には不思議な動作がある
次のコードを見てみよう
button gosub "文字",*shori1
 mes "stop"
stop
*shori1
 mes "shori1"
 return

 ボタンの後にメッセージを表示するようにしてみた
これは机上で考えるとボタンを押したら*shori1へ行き「shori1」を表示して
戻る、戻ったら「stop」を表示しなさい という仕様になる

しかし実際にこれを動かすと、ボタンを押しても「stop」は表示されない
これはボタン命令が待つ仕組みはstop、もしくはプログラムの最終行になる為
戻りが直近の「stop」に戻るものと思われるからだ

この当たり注意が必要でR
筆者使用環境はバージョン3.1だが、他のバージョンではもしかしたら
違う動きをするかもしれない、色々と試すのもプログラミングの醍醐味・・・かな

といってもauでおなじみの仲間さんが主演のドラマではない
前回のhspのコードの動きのことでR

button "文字",*shori1
*shori1
 mes "shori1"

この処理、本来の目的はボタンを押したらメッセージを表示したい という仕様
なのであるが、F5で起動するとボタンの下にすでにshori1が表示されている

VBやDelphi などでは押したら何をする、という形でプログラムがほぼ自動で書ける
しかし、ベーシックを基本としているhspやLGPではプログラムは基本的に順序通りに
処理される

今回の場合も

button "文字",*shori1  ←ボタンを表示しろ、押されたらshori1へ移動しろ
*shori1        ←shori1はここだよ
 mes "shori1"     ←shori1を表示しろ

という3行のプログラムを順序通りに処理しており、3行終了した段階で入力待ちになる
そこで、ここで入力待ちしたいという場合にはstop命令を記載する

button "文字",*shori1
stop
*shori1
 mes "shori1"

2行目に「stop」を記載することで本来の目的にあったプログラムになるのでR

stop命令と最終行の処理後は入力待ちになるので、ボタンを押してもプログラムは
終わらないで、入力待ちのまま動き続けるのだ!!

そろそろhspのほうでレベルアップしてみよう
といってもボタンを置いてみる

ボタン-ユーザーがクリック出来る部品であり、処理の分岐などに使用されるもの

これを画面に表示するには
button "文字",*shori1
もしくは
button gosub "文字",*shori1
となる

おや、ここで新たな命令「gosub」の登場だが、これは置いといて
(詳細知りたい場合はヘルプ参照)
次がbuttonのサンプル

button "文字",*shori1
*shori1
 mes "shori1"

どのような動き?をするかな?
ここら辺からhsp というか、プログラミングのトリッキーなところが出てくるので
しっかりと覚えていきたいのでR



忍者ブログ [PR]
カレンダー
08 2024/09 10
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
フリーエリア
最新CM
最新TB
プロフィール
HN:
忍者 シオ才
性別:
非公開
バーコード
ブログ内検索