読み取り専用の解除

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

読み取り専用の解除

#1 投稿記事 by C1000 »

エディットコントロールの読み取り専用のスタイルをプログラムの中から解除したいのですがどのようにすれば出来るでしょうか?
NoWest
記事: 264
登録日時: 2005年5月31日(火) 10:52
お住まい: 高知
連絡する:

Re: 読み取り専用の解除

#2 投稿記事 by NoWest »

> エディットコントロールの読み取り専用のスタイルをプログラムの中から解除したいのですがどのようにすれば出来るでしょうか?
ウィンドウスタイルを変更したい場合はSetWindowLong関数にGWL_STYLEを指定して新しいスタイルを入れてやれば変更できます。
しかしながら、ウィンドウスタイルを途中で変える場合Windowsのシステムがこちらが意図していない値を追加している場合があるので、新しいスタイルを追加する場合は変更前のウィンドウスタイルにORで新しいスタイルを追加し、スタイルを削除する場合は変更前のスタイルに除きたいスタイルをNAND(Not And)しなければいけません。

例えば最大化ボタンをウィンドウスタイルから除きたい場合、以下のようにします。

コード: 全て選択

Dim Style As DWord
Style=GetWindowLong(hMainWnd,GWL_STYLE)
SetWindowLong(hMainWnd,GWL_STYLE,Style And (Not(WS_MAXIMIZEBOX)))
あとは「エディットボックスの読み取り専用」ですが、ヘルプを見るとES_READONLYと載っていますのでこれをスタイルから除けばよいでしょう。


余談ですが、単純にエディットボックスに入力をさせたくない場合、EnableWindowが使えます。ヘルプで調べてみてください。
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

#3 投稿記事 by C1000 »

このように追加しましたが解除されません。

コード: 全て選択

	Dim Style As DWord
	Style=GetWindowLong(hEdit,GWL_STYLE)
	SetWindowLong(hEdit,GWL_STYLE,Style And (Not(ES_READONLY)))
KICO
記事: 57
登録日時: 2005年12月13日(火) 17:42

Re: 読み取り専用の解除

#4 投稿記事 by KICO »

何時も、お世話に成っています。

同じ内容の質問が http://forums.belution.com/ja/vc/000/134/12s.shtml に在りました。

読み取り専用の設定・解除は、SendMessage関数で行うようです。
SendMessage(hWnd, EM_SETREADONLY, mode, 0) 'mode: TRUE= 設定, FALSE= 解除

"EM_SETREADONLY"だけが例外で、SetWindowLong関数では変更出来ないのでしょうか、
まだ他にも幾つか有るのでしょうか?


宜しくお願いします。
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

#5 投稿記事 by C1000 »

出来ました。KICOさん、NoWestさんありがとうございました。
返信する