過去の桐井戸端BBS (桐ver.8)
10532 桐のウィンドウを表示しないでフォーム編集できますか 今村 誠 2001/03/27-13:59
皆さんこんにちは
私はcmdからしか一括くんだことありませんが、桐のウィンドウがない状態でウィンドウを2個作成して
交互に切り替えできるのでしょうか。
よく悲しげさんがフォーム呼び出しですべて組むことをされているみたいですが
桐のウィンドウがないと表示行数も増えるのでいいのかなと思っています。
初心者的質問で恥ずかしいのですが、フォームからの一括でされている方で
ウィンドウ作成で同時に2個違うtblを編集して桐のウィンドウを表示しないでフォーム編集できますか。

10598 Re:フォームからの一括について mudagami 2001/03/30-22:07
記事番号10532へのコメント

>フォームからの一括でされている方で
>ウィンド作成で同時に2個違うtblを編集して桐のウィンドを表示しないで
>フォーム編集できますか。
>
>

 一括処理にするか、フォームのイベント処理を選ぶか、わたし自身も悩んでいることで、
興味のあるテーマでして、恥をしのいで書き込みさせていただきます。

 今村さんの質問を見て、わたし自身も疑問を感じていたことでして。実際に自分で試してみました。

●試してみると、できました。!!

 以下、そのイベントファイル(フォームからの一括?=今村さんのおしゃる)を記入します。
フォームの切替には F12 を設定しています。

*** 以下メインに開くフォームのイベント ***

名札 メイン
変数 共通, 整数{&win1, &win2}



手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
  &win1 = &hwindow
  ウィンドウ作成 "2個めのフォーム名", ハンドル = &win2, 編集表 = 開く
手続き定義終了

手続き定義開始 フォーム::フォーム終了()
  条件(&win2<>"") ウィンドウ終了 &win2
  代入 &win1="", &win2=""
手続き定義終了

手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,\
               長整数 &フラグ,参照 長整数 &処理中止)
  if (&仮想キーコード=123 .and &フラグ=0 .and &win2<>"")
    &処理中止=1
    ウィンドウ位置 最小化, &hwindow
    ウィンドウ位置 最大化, &win2
  end
手続き定義終了


*** 2個めのフォームのイベント ***

名札 メイン



手続き定義開始 フォーム::フォーム終了()
  条件(#変数("win2")<>"") &win2 = ""
手続き定義終了

手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,\
               長整数 &フラグ,参照 長整数 &処理中止)
  if (&仮想キーコード=123 .and &フラグ=0 .and #変数("win1")<>"")
    &処理中止=1
    ウィンドウ位置 最小化, &hwindow
    ウィンドウ位置 最大化, &win1
  end
手続き定義終了



 以上、簡単なイベント処理で出来てしまい、わたし自身もあきれています。
ただ、両方のフォームから開いても可能な状態にするにはもう少し書き込まなければなりませんが。(イベント処理を)
あと、フォームのイベント処理(一括処理?)からは、共通変数の削除が出来ないのが難点です。
フォーム終了イベントの中では、関数「#表オープン状態()」の正しい値が帰ってこないようで、
仕方なく、共通変数を設定し、「フォーム終了()」イベントの中で片方のフォームの閉じている状態を判断しています。

 もっと良い方法があるかもしれませんが、とりあえず出来ることは出来ます。
あと、当然フォームのオブジェクト属性「ウインドウの形式」は「オーバーラップ」で指定しています。


10604 Re:フォームからの一括について 今村 誠 2001/03/31-03:06
記事番号10598へのコメント

こんばんは、パソコン再セットアップ中だったので今見ました。
コメントいただいて大変うれしいです。
切り替えの仕方までお教えいただいてありがとうございます。
一度実験してみます。
最初の書き込みからずいぶんになるので半分あきらめていましたが………
まだ桐もインストールしていないので2、3日遅れるかもしれませんが
結果を報告します。
ありがとうございました。

10605 訂正 mudagami 2001/03/31-09:53
記事番号10604へのコメント

 どこか間違えているのではと云う不安がありましたが、やはり間違えていました。
(自分でも、だいたいこの程度のレベルだろうとあきれていますが、ハハハ)

●訂正個所

@ 最初のフォームを開くとき2個目のフォームを最小化にしておく。
A フォーム切替の時、アクティブ・フォーム? が「表示状態の時」と条件付ける。
B 2個目のフォームを閉じるとき、1個目のフォームを最大化にする。

以下に、訂正したイベントを載せておきます。



*** 以下メインに開くフォームのイベント ***


名札 メイン
変数 共通, 整数{&win1, &win2}



手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
  &win1 = &hwindow
  ウィンドウ作成 "2個めのフォーム", ハンドル = &win2, 編集表 = 開く
  ウィンドウ位置 最小化, &win2
手続き定義終了

手続き定義開始 フォーム::フォーム終了()
  条件(&win2<>"") ウィンドウ終了 &win2
  代入 &win1="", &win2=""
手続き定義終了

手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,\
               長整数 &フラグ,参照 長整数 &処理中止)
  if (&仮想キーコード=123 .and &フラグ=0 .and &win2<>"" .and #編集状態
(&hwindow)=0)
    &処理中止=1
    ウィンドウ位置 最小化, &hwindow
    ウィンドウ位置 最大化, &win2
  end
手続き定義終了




*** 2個めのフォームのイベント ***


名札 メイン



