Q12:@ p24 ボタンの配置してあるフレームにダイアログが表示されると考えて良いのでしょうか。
Ap25 「描画するコンポーネントを登録する」は具体的にどのような操作をしたい場合に設定するのでしょうか。
Bp.32 なぜ「イメージデータを設定する」を選択すべきなのでしょうか。
Q12-1:
p24の「ファイル選択」のコンポーネントで引数でコンポーネント:フレームを選択しています。このフレームにはボタンが配置されています。すなわち、ボタンの配置してあるフレームにダイアログが表示されると考えて良いのでしょうか?しかし、実際には起動させるとボタンの配置してあるフレームとは別のフレームが生成してそこにダイアログが表示されます。これらの差異はどう考えたら宜しいのでしょうか?
実践編p25の接続先の「画像ファイル入力」の起動メッソドの選択肢の一つに「描画するコンポーネントを登録する」があります。これは具体的にどのような操作をしたい場合に設定するのでしょうか?ここでの正しい選択肢である「ファイル名を指定して画像を読み込む」との違いを教えて頂けると有難いです。
実践編p.32の接続先コンポーネントである「イメージビューワー」の起動メッソドで「イメージデータを設定する」と「イメージを取得する」が選択できますが、この場合はなぜ前者を選択すべきなのでしょうか?
A12-1:
[ファイル選択]コンポーネントのメソッド「単数Open用ファイル選択ダイアログを表示する(Component)」で表示されるダイアログは[フレーム]内に表示されるのではなく、別なダイアログ画面として表示されます。
「単数Open用ファイル選択ダイアログを表示する(Component)」の引数で指定する情報は、ファイル選択ダイアログを表示する基準位置であり、「引数:コンポーネント」とした場合、親コンポーネント内に表示されるということではなく、親コンポーネントに中心を合わせて重なって表示されます。
「ファイル名を指定して画像を読込む」は[画像ファイル入力]内に画像データを設定するメソッドです。
一方「描画するコンポーネントを登録する(Component)」は画像データを登録するものではありません。
[画像ファイル入力]コンポーネントは、画像の表示先と画像の大きさを比較して画像のスケール(%)を計算するという機能を持っています。スケール計算をするためには表示先のコンポーネントの大きさを知る必要があります。「描画するコンポーネントを登録する(Component)」は、主にスケール計算時に使われ、登録されるコンポーネントは画像の表示先(イメージビューワー)コンポーネントです。
MZPlatformVer2.2までのチュートリアルLesson12ではこの機能を使って、表示先である[イメージビューワー]を「描画するコンポーネントを登録する」で[画像ファイル入力]に設定し、その[イメージビューワー]の大きさを基準に画像スケールを計算しています。
なお、MZPlatform2.3からは[イメージビューワー]コンポーネントに画像のスケールを指定して表示する機能を追加しましたので、チュートリアル内で[画像ファイル入力]の「描画するコンポーネントを登録する(Component)」は使用していません。
各コンポーネントのメソッドの「設定する」と「取得する」は
設定する:そのコンポーネントにデータ等を設定する
取得する:そのコンポーネントからデータ等を取得する
と考えて下さい。
今回の[イメージビューワー]の例では
「イメージビューワーにイメージデータを設定する」
「イメージビューワーからイメージ(データ)を取得する」
という意味になります。
お伺いしたいのですが、何故P32で「イメージを取得する」でも可とお考えでしょうか。起動メソッド情報設定の考え方などチュートリアルではご説明が足りない部分もあるかと思い、お伺いする次第です。
Q12-2:
メソッドにどこから「イメージを取得する」と記載してありませんでしたので「イメージビューワーからイメージを取得をする」だとは思いませんでした。私は、別の場所からイメージを取得してきてイメージビューワーに設定するのだと思っていました。では、MZでのすべてのメソッドの「取得する」は、「取得する」とメソッドを開いているコンポーネントそれ自身から「取得する」という意味なのでしょうか?
A12-2:
別の場所からデータを取得してきて設定する場合には、まず「設定する」となっているメソッドを選ぶ必要があります。
「別の場所からデータを取得」する必要がある場合は、メソッドを選んだ後の引数の設定、すなわち起動メソッド情報設定窓での「取得方法」や「コンポーネント」欄によって指定することになります。
Q12-3:
「取得する」は、そのメッソドを設定しようとしているコンポーネントにおいて、そのコンポーネント自身から取得すると教わりました。しかし、そもそもそのコンポーネントが保持しているものをあえてそのコンポーネントが取得する必要があるのでしょうか? 別の場所からデータを取得してきて設定する場合と別の場所からデータを取得する場合とでは、メソッドとして具体的に何が異なるのでしょうか?
先日お答え頂いた回答で
>接続元コンポーネントと接続先コンポーネントはいずれも処理を実行する主体となるが、それらの関係は主−従と考えて良いのでしょうか?」
>「主ー従という関係」が、「処理の実行のきっかけとなるものが『主』で、そこから連鎖的に起動されるものが『従』」という意味であるならば、接続元コンポーネントと接続先コンポーネントの関係につきましては、そのご理解で間違いありません。
上記の回答で「処理の実行のきっかけ」とあります。ここでの「処理の実行」とは、どのコンポーネントがおこなうのでしょうか?「きっかけ」=発生イベントだと伺いましたので、接続先コンポーネントでしょうか?
A12-3:
> 「取得する」は、そのメッソドを設定しようとしているコンポーネントにおいて、そのコンポーネント自身から取得すると教わりました。
> しかし、そもそもそのコンポーネントが保持しているものをあえてそのコンポーネントが取得する必要があるのでしょうか?
「取得する」とは、「設定する」メソッドを実行するコンポーネントが、自分自身が保持しているデータを手に入れるために実行する、というものではありません。
例えば、イメージビューワーの「イメージデータを取得する」メソッドは、「イメージビューワーからイメージデータを取得する」ということだけを行うもので、「イメージビューワーが自分自身からイメージデータを取得して自分自身に取り入れる」という類のものではありません。
一般に、「取得する」メソッドを実行しただけの段階では、取得したデータをどのコンポーネントが利用するのかは決まっていません。言い換えると、取得したデータをどのコンポーネントがどのように利用するのかは、別途、指定する必要があるということです。
通常、あるコンポーネントから取得したデータは、他のコンポーネントが利用することになります(自分自身で利用することもありますが、今はそれには触れません)。「設定する」メソッドは、その利用の仕方の1つです。処理の実行は接続先コンポーネントが行います。処理の実行に他のコンポーネントから取得したデータが必要となる場合には、そのデータは接続先コンポーネントが実行するメソッドの引数として渡されます。
> 別の場所からデータを取得してきて設定する場合と別の場所からデータを取得する場合とでは、メソッドとして具体的に何が異なるのでしょうか?
説明に不明確な部分があったこと、お詫びいたします。別の場所、すなわち他のコンポーネントからデータを取得する場合には、基本的に、そのデータを保持しているコンポーネントの「取得する」メソッドを実行します。
「設定する」は、上述のように、他のコンポーネントから取得したデータの利用の仕方の1つです。この場合、接続先コンポーネントの「設定する」メソッドを実行するときに、他のコンポーネントから取得したデータを引数として渡すことになります。
> 先日お答え頂いた回答で
>> 接続元コンポーネントと接続先コンポーネントはいずれも処理を実行する主体となるが、それらの関係は主−従と考えて良いのでしょうか?」
>> 「主ー従という関係」が、「処理の実行のきっかけとなるものが『主』で、そこから連鎖的に起動されるものが『従』」という意味であるならば、接続元コンポーネントと接続先コンポーネントの関係につきましては、そのご理解で間違いありません。
> 上記の回答で「処理の実行のきっかけ」とあります。ここでの「処理の実行」とは、どのコンポーネントがおこなうのでしょうか?「きっかけ」=発生イベントだと伺いましたので、接続先コンポーネントでしょうか?
上述の通り、処理の実行は接続先コンポーネントが行います。