chippu
Sr. メンバー
オフライン
投稿: 79
I'm a llama!
|
|
VBで・・・・
« 投稿日: 2006/04/24 - 21:37:14 » |
|
おひさしぶりです。いつもご協力ありがとうございます。 さて、SWをVBでカスタマイズしているのですが、ユーザーフォームの右上の隅にある「×」(閉じる)ボタンを非表示もしくは無効にしたいのですが どなたか方法ご存知ないでしょうか?
宜しくお願いします★
|
|
|
|
|
chippu
Sr. メンバー
オフライン
投稿: 79
I'm a llama!
|
|
Re:VBで・・・・
« 返信 #2 投稿日: 2006/04/25 - 11:56:44 » |
|
ありがとうございます。成功しました。 よく言うと「×」ボタンを非表示にしたいのですが、それはどのようにすべきですか? 先に頂いたホームページに載っているようですが同様にすることはSolidWorksのマクロで可能ですか? Form_load()っていうイベントてありましたっけ?
|
|
|
|
YXFUJITO
Full メンバー
オフライン
投稿: 31
I'm a llama!
|
|
Re:VBで・・・・
« 返信 #3 投稿日: 2006/04/25 - 12:53:08 » |
|
もし、全然まとわずれだったらすみません。
各フォームの"ControlBox"プロパティをFalseにするのではダメなのでしょうか?
|
|
|
|
chippu
Sr. メンバー
オフライン
投稿: 79
I'm a llama!
|
|
Re:VBで・・・・
« 返信 #4 投稿日: 2006/04/25 - 13:51:23 » |
|
マクロ編集でそのプロパティ探しているのですが見当たりません。。。
|
|
|
|
YXFUJITO
Full メンバー
オフライン
投稿: 31
I'm a llama!
|
|
Re:VBで・・・・
« 返信 #5 投稿日: 2006/04/25 - 18:22:27 » |
|
もしかして、VBというのは、SWのマクロ作成のVBAのことでしょうか? それでしたら、今確認しましたが確かに、”ControlBox"のプロパティはありませんでした・・
SWとは、別にVBでプログラムすると、このプロパティが使えると思ったのですが
お役に立てずすみません
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:VBで・・・・
« 返信 #6 投稿日: 2006/04/25 - 23:52:37 » |
|
Chippさんこんばんは
以前同じことを考えて作成したマクロがあったので、閉じるボタン非表示の部分だけ抜粋した サンプルマクロを添付します。
方法としては、このマクロ内のForm_Style_1というモジュールを用意し、ボタンを非表示にしたい フォームのUserForm_Initialize関数に記述してあるコードで可能になります。 もちろんモジュールやフォームの名前は任意でかまいません。
|
|
|
|
chippu
Sr. メンバー
オフライン
投稿: 79
I'm a llama!
|
|
Re:VBで・・・・
« 返信 #7 投稿日: 2006/04/26 - 10:11:39 » |
|
動作確認できました。感動☆ 返信くださった方々に厚く御礼申し上げます
|
|
|
|
chippu
Sr. メンバー
オフライン
投稿: 79
I'm a llama!
|
|
Re:VBで・・・・
« 返信 #8 投稿日: 2006/04/26 - 17:02:39 » |
|
HISAさん
ユーザーフォームを複数作成してそれらの「×」ボタンを非表示にさせてみたのですが、 うまくいくケースとそうでないケースが発生しているのですが、制限とかってあるのでしょうか?
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:VBで・・・・
« 返信 #9 投稿日: 2006/04/28 - 00:54:10 » |
|
引用:
添付した方法では、クラスの名前が環境によって違ったり、Captionといったユニークではない プロパティを使っているからですかね…なんとなく
対策として、Form_Style_1モジュールに以下の変更を加えて
引用:'削除 Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long) As Long
'追加 Declare Function GetActiveWindow Lib "USER32.dll" _ () As Long |
UserForm_InitializeではなくUserForm_Activateイベントで以下の コードを試してみて下さい。
引用:Private Sub UserForm_Activate()
Dim hWnd As Long Dim Wnd_STYLE As Long
hWnd = GetActiveWindow() 'ここが違う Wnd_STYLE = GetWindowLong(hWnd, GWL_STYLE) Wnd_STYLE = Wnd_STYLE And (Not WS_SYSMENU) SetWindowLong hWnd, GWL_STYLE, Wnd_STYLE DrawMenuBar hWnd
End Sub |
こちらの方法であれば、確実にウィンドウの取得が出来そうなので…
|
|
|
|
chippu
Sr. メンバー
オフライン
投稿: 79
I'm a llama!
|
|
Re:VBで・・・・
« 返信 #10 投稿日: 2006/04/28 - 12:19:41 » |
|
できました!!ありがとうございます。 ちなみに Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long) As Long は削除するとエラーになるみたいですよ! 感謝
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:VBで・・・・
« 返信 #11 投稿日: 2006/04/28 - 22:12:59 » |
|
引用:
スミマセン…削除する行を間違えてました
引用:Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long |
↑が削除する行です。
|
|
|
|