過去の桐井戸端BBS (桐ver.8)
18540 イベントで「絞り込みフォーム指定行」というコマンドはどうして使用不可になっているのでしょうか 磯田 2003/01/16-11:07
お世話になります。V8SP6 です。
最近やっとイベントに慣れてきて、イベントにはまりつつあります。
さて、一括処理のコマンドで「絞り込み フォーム,指定行」というコマンドがありますが、
これはイベントでは使用不可となっているようです。
絞込みを行指定により実行することはイベントでは不可能なのでしょうか。
こういった作業がある場合には一括で組まざるおえないのでしょうか?アドヴァイスお願いします。
18541 Re:イベントで絞り込み 指定行 ONnoji 2003/01/16-12:01
記事番号18540へのコメント
磯田さん、こんにちは。

以下の例は一括処理のようにリターンキーを押して、
行を選択することは出来ませんが…(^^ゞ
あらかじめフォームの行セレクタを選択しておいて、
フォーム上のコマンドボタン( cmd絞り込み実行 )を実行すると、
行が選択されるというものです。

なお、もうひとつのコマンドボタン( cmd絞り込み指定行 )はワークスペースに配置してもOKです。

オブジェクト名:cmd絞り込み実行
   機能名      機能パラメータリスト
[1]表示
[2]手続き実行    cmd絞り込み実行Click
[3]なし
[4]なし


オブジェクト名:cmd絞り込み指定行
   機能名      機能パラメータリスト
[1]なし       #代入( &mFilter,0)
[2]絞り込み_指定行
[3]なし       #代入( &mFilter,1)
[4]なし

※[3]の#代入( &mFilter,1)は行が選ばれていない時には実行されない


*------------------------------------*
名札 メイン
 変数宣言 局所,整数{ &mFilter }


 
手続き定義開始 cmd絞り込み実行Click( )
 変数宣言 自動,整数{ &return }

 メソッド呼び出し 戻り値 = &return,@cmd絞り込み指定行.実行( )

 if ( &mFilter )
  確認 #str( #総件数 ) + " 行が選択されました"
 else
  確認 "選ばれた行がありません"
 end

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

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

18543 Re:イベントで絞り込み 指定行 悲しげ 2003/01/16-14:50
記事番号18540へのコメント
どもっ、磯田さん
ひとつの方法として、いかにもWin的でカッコイイと思えて、
表に[レ]なる数値系項目を設け、これフォーム上ではトグルボタンのチェックボックスに当てて使っていました。
ここにチェックを入れたものをコマンド牡丹で絞り込むとかの使い方ですね
([レ]項目をクリアするタイミングの問題も派生しますけど)。
でも、この方式、何故か遅いことも含めて意外と使いにくかったので、
今は使うのを止めてしまいました。(^^;)
代わりに、行セレクタのクリック(必要に応じて Ctrl+ や Shift+ として)
で選択反転させた後、右クリックからの「絞り込み−選択行」方式に切り替えました。
なんてこたぁない、諸々含めて、こっちの方が断然使いやすかったりしたからです。

18546 Re:イベントで絞り込み 指定行 磯田 2003/01/16-15:21
記事番号18540へのコメント
Onojiさん、悲しげさんありがとうございます。やはり諸先輩方もいろいろ工夫をされていますね。
今回は幸いなことに一括主体のプログラムなので、一括上で行指定をするつもりです。
しかし、なぜイベントで行指定ができないのでしょうか?
割と頻繁に使うコマンドなので、一括からイベントへの乗換えを考えているものには大きな壁になりそうです。
18548 Re:イベントで利用できないコマンド ONnoji 2003/01/16-16:30
記事番号18546へのコメント
磯田さん、こんにちは。

ご質問から逸脱しますが・・・

>しかし、なぜイベントで行指定ができないのでしょうか?

DOS桐の[処理行指定]コマンドや[選択 指定行]コマンド等は、
キャラクタベースのOS( MS-DOS )でキー操作を前提にいるのだと思います。
つまり基本がキー操作ですから、エンターキーやESCキーやf・2キーが活躍するわけですね。

>割と頻繁に使うコマンドなので、一括からイベントへの乗換
>えを考えているものには大きな壁になりそうです。

DOS桐では[処理行指定]コマンドや[選択 指定行]コマンド等は便利なのでよく使いますね。
それなりにすぐれたインターフェースだと思うのですが、しかし、これはWindow的ではありませんね。

桐V7の時に、DOS桐コマンドとの互換を取るために無理矢理(?)、
この種のコマンドもサポートされていますが、やはりDOS的な操作感ですね。

DOS桐に慣れているので、どうしてもDOS桐と同じ操作がしたい!
という気持ちになる人は多いと思います。

しかし、現在のWindows環境では、やはり限界があるだろうと思うのです。
私はそういう意味でイベントで利用できないコマンドが存在することは仕方がないと思います。

とは言ったものの・・・多くの人がすでに一括処理( .cmd )のアプリをたくさん作ってしまっていますよね。
それらの資源をイベントに変更するのはとても大変なことですよね。
ウ〜ム・・・頭が痛くなる前に失礼。(@_@)
18554 イベントで指定行の絞り込み 佐田 守弘 2003/01/16-18:25
記事番号18540へのコメント
磯田さん
絞り込む行が1行だけなのか、連続した複数行なのか、飛び飛びの複数行なのかによって
プログラムの組み方は変わりますが、イベントで絞り込みを行う事は可能です。

●1行だけを選ぶ
Enterキーダウンのイベントを拾い、この時の処理対象行を1行だけ絞り込めば良い訳です。
ID項目があれば、その値を調べてそれで絞り込んでもよいでしょう。
●連続した行を選ぶ
開始行と終了行を上記の方法で指定して、ID番号の範囲などで絞り込めば良いでしょう。
●不連続の行を選ぶ
Enterキーを押したら、同じ方法でフラグの項目にチェックを入れ、
チェックを入れた項目を絞り込む方法で実現できます。
ただし、Enterキーを行指定に使うのであれば、
絞り込み実行にはshift+Enterなど、他のキーを割り当てる必要が出て来ます。

●なぜ「絞り込み フォーム,指定行」コマンドが使えないのか
私の勝手推測ですが、使う必要がないからか、使えるモードでないからだと思います。
なぜなら、このコマンドは走っている一括処理プログラムを中断し、
範囲指定の会話処理に入るコマンドだからです。
イベントを動作させる環境は元々会話処理ですから、このコマンドを使わなくてもいつでも範囲指定が行える環境です。

それからイベントだからといって何もかもイベントハンドラに記述したコマンドで実行しなければならないものではありません。
コマンドボタンに機能名を設定し、それと組合わせて使う部分もあります。
通常は行セレクタで行範囲を指定し、コマンドボタンの機能で選択範囲の絞り込みを行えばよいのではないでしょうか。

佐田守弘(KS-00119)

18557 Re:イベントで利用できないコマンド うにん 2003/01/16-19:45
記事番号18548へのコメント
>DOS桐では[処理行指定]コマンドや[選択 指定行]コマンド等は便利なのでよく
>使いますね。
>それなりにすぐれたインターフェースだと思うのですが、
>しかし、これはWindow的ではありませんね。

おっしゃるとおりだと思います。
Windows的には、オブジェクト指向とでも申しましょうか、
まず最初に処理対象を指定し、それに対して処理内容を指示する、という流れになります。
並べ替えたい列で右クリックしてソート順を指定するとか。

イベントを使うなら、まずフォームが表示してあって、ユーザが処理したい行を
クリックなり範囲指定なりした後、イベントが起動して処理が行われる、
という流れですよね。

18560 Re:イベントで絞り込み 指定行 natsu 2003/01/17-00:13
記事番号18543へのコメント
>代わりに、行セレクタのクリック(必要に応じて Ctrl+ や Shift+ として)
>で選択反転させた後、右クリックからの「絞り込み−選択行」方式に切り替
>えました。なんてこたぁない、諸々含めて、こっちの方が断然使いやすかっ
>たりしたからです。

自分だけで使うのであれば、悲しげさんと同様、CTRL+行セレクタですね
左手にキーボード・右手にマウスは何となくマニュアル車の雰囲気です

ただ、パソコンに慣れていない人に、ストレスなく使ってもらおうとすれば
マウスだけの操作が必要かもしれません
(最近、自分も横着になりました もうAT車しか乗れません)

ということで、自分ではどうしているかというと、
一覧表フォームで非表示の[レ]項目を作ります
クリックするのは行セレクタです

行セレクタの左クリックイベントは
「ポケットをたたくとビスケットが一つも一つたたくとビスケットが消えた」イベントです

ケース開始
 ケース ([レ]=#U)
    行訂正 [レ]="1"
 ケース その他
    行訂正 [レ]=#U
ケース終了

絞り込みたいときは、フォームヘッダ部分にコマンドボタンをクリック
([レ]≠#Uで絞り込みます)

フォーム開始時イベントで 置換 [レ]=#U としておきます

明細部のオブジェクトをまとめて選択して編集属性式で
[レ]≠#U のとき背景色を変更すれば、絞り込む前に
絞り込み対象行がはっきりわかります

あとは、絞り込み解除ボタンなどお好みで...

戻る