手続き定義開始 フォーム::フォーム終了()
  条件(#変数("win1")<>"") ウインドウ位置 最大化, &win1
  条件(#変数("win2")<>"") &win2 = ""
手続き定義終了

手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,\
               長整数 &フラグ,参照 長整数 &処理中止)
  if (&仮想キーコード=123 .and &フラグ=0 .and #変数("win1")<>"" .and #編
集状態(&hwindow)=0)
    &処理中止=1
    ウィンドウ位置 最小化, &hwindow
    ウィンドウ位置 最大化, &win1
  end
手続き定義終了


10629 途中経過報告 今村 誠 2001/04/01-11:59
記事番号10605へのコメント
mudagamiさん、こんにちは
早速テストしてみました。
直接フォームを開いてmudagamiさんのイベントを実行するとうまくいきます。
しかしメニューフォームから入るとうまくいかないようです。
メニューフォームのコマンドボタンに左クリックイベントから
ウィンド作成を2個作って表示まではするのですが、フォーム形式編集コマンドは受け付けてもらえないのでストップします。
フォーム呼び出しだと最初のフォームは編集できるが2個目のフォームは全然反応しません。
モーダルフォームなので最初に開いたフォームだけが対象となるようです。

メニューフォームから次の得意先管理や販売管理などでウィンドを2個作成して切り替えながら編集しているという方
是非アドバイスお願いします。
10631 Re:途中経過報告 mudagami 2001/04/01-20:21
記事番号10629へのコメント

 今村さん、こんにちは

>メニューフォームから入るとうまくいかないようです。
>メニューフォームのコマンドボタンに左クリックイベントから
>ウィンド作成を2個作って表示まではするのですが、フォーム
>形式編集コマンドは受け付けてもらえないのでストップします。
>フォーム呼び出しだと最初のフォームは編集できるが2個目の
>フォームは全然反応しません。
>モーダルフォームなので最初に開いたフォームだけが対象となるようです。

>メニューフォームから次の得意先管理や販売管理などで
>ウィンドを2個作成して切り替えながら編集しているという方
>是非アドバイスお願いします。

 自分では役不足のことは重々承知していますが、乗りかけた船のつもりで、お返事させていただきます。
(しかしイベントは、はまりますね!!)

 自宅のパソコンで試していますが、
メニューフォーム(オーバーラップ)から呼び出して、2個の目的のフォームを開き、
切換も出来、終了するとまた元のメニューフォームに戻ることが出来ます。

 メニューフォームの「コマンドボタン」から目的とするフォームを呼び出す際、
イベントからではなく、コマンドボタンの”機能名”を「開く」にし
”機能パラメータリスト”に目的とするフォーム名を拡張し付きで指定します。
当然フォーム名は、""で囲ってください。
 ただ、2個のフォーム(得意先管理や販売管理など)を切り換える際、ちらりちらりと
メニューフォームの影が表示されてしまいますので
「コマンドボタン」でフォームを開く前に、メニューフォーム自体を「最小化」にしておく必要があります。
(メニューフォーム自身のイベントのなかで、変数などを使用し、
自身のフォームの「最小化」・「最大化」を判断し切り換える必要があると思います。)

 「フォーム形式編集」コマンドは、イベントの中では使えません。
また、「フォーム呼び出し」ですとモーダルフォームを呼び出すことになりますので、適切ではないと思います。

 ただ、今村さんの文面からはよく分からないのですが、
「メニューフォーム」の1個のコマンドボタンから2個のフォームを(得意先管理や販売管理)を一緒にひらくのでしょうか?
それとも、「メニューフォーム」のコマンドボタンがそれぞれ「得意先管理」を
開くボタン・「販売管理」を開くボタンと分かれていて、別々に開くのでしょうか?
たぶん2個のフォームを同時に開くことをおっしゃっているのだと想像しますが、
別々に開くのであれば、イベント処理による切換の必要はないですよね。

 以上、ご参考になればと思います。

10641 ありがとうございました 今村 誠 2001/04/02-12:45
記事番号10631へのコメント
>(しかしイベントは、はまりますね!!)
どちらがよいか分からないので両方を試しながら試行錯誤しています。
でも苦になることはないです。
新しいことができるとうれしくなります。
最近新規投稿が少ないのでちょっと寂しいですね。
みんなのやりたいことをいっぱい投稿してほしいですね。

> メニューフォームの「コマンドボタン」から目的とするフォームを呼び出す際、
>イベントからではなく、コマンドボタンの”機能名”を「開く」
これは初めてのことで試していませんでした。
過去にここに一括を開くはみたのですが、フォーム開くのは意外でした。
ばっちりうまくいきました。
どこかが違うと思ったのですが、勉強が足りないと思いました。

>「メニューフォーム」の1個のコマンドボタンから2個のフォームを
>(得意先管理や販売管理)を一緒にひらくのでしょうか?
>それとも、「メニューフォーム」のコマンドボタンがそれぞれ
>「得意先管理」を開くボタン・「販売管理」を開くボタンと分かれていて、
>別々に開くのでしょうか?
得意先と販売を両方同時には開いていませんが、販売の方に電話番号のフォームを参照しながら切り替えるために
モーダルフォームでなく、ウィンド切り替えしたかったのです。
cmdではメニュー2から各処理に行っていたので佐田先生の販売管理のフォームをそのまま借りて実験しています。
全部借り物で自分で作ったのがないので、行挿入などのファンクションキーが使えないのがどの辺に原因があるのかを、
調べています。
ありがとうございました。


戻る