過去の桐井戸端BBS (桐ver.8) |
3720 | トグルボタンで処理を選ぶ | 高木一美 | 1999/12/13-11:02 |
いつもありがとうございます。ここでこんな質問していいかわからないので すが、もし、いい方法があれば教えてください。 v5の一括処理で、下 のような画面表示をして、印字したいリスト名をえ らび、1が入力されたリストのみを印字するようにしていました。 撮影リスト [ ] 発注リスト [ ] 指示リスト [ ] 要文字リスト [ ] 要ポジリスト [ ] 印刷するリストに1を入力してください これをv8でフォームに置き換えてやりたいのですが、うまくいきません。 1を入力するかわりに、チェックボックスをつけて、チェツクボックス用の 表を開き、それぞれ項目がチェックされた時にリストを発行するというふう に考えたのですが、画面が表示されてチェックするところまではできても、 リストを発行しないで終わってしまいます。 チェックボックスにせず、コマンドボタンにすればよいのではないかと思わ れるかもしれないのですが、データを抽出するのにかなり時間がかかるので、 抽出した後は、一気に処理してしまいたいのです。 現在は、実行ウィンドウを表示させて、v5仕様のままで処理してますが、 実行ウィンドウをなくして使いたいと考えてします。 説明不足でわかりにくいかもしれませんが、ヒントになるようなことでも思 いつかれた方があれば、よろしくおねがいします。 いつも聞いてばかりですみません。 | |||
3725 | Re:トグルボタンで処理を選ぶ | 悲しげ | 1999/12/13-13:47 |
記事番号3720へのコメント これは、私がその内やろうと思っていたことなので、取り敢えず 考えてみました。 例によって(^^;)「フォーム呼び出し」を使います。元のフォーム "リスト1.wfm"からリスト指定用の"リスト2.wfm"を呼び出すこ とにします。リストの指定は、表を使ってもいいのですが、この 場合は変数を使うことにしました。よって、共通変数(整数また は長整数)として、&撮影f,&発注f,&指示f,・・・・を宣言済みと しまして、これらの値がon=1,off=0と考えます。 リスト1.wfmは、この場合、リスト2.wfmを呼び出すための暫定的 なフォームでして、「実行」ボタン(b実行)と「終了」ボタン(b終了) だけで試しました。リスト1.kevでは「マウス左クリック」イベン トとして次のような記述としています。 ------------------------------------------------------------- 手続き定義開始 b実行::マウス左クリック(長整数 &マウス位置[2],・・・ &撮影f=0,&発注f=0,&指示f=0,・・・ 変数宣言 文字列{&牡丹} フォーム呼出し "リスト2.wfm",ボタン=&牡丹,終了状態=&実行リターン 条件(&牡丹="bキャンセル") 手続き終了 条件(&撮影f=1) 手続き実行 撮影リスト印刷() 条件(&発注f=1) 手続き実行 発注リスト印刷() 条件(&指示f=1) 手続き実行 指示リスト印刷() ・・・・・・・・・・・ 手続き定義終了 手続き定義開始 撮影リスト印刷() 確認 "撮影リストを印刷します" ・・・・・・・ 手続き定義終了 手続き定義開始 発注リスト印刷() 確認 "発注リストを印刷します" ・・・・・・・ 手続き定義終了 ・・・・・・・・・・・・・・ ------------------------------------------------------------- 次、リスト2.wfmの定義についてです。 O 撮影リスト O 発注リスト O 指示リスト ・・・・・・ のようにトグルボタンを定義します。このソースを共通変数として 宣言済みの&撮影f、&発注f、・・・としておきます。 そして、オンの値を1、オフの値も設定しておいて0としておきま す(これは不要なのかもしれませんが調べてません)。 あとは、ボタンをふたつ。「OK」(bOK)と「キャンセル」(bキャン セル)でして、ボタンの機能はいずれも「閉じる」だけでいいです。 ……と、これで要点は説明したと思います。こんな感じでちょいと お試し下さい。(^^)v 実は私は、マウスクリックだけではなく、カーソル移動→[Enter] でも指定できるようにしたり、あるいはリストに数字を付けておい て、数字キー入力でダイレクト指定も可能なようなしたいと思って いますが、それは今後(^^;)ボチボチ挑戦してみるつもりです。 | |||
3736 | Re:トグルボタンで処理を選ぶ(続) | 悲しげ | 1999/12/13-21:46 |
記事番号3725へのコメント リストの指定を、マウス左クリックだけでなく、カーソル移動→[Enter] 及び数字ダイレクト指定も可能にしてみました。 リストの中味を省略して、1:撮影、2:発注、3:指示の3つに絞ってます けど。(^^;) フォーム自体は、リストのラベルに数字を付けた他は、前述とさほど変 わっていないので、以下にkevのみ挙げます。 そうそう、マウスクリック以外のキーボードからのOKボタン代用は、暫 定的に[Tab]or[Dn]or[Shift]+[Enter]としてあります。 ---------------- リスト1.kev ---------------- 名札 メイン var 共通,長整数{&撮影f,&発注f,&指示f} * 手続き定義開始 b実行::マウス左クリック(長整数 ・・・・ &撮影f=0,&発注f=0,&指示f=0 var 文字列{&牡丹} フォーム呼出し "リスト2",ボタン=&牡丹,終了状態=&実行リターン 条件(&牡丹="bキャンセル") return 条件(&撮影f=1) call 撮影リスト印刷() 条件(&発注f=1) call 発注リスト印刷() 条件(&指示f=1) call 指示リスト印刷() 手続き定義終了 proc 撮影リスト印刷() 確認 "撮影リストを印刷します" end proc 発注リスト印刷() 確認 "発注リストを印刷します" end proc 指示リスト印刷() 確認 "指示リストを印刷します" end --------------------------------------------- ---------------- リスト2.kev ---------------- 名札 メイン * 手続き定義開始 フォーム::フォーム開始(長整数 &表番号) &撮影f=0,&発注f=0,&指示f=0 手続き定義終了 手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード・・・ if(&仮想キーコード=9 .or &仮想キーコード=34\ .or (&フラグ=4 .and &仮想キーコード=13)) /*[Tab]or[Dn]or[Shift]+[Enter]*/ method @bOK.実行() else if(&仮想キーコード=27) /*[Esc]キー*/ method @bキャンセル.実行() else if(&仮想キーコード=13) /*[Enter]キー*/ var 文字列{&focus} method @フォーム.フォーカスオブジェクト取得(&focus) if(&focus="tb撮影") &撮影f=#cond(&撮影f=1,0,1,1) else if(&focus="tb発注") &発注f=#cond(&発注f=1,0,1,1) else if(&focus="tb指示") &指示f=#cond(&指示f=1,0,1,1) end method @フォーム.再描画() else if(&仮想キーコード=49 .or &仮想キーコード=97) /*数字の「1」*/ &撮影f=#cond(&撮影f=1,0,1,1) method @フォーム.再描画() else if(&仮想キーコード=50 .or &仮想キーコード=98) /*数字の「2」*/ &発注f=#cond(&発注f=1,0,1,1) method @フォーム.再描画() else if(&仮想キーコード=51 .or &仮想キーコード=99) /*数字の「3」*/ &指示f=#cond(&指示f=1,0,1,1) method @フォーム.再描画() end &処理中止=1 手続き定義終了 --------------------------------------------- | |||
3741 | ありがとうございす | 高木一美 | 1999/12/14-09:35 |
記事番号3736へのコメント ありがとうごさいます。こんなに丁寧にお返事いただき、たいへんうれしいです。 ただ、私の能力では、読んですぐに理解することができないので、うまくできたかどうか お返事は、少し時間を下さい。 今後もよろしくお願いいたします。 | |||
3744 | Re:トグルボタンで処理を選ぶ(続々) | 悲しげ | 1999/12/14-12:02 |
記事番号3741へのコメント どもっ、高木さん、わかんなかったですか?(;_;) さて、今は判らないかもしれませんが、後々のために、先に書いた kevを一部補足訂正しておきます。 まず、リスト1.kevの方です。 手続き定義開始 b実行::マウス左クリック(長整数 ・・・・ &撮影f=0,&発注f=1,&指示f=0 のように、&発注fだけ1を入れておくとかすると(何らかの条件の 時のみ1でもよい)、リスト指定時にはこのリストだけをデフォルト でonにしておくこともできます。(^^)v 次、リスト2.kevの方。 手続き定義開始 フォーム::フォーム開始(長整数 &表番号) &撮影f=0,&発注f=0,&指示f=0 手続き定義終了 この部分は、蛇足であるのみならず、上記と矛盾する場合もある ので、このイベント手続きはバッサリ削除した方がいいです。(^^;) 手続き定義開始 フォーム::キーダウン(長整数 &仮想キー・・・ の手続きの中の最終行に &処理中止=1 と入れてありますが、これをここに記述したのは間違いで、 else if(&仮想キーコード=13) のif範囲の最後、すなわち else if(&仮想キーコード=49 .or &仮想キーコード=97) の前に移動しておいて下さい。「&処理中止=1(以上)」と云うのは、 そのイベント手続きを抜けた直後の、桐本来のキーの挙動を一時的 に殺すためのものです。元記述のようにキーダウンイベント全体で 殺してしまうと、例えば矢印キーも利かないことになってしまいま す(^^;)。この場合、[Enter]キーだけを殺すと云うことは、普通は [Enter]を押すと次のトグルボタンにフォーカスが移るのですが、 これがフォーカスが移らなくなるように結果します。ま、お好みで すが。 あと、細かいことですが、 method @フォーム.再描画() が、何度も出て来て冗長な感じがします。この記述は、本手続き定 義の最終行(元記述では「&処理中止=1」があった所)だけの記述 でまとめて行うことでいいと思いました。 ついでに云えば、数字や文字キー等、機能キー以外については「キ ーダウン」ではなく「キー入力」イベントを使った方がいいかもし れません。が、後者は、メイン&サブフォームを使っている場合、 仕様的に利かないことがあるので、私は全て「キーダウン」イベン トを使うようにしています、癖です。(^^;) | |||
3771 | Re:トグルボタンで処理を選ぶ(続々) | 高木一美 | 1999/12/16-10:43 |
記事番号3744へのコメント 熱心なご指導ありがとうごさいます。 パソコンの使用について、年々、自分では成長できているかなと思っていた のですが、皆さんの投稿を読んでいると、まだまだ勉強不足で、理解するス ピードの遅いナと痛感しています。 私は、プログラムを作るのが仕事ではなく、日常の仕事の合間にしているの ですが、ここに投稿されている他の多くの方も、そんな感じですね。 時間がないといわず、もっと勉強したいと思います。 |