過去の桐井戸端BBS (桐ver.8)
17705 コマンドボタンの機能"手続き実行"のパラメータには何をいれたらよいのですか? つかまさ 2002/10/24-11:47
フォームのコマンドボタンの機能名で"手続き実行"を選択するとイベントファイルに定義されている手続きが
実行されるようなことが詳細に記されているので機能パラメータに説明のとおり
<手続き名>,<引数の並び>を入れて実行したのですが、
<<解析できません>>
KU1093:データの形式に誤りがあります。
と、エラーがでてしまいます。

<手続き名>は
"ボタン_32::"でも"ボタン_32"でも駄目でなんですが、例えば

手続き定義開始 ボタン_32::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
条件 (&フラグ=1) 項目値代入 [メーカー]=&メーカー
手続き定義終了

と、いう手続きがあったら機能パラメータには
<手続き名>として何を、
<引数の並び>として何を、
入れればうまくいくのでしょうか?

もしかしてボタンのイベントの手続きでは駄目で、
自分で手続きを定義したものでないとならないのでしょうか?

17706 Re:コマンドボタンの機能"手続き実行"のパラメータには何をいれたらよいのですか? ONnoji 2002/10/24-12:31
記事番号17705へのコメント
つかまささん、こんにちは。

   機能名    機能パラメータリスト
[1]手続き実行  "タン_32::マウス左クリック",引数1,引数2,引数3,引数4

とすれば動きますが…
この引数を指定するのがとても大変です。

>もしかしてボタンのイベントの手続きでは駄目で、
>自分で手続きを定義したものでないとならないのでしょうか?

