日本語プログラミング言語なでしこの公式掲示板

なでしこ の 掲示板

トップ 最新 新規 検索 公式

2019-06-09 18:58:25 -日 曜-

687 : Re:Re:Re:Re:ごめんなさい、やっぱり駄目でした - ゲイン さん


■MyImage +イメージ
 ・内容展開~
  自身の0,0を赤色で$10101まで塗る
 ・クリックした時は~
  内容展開

■話題項目
 ・イメージ1
   
 ・作る~

   イメージ1をMyImageとして作成
   イメージ1→X=0
   イメージ1→Y=0
   イメージ1→W=500
   イメージ1→H=50

   文字サイズは50
   線色は$10101; 線太さは1
   イメージ1の50,0から50,50へ線
   イメージ1の0,0を赤色で塗る
   イメージ1の60,30を$F5D2D2で塗る
   イメージ1の5,-5へ"+"を文字表示

テストとは話題項目

#----------------
 すみません、一度解決済みとしたのですが実際に作っていると意図した動きをしてくれませんでした😢
バグかもしれません

#ここから
■MyImage +イメージ 
 ・{=1}開くフラグ
 ・内容展開~ 
   自身の0,0を赤色で$10101まで塗る 
   もし、開くフラグが0と等しいならば
    自身の5,-5へ"+"を文字表示 
    開くフラグは1
   違うならば
    自身の5,-5へ"-"を文字表示 
    開くフラグは0
 ・クリックした時は~ 
   内容展開 

■話題項目 
 ・イメージ1 
 ・作る~ 
   イメージ1をMyImageとして作成 
   イメージ1→X=0 
   イメージ1→Y=0 
   イメージ1→W=500 
   イメージ1→H=50 

   文字サイズは50 
   線色は$10101; 線太さは1 
   イメージ1の50,0から50,50へ線 
   イメージ1の0,0を赤色で塗る 
   イメージ1の60,30を$F5D2D2で塗る 
   イメージ1の5,-5へ"+"を文字表示 

テスト1とは話題項目 
テスト2とは話題項目 
テスト2→イメージ1→Yは60
#ここまで

 上のプログラムのように複数のインスタンスを作り、実行してイベントが発生すると一番目に作った部品だけしか変更されません


(編集パスワード送信)

子記事

親記事 (No.676)
返信した記事(元) (No.683)

この内容(No.687)に返信

この内容(No.687)をダウンロード

この内容(No.687)のテキスト表示


2019-06-09 11:31:18 -日 曜-

686 : Re:イベントの仕組みについて教えてください - UNOパパ さん


■イベントについて
Windowsの場合、例えば「ボタンを押した」とか「マウスをクリックした」と言うユーザーの挙動は
一旦WindowsのOSカーネルがその情報を検知し、各アプリケーション(プロセス)にその情報をメッセージと
して伝達します。これがイベントです。

イベントが発生したときに実施したい処理は、通常「イベントハンドラ」として実装します。例えば
前回のプログラムで「クリックしたと時は~」と実装したのがハンドラです。これを実装しておくと
実際にマウスでイメージがクリックされたときに、その処理が呼ばれます。

「イメージ」のグループはなでしこをインストールしたフォルダの「\lib\vnako.nako」に実装されていて
中身を見てみると「・{イベント}クリックした時」と言う記述があると思います。つまり、このイメージ
グループは、「クリックした時」と言うイベントを持ちますよ、と言うことが予め定義されていて、
これを実装しておけばクリックされたときに何かしら挙動が起こります。(Windowsから来たメッセージは
一旦dnako.dllで受信して、各アプリケーションの「クリックした時」ハンドラを呼んでいるんだと
思います)。

■エラーになった原因

で、エラーになった原因ですが、前回エラーになっていたのは、多分「内容展開」メソッドの引数に
指定してたオブジェクトが生成されてないからかなあ…と言う気がします。いろいろ試してみて
うまく行くのは前回提示した方法だけだったので、言語仕様に大きく依存してる気がするんですが
詳細までは私も分かってないです。すみません。

(編集パスワード送信)

子記事

親記事 (No.685)
返信した記事(元) (No.685)

この内容(No.686)に返信

この内容(No.686)をダウンロード

この内容(No.686)のテキスト表示


2019-06-08 00:23:05 -土 曜-

685 : イベントの仕組みについて教えてください - ゲイン さん


こんにちは!
前のスレッドに続けて自分が質問することになるのですが、お答えしてれるとうれしいです。

自分はイベントの仕組みがよくわかりません。イベントをどのように使うかはわかるのですが、
イベントは自分で定義できるものなのか?いつ呼び出されるかはどこで定義してあるのか?
また、先ほどのスレッドのようなエラーがなぜ起きるのか?
これらについて教えていただきたいです。

お願いします!😄

(編集パスワード送信)

親記事

この内容(No.685)に返信

