| 変数トップへ|手順1|手順2|手順3 |
| お得情報 |
最初はおまけ? 大量オブジェクトの重なり順を変更する方法。 手順−2で、直線オブジェクトをたくさん作成して、番号順に並べる作業がありましたが、どのようにされましたか? オブジェクトリストを利用して「Shift+↑↓」を利用されたと思いますが、先にこの方法を紹介しなくて申し訳ございません 私もいままでは、上記方法や重なり順を利用したり、時には、いったんワークスペースへ出したあと、再度戻したり行ってました 今回、初公開の情報です。その方法は、上(前面)にしたいオブジェクトを「切り取り」ます。そして「貼り付け」をクリックします。 この方法だと同じ場所に貼り付けることができますので、本当に順番だけの入れ替えが可能です。 大量のオブジェクトの入れ替えには是非ご利用ください。 |
| では、まじめに、お得情報を始めます (ファイル名は、適当に変更・複写してお試しください) |
|||||||||||||||||||
| さきほど、矢印の上に配置した「ラベルオブジェクト」配置しました。・・・ その前にワークスペースにだしてしまった「ボタンオブジェクト」ご記憶ですか?。せっかくですから、そのコマンドボタンを利用しましょう コマンドボタンを利用することで、イベントも短くできます。(イベントが短くなればいいというものでもないのですが、変数の勉強のためと・・) コマンドボタンの紹介(内容) |
|||||||||||||||||||
| えっ!「10分の1」・・と、いう訳で、ピクチャーの表示部分も頑張ってみましょう。 いままで利用している内容は >&Ypt=#文字列( 30+(&大器-&大量)*20)+"pt" >&Hpt=#文字列(&大量*20)+"pt" >オブジェクト操作 @p大量{始点Y=&Ypt,高さ=&Hpt} このように紹介しましたが、思い切ってまとめてみます。 >オブジェクト操作 @p大量{始点Y=#文字列( 50+(&大器-&大量)*20)+"pt",高さ=#文字列(&大量*20)+"pt"} >オブジェクト操作 @p中量{始点Y=#文字列(250+(&中器-&中量)*20)+"pt",高さ=#文字列(&中量*20)+"pt"} >オブジェクト操作 @p小量{始点Y=#文字列(275+(&小器-&小量)*20)+"pt",高さ=#文字列(&小量*20)+"pt"} もともと3行しかないので、10分の1にはできませんが、3文の1になりますね。(ただ、3行あったのを1行にしただけです) ※しかし、行数が少ないプログラムがいいという訳ではありません。あくまで一番いいのは正しい答えを出すプログラムです 無理に行数を少なくすることをお奨めしているのではありませんので、ご了承下さい |
|||||||||||||||||||
| また、今回、コマンドボタンを使用したため、フォーカスの処理が残っています。 通常のメニューなどで使用するコマンドボタンは、選択したボタンにフォーカスが動いても問題ないですが、今回は矢印の上に、中途半端に残ってしまうと見た目が悪いので、フォーカス処理を行います。 方法は、「b中大1・b中大2・・・・b中小」のフォーカス設定可能(F)は「自動」のままで結構です。 追加ボタンを作成してください。「b終了」機能名:「閉じる」、フォーカス設定可能(F)を、「自動」でなく、「許可」に設定してください とりあえず、マウス操作でのフォーカス移動はなくなります。 |
|||||||||||||||||||
| なお、ここまでの、サンプルを「変数付録」に入れてあります | |||||||||||||||||||
| top | |||||||||||||||||||
| 後ひとつ、お得情報 (ファイル名は、適当に変更・複写してお試しください) |
| さて、共通と聞いて思い出すのは・・・「ファミリー」が、あります。 さきほど、「共通しない部分だけコマンドボタンの、パラメータリストに設定し、共通部分をイベント(手続き)で、処理を行う」と、紹介いたしましたが、ファミリーではそのような処理はできません。(パラメータリストとイベントの発生順の関係です。従って、コマンドリストの実行が後でいい場合は可能です) では、今回、利用できないか・・・? いえ、ご紹介します。桐もこれだけ使ってくれるとうれしいのでは・・・と、勝手に思いながら(自己満足です) では、最初にファミリーの設定を行います。 書式→ファミリーパレット→追加オブジェクトリストのファミリーに「くりっく」が、できましたか?では、マウスで選択してオブジェクト属性画面、または、オブジェクトリストの属性画面を表示してください。 ファミリーでは使用できるイベントが限られてますが、今回は、「マウスインアウト」・「マウス左クリック」のみ使用します 「マウスインアウト」は、当然矢印の色を変更するために利用しています。そして、「マウス左クリック」は、量を動かすのに使用しますね では、イベントは・・・ところで、読み飽きませんか、あと少しで終わりです。いままでと違った説明ですから、深呼吸でもしてからどうぞ 「マウスインアウト」も「マウス左クリック」もコマンドオブジェクトに登録する方法は一緒です。コマンドボタンのオブジェクト属性からイベントタブを開き右下の「ファミリー名」の▼をクリックして名前を選択してください。あとは、ファミリーでイベントを登録していきます。 このファミリーイベントでは、ひとつを除いて、いままで紹介したものを使用しています。それはそうですね。同じ内容を行うわけですから。 そのひとつとは、「&this」です。 いままで、「○○ボタンをクリックしたら」・・・・・とプログラムを作成してきましたが、「&this」を利用すると、いま何が押されたかがわかります。(ファミリー以外のイベントでも使用できます) つまり、きっかけのボタンや他のオブジェクト名がわかるので、共通(ファミリー)のプログラムもそれなりに作成(変更)が、必要です &this・・「&」が付いているので、変数というのはわかりますが、いつ宣言するのか・・? この変数は、宣言しなくても使用可能です。とにかく、イベントが発生したら、そのきっかけを作ったオブジェクト名が、入っていると、覚えてください。 ここで、お知らせ。オブジェクト名は、「自由にとか、わかりやすい名前を・・・」と、書きました。では、名前を「左下の5から右上の8へ移動するボタン」でもいいのか?。悪くはないのですが、今回ファミリーで使用するために「b大中」など指定していたわけです。 プログラムの中で、「&this」の内容が、「左下の5から右上の8へ移動するボタン」より、「b大中」の方が、処理に楽です。 少し遠まわりになりましたが、利用例(詳細はイベントファイルを参照下さい) 「クリック」ファミリーのマウスインアウトでの使用例 >手続き定義開始 くりっく::マウスインアウト(長整数 &フラグ,長整数 &明細番号) > if(#文字位置(&this,"中大")>0) > &obj[1]="直線_11",&obj[2]="直線_12",&obj数=2 > else if(#文字位置(&this,"大中")>0) > &obj[1]="直線_13",&obj[2]="直線_14",&obj数=2 &thisの内容を調べ、その中の文字に「○○」が含まれている場合は、以下の処理をする 「クリック」ファミリーのマウス左クリックでの使用例 >手続き定義開始 くりっく::マウス左クリック(・・・・・・・・・・・・) > if(#部分列(&this,2,1)="大") > &元量=&大量 > else if(#部分列(&this,2,1)="中") > &元量=&中量 > if(#部分列(&this,3,1)="大") > &共器=&大器,&先量=&大量 > else if(#部分列(&this,3,1)="中") > &共器=&中器,&先量=&中量 ここでは、&thisの内容を一文字ずつ調べ、その中の文字に「○」が含まれている場合は、以下の処理をする ファミリーでの使用に限らず「&this」は、重要な変数のひとつです。使用方法を覚えましょう |
| ここまでのサンプルは、「変数付録2」に入れてあります |
| top |
| 変数・・・あってもいいし、なくてもいいし・・特に考えたことはなかったのですが、ふとしたことから、変数をまとめてみました 「変数は、使用すればするほど、プログラムがわかりにくくなってしまう」そう考えておられたかた!。正しいです。 しかし、変数を使用しないプログラムは書けません。となれば、できるだけわかりやすい変数での利用をしましょう。 これをご覧になられて、わかりにくかった方は、このような利用はしないで下さい。もし参考になられた方は、これは、たんなる一例です もっとすばらしい方法があると思いますので、改良してよりいい方法でご利用ください。ここまで、ご覧頂ましてありがとうございます |
| 【多遊】 |