イベントハンドラが絶対駄目というわけではありません。
しかし、マウス左クリックは引数を持っているイベントハンドラですから大変なので止めたほうが無難です。(^^ゞ

引数が無いイベントハンドラ…例えば[ソース値更新]イベントは以下のように簡単に実行できますよ。

   機能名    機能パラメータリスト
[1]手続き実行  "txtTest::ソース値更新" *注1
[2]手続き実行  cmdTestClick  *注2

*注1:イベントハンドラ名にはコロン(:)が含まれているので前後を二重引用符(")で囲む必要があります。
*注2:一般手続き名には特殊な文字は使用しない約束なので、手続き名の前後を二重引用符(")で囲まなくても実行可能です。
一般手続き名には、JIS2D21〜2D7F(この範囲にNEC特殊文字を含む)までの文字と以下の記号を含めることができません。
  ,.:;?!""^"_|/~()[]{}+-*/=<> \$%#&*@
  ,.・:;?!'"^|_/〜()[]{}
  +−±×÷=≠<>≦≧¥$%#&*@

今回の場合には新しく一般手続きを作られたほうが簡単だと思います。

17708 Re:コマンドボタンの機能"手続き実行"のパラメータには何をいれたらよいのですか? ONnoji 2002/10/24-12:46
記事番号17706へのコメント
>   機能名    機能パラメータリスト
>[1]手続き実行  "タン_32::マウス左クリック",引数1,引数2,引数3,引数4
>とすれば動きますが…
>この引数を指定するのがとても大変です。

コピペを失敗しました。(^^ゞ

>   機能名    機能パラメータリスト
>[1]手続き実行  "ボタン_32::マウス左クリック",引数1,引数2,引数3,引数4
>とすれば動きますが…
>この引数を指定するのがとても大変です。

が正しいです。

なお、イベント( .kev )の中でソース値更新イベントハンドラを実行するには次のようにできます。

(例)
 :
手続き実行 txtFileButton::ソース値更新()
 :

いずれにしても、引数があるイベントハンドラは避けた方がいいと思います。
17709 Re:コマンドボタンの機能"手続き実行"のパラメータには何をいれたらよいのですか? 悲しげ 2002/10/24-13:51
記事番号17705へのコメント
>もしかしてボタンのイベントの手続きでは駄目で、
>自分で手続きを定義したものでないとならないのでしょうか?

つーか、この場合はコマンドボタンからその機能としての「手続き実行」をさせるまでもなく、
「コマンドボタン」タブの機能等は空にしたまま、「イベント」タブで「マウス左クリック」イベントにチェックを入れるだけで
用は足りるような気がするのですが?
何だか「屋上屋を重ねる」ような・・・(?_?)
17710 「屋上屋を重ねる」余談 悲しげ 2002/10/24-14:11
記事番号17709へのコメント
ちなみに、コマンドボタンにて、(1)「マウス左クリック」イベントと
(2)ボタンの機能からの「手続き実行」の両方を設定した場合は、
まず先に(1)が実行され、次いで(2)が実行される筈です。
(1)と(2)の手続き定義が同じだった場合、もしかして重複実行されるかもしれません
(試す気はありませんけど)。(^^;)

全然外しているとしたら、すみません。<(_ _)>
17711 Re:一般手続きで処理しようとしたらエラーが出ちゃったのですが… つかまさ 2002/10/24-14:16
記事番号17706へのコメント
ONnojiさん、たびたびご丁寧にありがとうございます。

さっそく一般手続きを以下のように作ったのですが、

 手続き定義開始 項目値移動()
 条件 () 項目値代入 [メーカー]=&メーカー
 手続き定義終了

条件の後ろの括弧に何をいれればいいのかわからず、

  KU1090:コマンドの形式に誤りがあります
  詳細 () 項目値代入 [メーカー]=&メーカー

と、ゆうエラーを出してしまい、
括弧を取ったら、"括弧がありません"というエラーが出てしまいました。
いまひとつ、引数をどう代入していいのか自分の理解の無さに憤りを感じてしまうのですが
手続き定義の条件の後ろの括弧に何を入れればいいのでしょうか?
そして、
  ボタン_32::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
と、あるときに、
括弧の中の"&マウス位置[2]"やら"&明細番号"やら"&フラグ"やら"&処理中止"を理解するためには、
何を見れば(読めば)よいのでしょうか?
  
ちなみに、"【桐】一括処理&イベントリファレンス"を見ていますが、
【イベント処理】引数を使用する というページには&マウス位置や&フラグなどいう言葉は出てこないので、
イベントに出てきたらなんとなくさわらずにしておいたのです。
どう理解したらよいのでしょうか?
17712 Re:そのとおりなんですが… つかまさ 2002/10/24-14:24
記事番号17710へのコメント
>ちなみに、コマンドボタンにて、(1)「マウス左クリック」イベントと
>(2)ボタンの機能からの「手続き実行」の両方を設定した場合は、まず
>先に(1)が実行され、次いで(2)が実行される筈です。
>(1)と(2)の手続き定義が同じだった場合、もしかして重複実行される
>かもしれません(試す気はありませんけど)。(^^;)

お世話になります。
悲しげさんのおしゃるとうりなんですが、

上記の
(1)「マウス左クリック」イベント
(2)ボタンの機能からの「手続き実行」は
先に(1)が実行され、次いで(2)が実行されるところを、
(2)が先で(1)が後という順番で
実行したいのです。
かつ、ボタンを一つにしたいので思案しているのです。

なにか、お知恵を借りられれば幸いなのですが…。
17713 Re:そのとおりなんですが… 悲しげ 2002/10/24-14:52
記事番号17712へのコメント
どもっ、つかまささん

>(1)「マウス左クリック」イベント
>(2)ボタンの機能からの「手続き実行」は
>先に(1)が実行され、次いで(2)が実行されるところを、
>(2)が先で(1)が後という順番で
>実行したいのです。
>かつ、ボタンを一つにしたいので思案しているのです。

これは何故ですか?

この度の、コマンドボタンの「マウス左クリック」イベントを
「手続き実行」からも再実行させたい云々へのコダワリからは少し離れて、
やりたいことを具体的に書いていただければ、
もう少し無理のない他の方法とかも沢山出てくるような気もします。

17714 ヘルプの調べ方 悲しげ 2002/10/24-15:02
記事番号17711へのコメント
>ちなみに、"【桐】一括処理&イベントリファレンス"を見ていますが、

これはHTMLヘルプを指していると思われますので、
---------------------
 【INDEX】
   イベントハンドラ
    マウス左クリック
---------------------
を指定すれば、個々のパラメータの説明がでてきます。
17715 Re:一般手続きで処理しようとしたらエラーが出ちゃったのですが… ONnoji 2002/10/24-15:15
記事番号17711へのコメント
つかまささん

>さっそく一般手続きを以下のように作ったのですが、
>
> 手続き定義開始 項目値移動()
> 条件 () 項目値代入 [メーカー]=&メーカー
> 手続き定義終了
>
>条件の後ろの括弧に何をいれればいいのかわからず、
>
>  KU1090:コマンドの形式に誤りがあります
>  詳細 () 項目値代入 [メーカー]=&メーカー
>
>と、ゆうエラーを出してしまい、
>括弧を取ったら、"括弧がありません"というエラーが出てしまいました。

条件 () というところがエラーだと思います。
条件などいらないでしょうから…

手続き定義開始 項目値移動()
 項目値代入 [メーカー]=&メーカー
手続き定義終了

とすればOKと思います。

>いまひとつ、引数をどう代入していいのか自分の理解の無さに憤りを感じてしまうのですが
>手続き定義の条件の後ろの括弧に何を入れればいいのでしょうか?

一般手続きはユーザ自身が作るものです。
イベントハンドラはユーザ自身が作ってもいいですが…これはとても大変なので桐に作ってもらいます。

それで、一般手続きですが

引数を指定した一般手続きと引数を指定しない一般手続きがあります。

※引数なしの例

手続き定義開始 手続き名( ) ← かっこの中は空っぽにします。
 :
手続き定義終了

※引数ありの例

手続き定義開始 手続き名( [参照] <データ型> <引数名> [,… ] )
 :
手続き定義終了

引数ありの形はマウス左クリックイベントに似ているでしょう。

ちなみに引数があるイベントハンドラでは、

手続き定義開始 オブジェクト名::イベント名( [参照] <データ型> <引数名> [,… ] )
 :
手続き定義終了

引数がないイベントハンドラでは

手続き定義開始 オブジェクト名::イベント名( )
 :
手続き定義終了

という感じです。

>そして、
>  ボタン_32::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
>と、あるときに、
>括弧の中の"&マウス位置[2]"やら"&明細番号"やら"&フラグ"やら"&処理中止"を理解するためには、
>何を見れば(読めば)よいのでしょうか?

この掲示板の過去ログに引数の話題がありますので、是非お読みください。

http://www.fuku3.com/~habata/kbbs/kakov8/11363.htm

>ちなみに、"【桐】一括処理&イベントリファレンス"を見ていますが、
>【イベント処理】引数を使用する というページには&マウス位置や&フラグなどいう言葉は出てこないので、
>イベントに出てきたらなんとなくさわらずにしておいたのです。
>どう理解したらよいのでしょうか?

[イベント処理]
  はじめに
  使ってみましょう
  内容を確認しましょう
  定義してみましょう ← ここを見たらいいのではないでしょうか?

しかし、

”括弧内の引数は、イベントハンドラを実行するときに、桐が使用するものです。
詳しくは、各イベントハンドラの引数の部分を参照してください。”

と書いてあるだけですけれど…(T_T)

つまり、[INDEX]→[イベントハンドラ]→[マウス左クリック]を見るしかありませんね。

いずれにしても、引数ということをご理解されないと難しいですよ。

前にも書きましたが、引数を使うイベントハンドラは呼び出さない方が無難ですよ〜。


17740 Re:できました! つかまさ 2002/10/25-09:21
記事番号17715へのコメント
ONnojiさんの


>条件 () というところがエラーだと思います。
>条件などいらないでしょうから…
>
>手続き定義開始 項目値移動()
> 項目値代入 [メーカー]=&メーカー
>手続き定義終了
>
>とすればOKと思います。

で、思っていた通りになりました。
丁寧なご説明ありがとうございました。

引数も条件も理解しないまま今までやってきたので、
素人のような質問をして、お恥ずかしい限りです。

引数も

>この掲示板の過去ログに引数の話題がありますので、是非お読みください。
>
>http://www.fuku3.com/~habata/kbbs/kakov8/11363.htm

を、見て"目からウロコ"の発見があって少し前に進めた気がします。
名前より並びが重要なのですね。
もう少し[参照呼び]の使い方を勉強して、実際に使ってみます。
そこでまた、どうしても理解できない時には質問すると思いますので、
その時はまたよろしくお願いします。

本当にありがとうございました(ペコリ)。

17741 Re:すみませんでした。 つかまさ 2002/10/25-09:40
記事番号17713へのコメント
悲しげさん、説明不足ですみません。

>>(1)「マウス左クリック」イベント
>>(2)ボタンの機能からの「手続き実行」は
>>先に(1)が実行され、次いで(2)が実行されるところを、
>>(2)が先で(1)が後という順番で
>>実行したいのです。
>>かつ、ボタンを一つにしたいので思案しているのです。
>
>これは何故ですか?

フォームで編集対照表の項目[部品番号]に、
追加するデータの部品番号を入力し、
対象表にその番号が無ければそれ以外の項目も追加入力したかったので、

コマンドボタンの機能に
[1]絞り込み_比較式    [部品番号]
[2]実行条件        #終端行
[3]行追加
[4]手続き実行       "項目値移動()"

と、して[4]で[部品番号]以外の基本入力値を
イベントの手続きで入れてしまいたかったのです。

ONnojiさんのご指導で、
自分の思った通りに一つのボタンで実行できたのですが、
もっと簡単な方法があったのでしょうか?
17745 Re:すみませんでした。 悲しげ 2002/10/25-12:42
記事番号17741へのコメント
どもっ、つかまささん

>コマンドボタンの機能に
>[1]絞り込み_比較式    [部品番号]
>[2]実行条件        #終端行
>[3]行追加
>[4]手続き実行       "項目値移動()"
>
>と、して[4]で[部品番号]以外の基本入力値を
>イベントの手続きで入れてしまいたかったのです。

はぁ? 何だか話がガラリと変わってますね。(?_?)
先のつかまささんのご質問は

1)コマンドボタンの「手続き実行」でまず「マウス左クリック」
手続き定義を先に実行させ、
2)次にその「マウス左クリック」イベント自体を再実行させたい

と云う、かなり無理難題な(^^;)やり方であるとしか解釈できなかったのですが、
どうも私の読解力が足りなかったようです。
ともあれ、「マウス左クリック」イベントを手続き実行で呼び出すのを諦めたことは、
よろしいんじゃないでしょうか?(^^;)
17746 Re:すみませんでした。 悲しげ 2002/10/25-13:23
記事番号17745へのコメント
#17741は、#17713の中のむしろ

>この度の、コマンドボタンの「マウス左クリック」イベントを
>「手続き実行」からも再実行させたい云々へのコダワリからは
>少し離れて、やりたいことを具体的に書いていただければ、

の部分へのコメントだと考えれば辻褄が合いますね。コピペした際の
引用個所の間違いと云うことで、得心できました。<(_ _)>

戻る