フォームの表示順を制御するには?


treasure  2005-09-13 08:05:53  No: 125279  IP: [192.*.*.*]

vb6で開発しています初心者です。よろしくお願いします。
質問:フォーム1からフォーム2を表示するshowコマンドを書いたとき、フォーム2をフォーム1の後ろに表示するにはどうしたらよいのでしょうか?また、フォーム2の情報全体をリードオンリーの設定にしたいのですが、これは可能でしょうか?(フォーム2はフォーム1を編集するときの参考にするといった感じ。)

編集 削除
葉月α  2005-09-13 08:44:58  No: 125280  IP: [192.*.*.*]

http://www2j.biglobe.ne.jp/~little-g/cgi-bin/vbtheme2.cgi

ここにサンプルあったけどAPI使わないと無理っぽい
(サンプル提示はしましたが、私自身動作の保障はしません。個人の責任で)

参照が最背面というのはそういう仕様なので仕方ないのでしょうが
私は前面でもいいと思うなぁ(w

ボタン押す>表示する>参照なり選ばせたりする>元の画面に反映する
私ならそんな感じにするかな〜

編集 削除
ガッ  2005-09-13 08:54:48  No: 125281  IP: [192.*.*.*]

もうなんかトリッキーだね。
普通なら、「Form1を親としてForm2をモーダルで表示」だけど…
というわけで、少し実験してみました。

'1  Form1、Form2をつくる。
'2  Form1にCommandButton1を貼り付ける
'3  以下のコードをForm1のコードにする
'4  実行して、Form1のCommandButton1を押す
'5  アレマ!
Option Explicit

Private Sub Command1_Click()
    Form2.Show
    Me.Visible = False
    Me.Show vbModal, Form2
End Sub

※実は誤爆してたりね。

編集 削除
treasure  2005-09-13 09:36:47  No: 125282  IP: [192.*.*.*]

ガッさん、葉月αさんありがとうございます。Modalいいです。まさに私の求めていたものはこれです!しかし、ここで困ったことが1つ出てきました。このボタンをメニューバーに作っていたのですが、か、Enabled=Falseでも Visible=False でも、このボタンは押せてしまいます。これはどうしたらよいでしょうか?(違う質問としてあげたほうがよかったかな?)

編集 削除
ガッ  2005-09-13 09:38:24  No: 125283  IP: [192.*.*.*]

> (違う質問としてあげたほうがよかったかな?)
そのようにすると大変うれしいです。
…「押せない状態」や「見えない状態」のメニューを堂々と押せるユーザが見たい…

編集 削除
treasure  2005-09-13 09:44:55  No: 125284  IP: [192.*.*.*]

>そのようにすると大変うれしいです。

 はい、次回からそのようにさせていただきます。

>…「押せない状態」や「見えない状態」のメニューを堂々と押せるユーザが見たい…

つまりどういうことでしょう???上記の文章はメニューを隠す(使えなくする)っていう考えがそもそも間違っているっていうことを意味しているのでしょうか?

編集 削除
ガッ  2005-09-13 09:49:39  No: 125285  IP: [192.*.*.*]

> Enabled=Falseでも Visible=False でも、このボタンは押せてしまいます。
というレスがあったので、使っているユーザが
押せないボタンを押したり、見えないボタンを押したりして困っているんだなー…
と考えたまでです。

> つまりどういうことでしょう???
> 上記の文章はメニューを隠す(使えなくする)っていう考えがそもそも間違っているっていうことを意味しているのでしょうか?
ユーザから見れば、使って欲しくないUIは極力選択不能(Enabled=False)の状態にしてほしいので、
この考えは真っ当です。

※再現できなかったので、再現できる情報を教えていただけるとうれしいですねぇ…

編集 削除
通ってみた  2005-09-13 11:27:45  No: 125286  IP: [192.*.*.*]

もし

>>Enabled=Falseでも Visible=False でも、このボタンは押せてしまいます。

というのであれば、ボタンクリックイベントの先頭に

If Command1.Enabled = False or Command1.Visible = False Then
    Exit Sub
End If

と入れてみるとかね

編集 削除