過去の桐井戸端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)を書き換えれば
>〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
うにん様
悲しげ様
有難うございました。おかげさまで期待通り完成できました。
ほんとに有難うございました。今後もよろしくご指導お願いします。

戻る