Outlookで本文が表示されている部分の用に部分選択やコピーができるが
本文自体をいじれないような設定を行いのたいのですが、またEnableと
Visibleを使用せずに実装できるのでしょうか?お教えください。
始めに文字をどのようにセットするのか、仕様が分からないのですが
テキストボックスとボタンを1つ用意して、
'ボタンを押すと変更モードと、非変更モードがトグルで変わる
Private Sub Command1_Click()
If Text1.ForeColor = RGB(255, 0, 0) Then
Text1.ForeColor = RGB(0, 0, 0)
Else
Text1.ForeColor = RGB(255, 0, 0)
End If
End Sub
Private Sub Text1_Change()
Static TextBack As String
If Text1.ForeColor = RGB(255, 0, 0) Then
Text1.Text = TextBack
Exit Sub
End If
TextBack = Text1.Text
End Sub
こんな感じでは。
一様フォントカラーで変更できる出来ないを決めていますが
もちろんフラグで制御してもOK。
もしくはAPIでやる?
Private Declare Function SendMessage Lib _
"user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Long) As Long
Private Const EM_SETREADONLY = &HCF '読み込み専用にする
Private Sub Command1_Click()
'テキストボックスを編集できないようにする。
Call SendMessage(Text1.hwnd, EM_SETREADONLY, -1, 0)
End Sub
Private Sub Command2_Click()
'テキストボックスを編集できるようにする
Call SendMessage(Text1.hwnd, EM_SETREADONLY, 0, 0)
End Sub
API使ってもコピペは出来てしまうみたいですね……(^^;
編集 削除TextBoxのプロパティにLockedっちゅうのがあります。
これをTrueに設定したのではダメですか?
効用についてはヘルプを引いてみてください。
コピーを許すとペーストが止まらない
ペーストを止めるとコピーも止まる
コピーとペーストは裏と表。
諦めなさい。
Changeでフックして元に戻が一番。
LockedプロパティをTrueにした上で、WM_PASTEメッセージを握りつぶしてみるとか。
編集 削除>LockedプロパティをTrueにした上で、WM_PASTEメッセージを握りつぶしてみるとか。
なるほどそれだとText.Boxが一瞬チラッと変わることが無いですか。
話は変わりますが、Text.BoxのChangeイベントの中でUNDOメッセージを投げると
えらい目にあいますね。