ايران ويج

نسخه‌ی کامل: غیر فعال کردن گزینه Cut & Copy روی کلیک راست تکست باکس
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
چه جوری میشه گزینه Cut و Copy رو روی کلیک راست تکست باکس غیر فعال کرد؟ مثل تکست باکس پسورد یاهو مسنجر !!!
سلام
یه راه ساده اینه که یه تایمر بزاری و اینترول رو 1 بدی بعد هم کد زیر

کد:
If bRCRJ = True Then
        Text1.Enabled = False
        Text1.Enabled = True
   End If

یه متغییر عمومی هم تعریف می کنی

کد:
Dim bRCRJ As Boolean
کد زیر رو هم در MouseDown تکست باکس مورد نظر می نویسی
کد:
If Button = 2 Then
        bRCRJ = True
    Else
        bRCRJ = False
    End If
موفق باشی
ممنون دوست عزیز
اما استفاده از یه تایمر با Interval = 1 یه خورده ناجوره و کار مورد نظر ما رو هم انجام نمیده!!!
من با استفاده از Hook اون گزینه ها رو غیر فعال کردم یعنی پیغام فرستاده شده رو به Null تنظیم میکنم و Cut , Copy , Past و حتی کلیک راست رو هم غیر فعال کردم اما وقتی روی تکست باکس راست کلیک میشه گزینه Cut , Copy روشن هستند هر چند عملا کاری انجام نمیدن
حالا من میخوام این دو تا رو از منوی راست کلیک تکست باکس به حالت DISABLED & GRAYED در بیارم!؟ درست مثل منوی راست کلیک برای تکست باکس یاهو مسنجر!
سلام
خوب من که گفتم این یه راه هست. و باز راه های بهتری هم وجود داره
اما تا جایی که من دیدم وقتی passwordChar رو * بزاری دقیقا مثل یاهو میشه !
البته شاید منظورتون این بود که تکست معمولی هم مثل پسورد باشه .
منظورتون این بود ؟

موفق باشی
خوب این کد رو هم ببین
این روش دومه
البته این کلا راست کلیک رو از تکست بر می داره! ارزش دیدن رو داره
البته دارم روی غیر فعال کردن یک گزینه خاص هم کار می کنم . اگه به نتیجه رسید خبرت می کنم .

این کد رو توی یه Modules می نویسی
کد:
Public OldWindowProc As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = (-4)
Public Const WM_USER = &H400

Public Function NoPopupWindowProc(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const WM_CONTEXTMENU = &H7B
    If msg <> WM_CONTEXTMENU Then
    NoPopupWindowProc = CallWindowProc(OldWindowProc, hWnd, msg, wParam, lParam)
    End If
End Function

و این کد رو هم توی فرم
کد:
Private Sub Form_Load()
    OldWindowProc = SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf NoPopupWindowProc)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    SetWindowLong Text1.hWnd, GWL_WNDPROC, OldWindowProc
End Sub
این هم یه راه دیگه
ببین این همونیه که می خواستی ؟ یا نه ؟!

کد:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    If Shift = vbCtrlMask And (Chr(KeyCode) = "v" Or Chr(KeyCode) = "V") Then
        Text1.Locked = True
    Else
        Text1.Locked = False
    End If
End Sub

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbRightButton Then
        Text1.Locked = True
    Else
        Text1.Locked = False
    End If
End Sub

Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Text1.SelLength > 0 Then Text1.SelStart = Text1.SelStart
End Sub

تو این روش copy , cut حذف شده دقیقا مثل تکست پسورد یاهو !
اگه همونی نیست که می خواستی بگو تا بیشتر روش کار کنم
موفق باشی
ممنون
آره منظورم همين بود براي تکست باکس معمولي ميخوام اين کارو بکنم
در واقع يه تکست باکس عددي داشتم که فقط عدد توش تايپ ميشه اما خوب اگه کاربر يه متن رو توش Past ميکرد که نميشد بعد اومدم Past رو به همين روش غير فعال کردم اما ميخوام از توي راست کليک هم غير فعال بشه ( DISABLED & GRAYED ) بشه!؟
و به طور کلي ميخواستم ببينم اين گزينه ها رو چه جوري ميتونم فعال و غير فعال کنم که تو مورد هاي ديگه هم ازشون استفاده کنم!!!
این کد دوم هم تو بعضی از حالت های خاص جواب میده اما حتما روش مناسب تری داره !!
البته کد دوم رو هنوز دقیق نگاه نکردم, نگاه میکنم خبرشو میدم!
بازم ممنون بابت زحماتت
اومدم بگم کد دوم هم مناسب نیست چون مثلا من میخوام فقط گزینه Past رو غیر فعال کنم و مثلا امکان کپی رو بدم به تکست باکس مثل همون Numeric TextBox که گفتم !!!