過去の桐井戸端BBS (桐ver.8)
27067 フォームの中のチェックボックスにまとめてチェックを入れたい ミナミヌマエビ 2004/07/16-21:32
はじめまして。 最近桐を触り始めたばかりで毎日困っています。
桐8 SP6 Win2000環境にて構築されたアンケートフォームがあります。
項目には[スイカ][バナナ][メロン]・・・というチェックボックスがあり、最低1つ以上選ぶようになっています。
トグルボタンがONになったとき、(チェックが入ったとき)表には1(整数)が入るようになっています。
選択する項目が多いため、"全部選択"というボタンと"全部キャンセル"というボタンを作りたいと思います。
イベント、という機能を使えば何とかなるのではないか?と思い、
「マウス左クリック」でイベント処理を記述するための≪kev≫ファイルを開いたところで挫折しています。

このファイルにどのような記述をすればよいのかさっぱり分かりません。
まだ桐の機能をしっかりと理解しておらず、説明不足で恐縮ですがアドバイス頂けないでしょうか。
27068 Re:まとめてチェックを入れたい しぼうかん 2004/07/17-10:24
記事番号27067へのコメント
ミナミヌマエビさん、こんにちは.

チェックボックスもトグルボタンも使わないのではずしている可能性が高いのですが、
とりあえずこんな感じでどうでしょうか?(未検証)

手続き定義開始 全部選択::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
行訂正 [スイカ]=1,[バナナ]=1,[メロン]=1
手続き定義終了

