テキストボックスの文字を消させない


楠田街は東の方です。  2004-02-12 10:27:07  No: 81971  IP: [192.*.*.*]

Outlookで本文が表示されている部分の用に部分選択やコピーができるが
本文自体をいじれないような設定を行いのたいのですが、またEnableと
Visibleを使用せずに実装できるのでしょうか?お教えください。

編集 削除
ねろ  2004-02-14 20:23:27  No: 81972  IP: [192.*.*.*]

始めに文字をどのようにセットするのか、仕様が分からないのですが
テキストボックスとボタンを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。

編集 削除
oku  URL  2004-02-15 01:22:48  No: 81973  IP: [192.*.*.*]

もしくは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

編集 削除
nanashi  2004-02-16 15:56:36  No: 81974  IP: [192.*.*.*]

API使ってもコピペは出来てしまうみたいですね……(^^;

編集 削除
Kaz  2004-02-18 23:42:56  No: 81975  IP: [192.*.*.*]

TextBoxのプロパティにLockedっちゅうのがあります。
これをTrueに設定したのではダメですか?
効用についてはヘルプを引いてみてください。

編集 削除
ねろ  2004-02-19 11:27:46  No: 81976  IP: [192.*.*.*]

コピーを許すとペーストが止まらない
ペーストを止めるとコピーも止まる
コピーとペーストは裏と表。
諦めなさい。
Changeでフックして元に戻が一番。

編集 削除
魔界の仮面弁士  2004-02-19 12:43:55  No: 81977  IP: [192.*.*.*]

LockedプロパティをTrueにした上で、WM_PASTEメッセージを握りつぶしてみるとか。

編集 削除
ねろ  2004-02-19 18:25:00  No: 81978  IP: [192.*.*.*]

>LockedプロパティをTrueにした上で、WM_PASTEメッセージを握りつぶしてみるとか。
なるほどそれだとText.Boxが一瞬チラッと変わることが無いですか。
話は変わりますが、Text.BoxのChangeイベントの中でUNDOメッセージを投げると
えらい目にあいますね。

編集 削除