コラム / パイパイモンテカルロたん / 7



さて、TPaintBoxは、再描画されるとリセットされるのを忘れていました。
再描画されるイベントがあるので、
そこで書き直すという手はあるんですが、
リセットされないコンポーネントがあるので移行します。
PaintBoxを選択して・・・

img14.png

Deleteキーを押す

img15.png

TImageコンポーネントを貼り付けて

img16.png

位置あわせ&257*257にリサイズ

img17.png

これでコンポーネントは変えられました。
あとはコードです。
With使っといてよかったああああああああああああああああ
with PaintBox1.Canvas do begin
with Image1.Canvas do begin
に変えるだけです。
これで実行してボタン押して最小化して戻しても大丈夫。
TImageもTPaintBoxと同じくCanvasプロパティーを持っています。
Canvasプロパティーは、同じくTCanvasクラスですから、
摩り替わっても全く同じ動きをするわけですね。
オブジェクト指向の特徴です。助かった。。。
気を取り直して続きを書きましょう。
ボタンの処理には、あと一つ、
タイマーを開始する処理が必要ですが、
タイマーが完成してからつけましょう。
タイマーは、インターバルプロパティの値ミリ秒経過したら、
onTimerイベントを発生させます。
実は他のイベントは発生させません。
芸の無いやつ。超専門家。
まぁ当然、デフォルトイベントもonTimerになってるので、
コンポーネントのアイコンをダブルクリックしてください。
procedure TForm1.Timer1Timer(Sender: TObject);
begin

end;
こんなのが出ると思います。早速書いていきましょう。
まず変数宣言。
一番上の階層で変数宣言しても良かったのですが(実はグローバル変数っていう
たまには毎回 Labelのテキストから取得したりしてみましょうw
だからそのための変数やらが必要です。
procedure TForm1.Timer1Timer(Sender: TObject);
var
   Goma:Integer;
   Erai:Integer;
   Pai:Single;
begin

end;
コンポーネントにつけた名前と被ってはいけないため、
ちょっと窮屈です。
Goma は 全てのゴマの数
Erai は 円の中のゴマの数
Pai は 暫定での円周率です。
Paiの型はSingle型となっています。
Single型は実数型の一つで、
なんと、小数が扱えます!
ええ てか整数型じゃ円周率「3」で確定やがな。
実数型はけっこう種類があって、
それぞれ「有効桁数」ってのが決まってます。
まぁ、Singleは一番安い奴です。
有効桁数7-8ですが、まぁ、3.14までは表せるからいいよね と。
コード部分はまたあとで