過去の桐井戸端BBS (桐ver.9) |
27153 | フォームの表示位置指定を細かく指定したい | くもん | 2004/07/23-10:35 |
桐Ver9 2004を Windows Xp Home Edition で使用しています。 A台帳フォーム 一覧表形式 繰り返し数…10 垂直表示位置調整…上付け 上記フォームを画面のおおよそ上半分に表示、残り半分に次のようなB投入フォームを表示し参照入力しています。 B投入フォーム 一覧表形式 ウインドウの形式…チャイルド 水平位置調整…右寄せ 垂直位置調整…下寄せ (上記位置をもっと細かく指定したい) サブフォームではありません イベント…B投入.KEV 名札 メイン VAR 長整数{&B投入} * PROC フォーム::フォーム開始(長整数 &表番号) &B投入=&hwindow END PROC t_投入::マウス左クリック(長整数 &マウス位置[2].長整数 &明細番号.長整数 &フラグ.参照 長整数) mathod @コマンドボタン_閉じる.実行() END 上記イベントのどこにどのようなコマンドを記述すればフォームの表示位置をより細かく指定することが出来ますか。 できるだけ具体的にご指導頂きたくよろしくお願いします。 | |||
27154 | Re:フォームの表示位置指定 | うにん | 2004/07/23-12:53 |
記事番号27153へのコメント ウィンドウ位置 設定 コマンドでいいのでは? | |||
27155 | Re:フォームの表示位置指定 | 悲しげ | 2004/07/23-14:58 |
記事番号27154へのコメント うにんさんの仰るように「ウィンドウ位置 設定」を使えばできます。 え〜、一般にはB某.wfmをサブフォーム(画面表示オフ)として予め設定しておいて 必要に応じて画面表示をオン・オフさせる方が簡単かとは思いますが、 実は仰せのようなことを私も試したことがあります。(^^;) 以下、拙作の「大作」から一部を改変して抜粋。 A某.wfm(kev)の記述(1) 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 手続き定義開始 フォーム::タイマー1() /*フォーム開始の次の段階として代用*/ オブジェクト操作 @フォーム.タイマー1="0" ウィンドウ位置 取得,&hwindow,位置=(&窓始x,&窓始y) 手続き定義終了 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 (2)A某.kevからB某.wfmをフォーム呼び出しする。 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 &whA=&hwindow オブジェクト操作 ハンドル=&hwindow,&ob始x=…….始点X,&ob始y=…… &始点x=#int(&窓始x)+#int(#PointToDot(#num(&ob始x)+1.5))\ ,&始点y=#int(&窓始y)+#int(#PointToDot(#num(&ob始y)+2)) フォーム呼出し "B某.wfm",ボタン=&牡丹,終了状態=&終了 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 (3)呼び出されたB某.wfm(kev)の記述 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 手続き定義開始 フォーム::フォーム開始(長整数 &表番号) ・・・・・・ ウィンドウ位置 設定,&hwindow,位置=(&始点x,&始点y) ・・・・・・ 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 「大作」(β版)は【多遊】さんのところのDLコーナーNo.098にあります。 考え方の説明と云うか、その原型は(ちょっと違うのですが)、同コーナの No.037にあります。 | |||
27156 | Re:フォームの表示位置指定 | 悲しげ | 2004/07/23-15:20 |
記事番号27155へのコメント ただし、 >上記フォームを画面のおおよそ上半分に表示、 >残り半分に次のようなB投入フォームを表示し >参照入力しています。 A某.wfmとB某.wfmの内、参照すると入力するのがどっちなのかが、実は この文面からは読みとれませんが、(^^;) もし参照するのがA某.wfmで入力するのがB某.wfmならば前述のやり方で可能です。 B某.wfmがモーダルなので入力に丁度よいと思います。 逆に参照するのがB某.wfmで入力するのがA某.wfmだと、B某.wfmがモーダルなので A某.wfmにアクセスできませんし、B某.wfmがモーダルではなく モードレスフォームだとしたら、今度はA某.wfmに入力しようとした途端に B某.wfmが背面に隠れてしまって参照不能となります。 その場合は、メイン&サブの形にするのが激しく無難だと思います。 | |||
27157 | Re:フォームの表示位置指定 | くもん | 2004/07/23-16:39 |
記事番号27156へのコメント >A某.wfmとB某.wfmの内、参照すると入力するのがどっちなのかが、実は >この文面からは読みとれませんが、(^^;) > >もし参照するのがA某.wfmで入力するのがB某.wfmならば前述のやり方で >可能です。B某.wfmがモーダルなので入力に丁度よいと思います。 > >逆に参照するのがB某.wfmで入力するのがA某.wfmだと、B某.wfmがモーダ >ルなのでA某.wfmにアクセスできませんし、B某.wfmがモーダルではなく >モードレスフォームだとしたら、今度はA某.wfmに入力しようとした途端 >にB某.wfmが背面に隠れてしまって参照不能となります。 >その場合は、メイン&サブの形にするのが激しく無難だと思います。 > > B投入.wfmを参照してA台帳.wfmへ入力しています。 | |||
27159 | Re:フォームの表示位置指定 | うにん | 2004/07/23-17:14 |
記事番号27156へのコメント >>上記フォームを画面のおおよそ上半分に表示、 >>残り半分に次のようなB投入フォームを表示し >>参照入力しています。 >ルなのでA某.wfmにアクセスできませんし、B某.wfmがモーダルではなく >モードレスフォームだとしたら、今度はA某.wfmに入力しようとした途端 >にB某.wfmが背面に隠れてしまって参照不能となります。 重ならないように作っているので隠れる心配はないのでは? ウィンドウメニューの「上下に並べて表示」のようなことだと思いましたが。 | |||
27160 | Re:フォームの表示位置指定 | 悲しげ | 2004/07/23-17:21 |
記事番号27159へのコメント >重ならないように作っているので隠れる心配はないのでは? >ウィンドウメニューの「上下に並べて表示」のようなことだと思いましたが。 あ、そうか。 上半分にA某.wfmを(多分「上付け」で)表示し、その下にピッタリ付けるような形で (重ならないように)B某.wfmを表示させると云うことですね。 では、A某.wfmのセクションの高さ(フォームのヘッダ部と明細部とフッタ部の point数の合計)を「オブジェクト操作」コマンドで取得して、 その値(+α=若干の余裕)を元に、B某.wfmの始点yを決めればよさそうです。 ちなみにこの場合、B某.wfmの呼び出し方は、フォーム呼び出し(モーダルフォーム)ではなく、 コマンドボタンの機能「開く」がよいと思います。 method @B某wfm開くコマンドボタン名.実行() ※ B某wfm開くコマンドボタンの機能とパラメタリストは 機能 同パラ 開く "B某wfm" | |||
27162 | Re:フォームの表示位置指定 | 悲しげ | 2004/07/23-17:45 |
記事番号27160へのコメント んな訳で、No.27155の(2)を書き換えれば 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 変数宣言 自動,文字列{&頭高,&明細高,&脚高} オブジェクト操作 ハンドル=&hwindow\ ,&頭高=@フォームヘッダ部.セクションの高さ\ ,&明細高=@フォーム明細部.セクションの高さ\ ,&脚高=@フォームフッタ部.セクションの高さ &始点x=#int(&窓始x)\ ,&始点y=#int(&窓始y)\ +#int(#PointToDot(#num(&頭高)+#num(&明細高)+#num(&脚高)))+α /*αは「隙間」としての適当な値(経験的には要試行錯誤?)*/ method @B某wfm開くコマンドボタン名.実行() 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 但し、挙動未確認。(^^;) (補足) &始点x,&始点yは複数のフォームを貫いて使う変数ですから、固有または 共通変数で考えています。 &窓始x,&窓始yの方ははメイン部で宣言する局所変数でしょうね。 | |||
27165 | Re:フォームの表示位置指定 | くもん | 2004/07/23-18:14 |
記事番号27162へのコメント 悲しげさんは No.27162「Re:フォームの表示位置指定」で書きました。 >んな訳で、No.27155の(2)を書き換えれば >〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 うにん様 悲しげ様 有難うございました。おかげさまで期待通り完成できました。 ほんとに有難うございました。今後もよろしくご指導お願いします。 |