この内容(No.685)をダウンロード

この内容(No.685)のテキスト表示

子記事

699 Re:Re:イベントの仕組みについて教えてください (19-06-22)
686 Re:イベントの仕組みについて教えてください (19-06-09)

2019-06-07 10:16:42 -金 曜-

683 : Re:Re:Re:グループ内でGUI部品のイベントを設定し、その部品に対して描画命令を出すとエラーになる - UNOパパ さん


■MyImage +イメージ
 ・内容展開~
  自身の0,0を赤色で$10101まで塗る
 ・クリックした時は~
  内容展開

■話題項目
 ・イメージ1
   
 ・作る~

   イメージ1をMyImageとして作成
   イメージ1→X=0
   イメージ1→Y=0
   イメージ1→W=500
   イメージ1→H=50

   文字サイズは50
   線色は$10101; 線太さは1
   イメージ1の50,0から50,50へ線
   イメージ1の0,0を赤色で塗る
   イメージ1の60,30を$F5D2D2で塗る
   イメージ1の5,-5へ"+"を文字表示

テストとは話題項目

#----------------

プログラムを読み間違えてましたね。「クリックした時」のイベントハンドラをグループ内に
定義したいってことだったんですね。失礼しました。

「クリックした時」はイメージグループのイベントになっているので、別のグループ内で
そのインスタンスとを作ってハンドラを記述することは出来ない様に思います。イメージ
グループを継承して新しいグループを作ればその中ではハンドラを記述出来ますので、
どなたかが指摘されていた様に、イメージグループを継承すればいいのではないかと
思います。

「話題項目」グループはその他にもいろいろと部品を含むとのことだったので、イメージ
グループを継承したMyImageを作り、その中でハンドラだけ記述してみました。もともとの
プログラムで「イメージ1をイメージとして作成」してた部分を「イメージ1をMyImageとして
作成」に変更し、定義してたメソッド、ハンドラはMyImageグループに移してます。
グループを余計につくる手間はありますが、これなら外部でハンドラ宣言しなくても
大丈夫ではないでしょうか。

(編集パスワード送信)

子記事

親記事 (No.676)
返信した記事(元) (No.682)

この内容(No.683)に返信

この内容(No.683)をダウンロード

この内容(No.683)のテキスト表示


2019-06-05 21:32:17 -水 曜-

682 : Re:Re:グループ内でGUI部品のイベントを設定し、その部品に対して描画命令を出すとエラーになる - ゲイン さん



■話題項目
 ・イメージ1
 ・内容展開~ 
   イメージ1の0,0を赤色で$10101まで塗る
 ・作る~
   イメージ1をイメージとして作成
 

テストとは話題項目

テストのイメージ1→X=0
テストのイメージ1→Y=0
テストのイメージ1→W=500
テストのイメージ1→H=50
テストのイメージ1のクリックした時は~
 テストの内容展開

文字サイズは50
線色は$10101; 線太さは1
テストのイメージ1の50,0から50,50へ線
テストのイメージ1の0,0を赤色で塗る
テストのイメージ1の60,30を$F5D2D2で塗る
テストのイメージ1の5,-5へ"+"を文字表示

#-----------------------------------

まず、「話題項目」はグループ定義でしかないので、これをインスタンス化するために
「テストとは話題項目」と宣言してます。これで「テスト」は話題項目グループ型の
変数になります。同時に話題項目の「作る」が動作しているので、イメージ1がイメージとして
作成されます。

イメージ1の各要素に値を代入する場合、「テストのイメージ1→X=50」の様にします。
「テスト」と言うグループの中のイメージ1と言う変数が持つXと言う要素に50を代入するって
ことですね。

話題項目がもつメソッド「内容展開」ですが、引数にグループ名を指定して…と言う形に
なっていましたが、そもそも自身の持つイメージ1に色を塗りたいだけなら上記のプログラムの
様な感じでいいはずです。これをコールする場合は、「テストの内容展開」とすればメソッドが
コールされます。

元のプログラムですと、イメージ1を話題項目の中で宣言してただけで、これをインスタンス化
(変数を話題項目型として宣言すること)してなかったのと、「テストのイメージ1」とせずに
「イメージ1」の要素に直接値を代入しようとしてたのでエラーになったのではないでしょうか。

返答していただきありがとうございます!

他の回答とも参照してみてやっぱりグループの外で何かしらの処理をしないといけなさそうです。😞
できればグループ内だけで完結したいんですが(複数のインスタンスを作って操作するので一つ一つに設定するのは大変)難しそうですね…

UNOパパ さん
 ありがとうございました。またお願いします!😄

(編集パスワード送信)

子記事

親記事 (No.676)
返信した記事(元) (No.679)

この内容(No.682)に返信

この内容(No.682)をダウンロード

この内容(No.682)のテキスト表示


戻る < < < > > > 次へ




www.eznavi.net