27075 Re:まとめてチェックを入れたい ミナミヌマエビ 2004/07/18-22:19
記事番号27068へのコメント
しぼうかんさん、アドバイスありがとうございます。
早速丸ごとコピーして試したのですが動かない・・・。(;´□`) .....。 エラーメッセージは
≪イベントハンドラ処理の実行中にエラーが発生しました≫
≪KU1140:コマンド名に誤りがあります ≫
≪詳細:フラグ,参照 長整数 &処理中止≫

ただ、考え方、やり方としてこういう処理もあるんだ、と勉強になりました。

>チェックボックスもトグルボタンも使わないのではずしている可能性が高いのですが、
はい。 チェックボックスは必須です。 インターフェースを大きく崩したくないので。

また、項目名はいつもいつも一定ではなく、増えたり、減ったりします。(現在約30項目です。)
もう少し悩んでみます。

27076 Re:まとめてチェックを入れたい 今村 誠 2004/07/18-23:13
記事番号27075へのコメント
ミナミヌマエビさんこんにちは

>≪イベントハンドラ処理の実行中にエラーが発生しました≫
>≪KU1140:コマンド名に誤りがあります ≫
>≪詳細:フラグ,参照 長整数 &処理中止≫

イベントはコピーでなく桐に作ってもらった方が間違いが少ないですよ。
ONnojiさんが管理されている以下のページをお読みになられて、左クリック
イベント等の「手続き定義」の記述は桐に任せてくれぐれもコピーは、
やめられた方が良いと思います。

http://www.geocities.co.jp/SiliconValley-Bay/7565/guide01.htm

27077 Re:まとめてチェックを入れたい 宮城 2004/07/18-23:20
記事番号27075へのコメント
ミナミヌマエビさん、こんにちは。しぼうかんさん、横からすみません。

> ≪イベントハンドラ処理の実行中にエラーが発生しました≫
> ≪KU1140:コマンド名に誤りがあります ≫
> ≪詳細:フラグ,参照 長整数 &処理中止≫

ははぁ。手続き定義開始文が二行になっちゃったみたいですね。

「フラグ,参照 長整数 &処理中止)」部分を切り取って前の行の後ろにくっつけたらいいんじゃないかな?

どこまでいけるか試したことはありませんが、相当長く一行に書けます。
ただ、メンテ面からは最悪。
二行以上に分けるけど、連続した一行の文だよってときには前の分の文末に「¥」マークをつけます。
全角でも半角でも可。まだ続くよって印。

このとき「¥」の右にスペースくっつけたりしないように注意してください。
たぶんエラーになってしまうと思います。

ほかにはそのときの更新モードによって「行訂正」使えないときもあるので「項目値代入」と使い分けるか、
「メソッド呼び出し @フォーム.更新モード設定(x)(注:『フォーム』は半角カナです)」で切り替えるかですね。

> また、項目名はいつもいつも一定ではなく、増えたり、減ったりします。(現在約30項目です。)
> もう少し悩んでみます。

これってミナミヌマエビさんになにか誤解があると思うのですが。
しぼうかんさんの例はミナミヌナエビさんが「[スイカ],[バナナ],[メロン]」とお書きになったから、
ああなっているのであって、30項目あるなら30項目分の記述となります。
1項目増えた、減ったというなら当然その部分は修正です。
あるいはフォームはひとつと仮定しますが、
このときはa,bの二項目、このときはa,c,dの三項目とかさせたいのであれば、
そうしたいだけコマンドボタン作るか、なんらかの振り分けさせるもうワンクッションおくかの
どちらかしかありません。

ユーザーはともかく、ロジック組む側には地道に想定されるケースを洗い出し根気よく記述していくしかないです。

# ひょっとしたら「ファミリ」が使えるかもしれませんが。

27078 Re:まとめてチェックを入れたい ONnoji 2004/07/19-10:04
記事番号27075へのコメント

>また、項目名はいつもいつも一定ではなく、増えたり、減ったりします。(現在約30項目です。)

ミナミヌマエビさん、こんにちは。

サンプルをアップしました。

よろしければご参考にしてください。

外していたらすいません。

-----------------------------------------------
[124] 27067 まとめてチェックを入れたい

ミナミヌマエビさん江

アンケート.wfm を開いてください。
[すべてオン][すべてオフ]ボタンを実行してください。

表( .tbl )のすべての整数型項目を対象にしています。
[名札 メイン]において処理から除外する項目名も指定できます。

これはイベントです。
※一括処理ではありません。
サンプルは桐ver.8ファイルですが、桐ver.9でも操作します。

-----------------------------------------------


27079 Re:まとめてチェックを入れたい ONnoji 2004/07/19-10:17
記事番号27078へのコメント
以下はサンプルのコマンドボタンとイベントの内容です。

コマンドボタン:cmdすべてオン
   機能名     機能パラメータリスト
[1]なし
[2]手続き実行  cmdすべてオンオフClick,1
[3]なし
[4]なし


コマンドボタン:cmdすべてオフ
   機能名     機能パラメータリスト
[1]なし
[2]手続き実行  cmdすべてオンオフClick,#u
[3]なし
[4]なし


*-----------------------------------------------------*
名札 メイン
 変数宣言 局所,文字列{ &m対象外項目List }
 &m対象外項目List = "イチゴ" /* 複数指定する場合は半角コンマ(,)で区切る */

 *

手続き定義開始 cmdすべてオンオフClick( 整数 &val )
 変数宣言 自動,文字列{ &fieldName, &dataType, &fieldKind }
 変数宣言 自動,整数 { &fieldNum, &mode }

 メソッド呼び出し @フォーム.更新モード取得( &mode )
 ** フォーム は半角カナです

 &fieldNum = 1
 &fieldName = #項目属性( &fieldNum, 1 ) /* 項目名を取得 */

 繰り返し ( #項目属性( &fieldNum, 1 ) <> #u )
  &fieldName = #項目属性( &fieldNum, 1 ) /* 項目名を取得 */
  &dataType = #項目属性( &fieldNum, 2 ) /* データ型を取得 */
  &fieldKind = #項目属性( &fieldNum, 6 ) /* 項目種別を取得{基本、計算、ふりがな} */


  if ( &dataType = "整数" .and &fieldKind = "基本" .and .not #対応番号( &m対象外項目List,
&fieldName ) )

   if ( .not &mode )
    行訂正 &fieldName = &val /* 表示モードの場合 */
   else
    項目値代入 &fieldName = &val /* 表示モード以外の場合 */
   end

  else
   ** 何もしない
  end

  &fieldNum = &fieldNum + 1
 繰り返し終了

手続き定義終了
*-----------------------------------------------------*

27080 Re:まとめてチェックを入れたい しぼうかん 2004/07/19-11:58
記事番号27075へのコメント

宮城さんフォローありがとうございます。
ミナミヌマエビさん、宮城さんが仰った通り、

手続き定義開始 全部選択::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &
フラグ,参照 長整数 &処理中止)

これは1行分ですのでそのままコピーするとエラーが表示されます。


>「マウス左クリック」でイベント処理を記述するため>の≪kev≫ファイルを開
>いたところで挫折しています。

と書いてあったので自動的に記述される部分に関しては
すでに知っておられると思ってしまいました。

イベントを記述したいオブジェクトの上で

右クリック→"オブジェクトの属性"→"イベントのタブ"→左側のマウス左クリックの文字の上でダブルクリックをすると
イベントの最初の1行と最後の1行が自動的に記述されます。

この2行の間にしたい処理のコマンドを書いて処理します。
今回は

行訂正 [スイカ]=1,[バナナ]=1,[メロン]=1

この1行だけの処理を書いてみましたが、宮城さんが仰っている通り
必要な項目数分(30項目?)同様に追加して書く必要があります。

レスをつけている他のお三方には私も良くお世話になっているこの掲示板の7賢人の方なので
詳しくはそちらで書かれている事を参考にすればイベントについてより詳しく勉強出来ると思います。
27082 スペシャルありがとう♪ ミナミヌマエビ 2004/07/19-18:57
記事番号27080へのコメント
アドバイスを贈ってくださった皆様、本当にありがとうございます。
ONnojiさん、サンプルまで作って頂き大感謝です。
>外していたらすいません。
とんでもありません。 素晴らしく的を得ています。 ありがとうございます。
現在イベントの内容をマニュアル片手に解析中です。

宮城さん、今村 誠さん、しぼうかんさん
>ははぁ。手続き定義開始文が二行になっちゃったみたいですね。
お恥ずかしい・・・。
≪行訂正 [スイカ]=1,[バナナ]=1,[メロン]=1≫
の部分だけでよかったのですね。 反省しています。

リンク先はすべてお気に入りに保存しておきました。
とってもとってもありがとう。

戻る