سلام
من کاری کرده ام که حروف انگلیسی و بعضی علامتها مثل(+ـ×÷^٪|":) در Text نوشته نشوند و فقط فارسی نوشته شود اما حروف انگلیسی و این علامتها داخل تکست Paste میشوند چکار کنم حتی Paste هم نشوند
سلام
من کاری کرده ام که حروف انگلیسی و بعضی علامتها مثل(+ـ×÷^٪|":) در Text نوشته نشوند و فقط فارسی نوشته شود اما حروف انگلیسی و این علامتها داخل تکست Paste میشوند چکار کنم حتی Paste هم نشوند
میتونی در رخداد Change تکس باکس بنویسی :
r=clipboard.gettext
if r <> "" then clipboard.clear
دوست عزیز برنامه کار نمکند اگر میشه سورس اونو برام بزار
چطور کار نمیکنه من تست کردم کار کردم این 3 خط برنامه که دیگه نمیخواد سورسشو بذارم چون دیگه چیزی از این ساده تر نیست بیا :
Private Sub Text1_Change()
r = Clipboard.GetText
f = Text1.Text
If f = r Then Text1.Text = ""
End Sub
هر کاری میکنم برنامه کار نمیکند بمحض Paste کردن حروف انگلیسی برنامه این ارور را میدهد Run-time error "521": Canot open Clipboard
رویداد Changeپس از انکه تغییری در متن textbox ایجاد شد اتفاق می افتد پس قرار گیری دستورات فوق تاثیری در جلوگیری از ورود متن ایجاد نمیکندمیتونی در رخداد Change تکس باکس بنویسی :
r=clipboard.gettext
if r <> "" then clipboard.clear
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.
من میخوام فقط حروف انگلیسی Paste نشوند و بعضی علامتهاو در ثانی بمحض راست کلیک روی تکست گزینه Paste غیر فعال شده باشد نه ابتدا متنی نوشته شود بعد گزینه Paste غیر فعال شده باشد
بهتر است منوی سفارشی ایجاد کنید که در مواقع لزوم گزینه Paste و هرگزینه دیگر آن غیرفعال یا فعال شود
برای ایجاد منوی سفارشی ابتدا یک منو حاوی گزینه هایی مانند Copy/Paste ایجاد کنید سپس آنرا در رویداد MouseDown قرار دهید که به محض فشرده شدن کلیک راست منوی شما بجای منوی استاندارد ظاهر شود
موفق باشید
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.
خب وقتی چیزی paste بشه رخداد change اتفاق می افته همین کدی که من گفتم درسته شما بجای text1 اسم تکس باکستو بذار .... با این کد نه با کنترل وی پیست میشه نه با رایت کلیک
وقتی رویداد Change اتفاق می افتد هنوز Clipboard گشوده شده توسط Paste بسته نشده است به همین دلیل با این خطا مواجه میشویدنوشته شده توسط hr0694
برای رفع این خطا بایستی clipboard را توسط CloseClipboard ببندید، به صورت زیر:
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Sub Text1_Change()
Dim r$
CloseClipboard
r = Clipboard.GetText
f = Text1.Text
If f = r Then Text1.Text = ""
End Sub
البته همانگونه که قبلا" نیز عرض شد این روش جوابگوی مشکلتان نیست، البته میتوانید تابعی بنویسید که پس از ایجاد تغییر در TextBox بررسی میکند محتویات textbox را کاراکتر به کاراکتر بررسی میکند که اگر کاراکتر مورد بررسی در لیست کاراکترهای مجاز وجود نداشته باشد از textbox حذف شود
موفق باشید
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.
اخه این کدا کاری داره که کسی نمیتونه کمک کنه !!!!
بیا اینم کد اگه یکم خودت فک میکردی میتونستی بنویسی
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
با API هم میشد ولی این را دست تره
!!!!!!!اخه این کدا کاری داره که کسی نمیتونه کمک کنه !!!!
.
.
.
بله، توسط قسمتی از این کد میتوان میانبر های مختلف را غیرفعال کرد اما rightclick همچنان فعال است
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
موفق باشید
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.
دوست عزیز خواهش میکنم اگر میشود سورس این کدی را که نوشتی را برام بزار چون من این کد را نوشتم باز کار نکرد بعد یک سؤال دارم هنگامیکه سورس این برنامه را قرار دادی حروفی که میخواهم داخل تکست Paste نشوند را باید کجای این کد بنویسم منظورم حروف انگلیسی و بعضی علامتها است (فکر کنم اگر سورس باشد بهتر یاد میگیرم چون من در برنامه نویسی مبتدی هستم)
نمیدونم کدام پست را منظور تان است اما کد زیر کاراکترهای مورد نظر را که میتواند حروف انگلیسی باشد از textbox حذف میکند:دوست عزیز خواهش میکنم اگر میشود سورس این کدی را که نوشتی را برام بزار چون من این کد را نوشتم باز کار نکرد بعد یک سؤال دارم هنگامیکه سورس این برنامه را قرار دادی حروفی که میخواهم داخل تکست Paste نشوند را باید کجای این کد بنویسم منظورم حروف انگلیسی و بعضی علامتها است (فکر کنم اگر سورس باشد بهتر یاد میگیرم چون من در برنامه نویسی مبتدی هستم)
Public Sub DelExtraChrs(tTextBox As TextBox, InvalidChrsGroup$)
Dim i&, text$
text$ = tTextBox
For i = 1 To Len(InvalidChrsGroup$)
text$ = Replace(text$, Mid(InvalidChrsGroup$, i, 1), Empty, , , vbTextCompare)
Next i
tTextBox = text$
End Sub
نمونه:
Private Sub Command2_Click()موفق باشید
DelExtraChrs Text1, "abcde"
End Sub
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.
سورس زیر میتواند جوابگوی مشکلتان باشد
در این سورس بصورت پیش فرض از paste شدن حروف انگلیسی جلوگیری میشود، کلمات جدید را به ثابت ExtraChrs$ (موجود در ماژول) اضافه کنید
توجه داشته باشین بدلیل هوک شدن TextBox بجای فشار دادن دکمه Stop وی بی، برای بستن پنجره اجرا شده بر روی دکمه X (دکمه قرمز رنگ) پنجره کلیک کنین درغیر اینصورت ممکن هست وی بی ناگهانی خارج شود (بدلیل عدم اجرای unhook)
موفق باشید
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.
دستتان درست الآن برنامه بخوبی کار میکند و از شما جناب mohsenvj تشکر میکنم
دوست عزیز این کد رو خود microsoft گذاشته بود و من تو archive داشتم که گذاشتم برای شما هم past فعال ولی کار نمیکنه . خب منم همین کارو میکرد برنامم شما یه تست بکن بعدا بگو نمیشه ! من گفتم با api هم میشه ولی یکم سخت میشه همین کد رو منم داشتم ولی نذاشتم
تازه این کد زیاد خوب نیست. سرعت پایین به دلیل چک کردن ولی از این نظر که میشه تعیین کرد چه حروفی رو نشون نده خوبه ولی اگه کلا میخوای past کار نکنه کدی که گزاشتم بهتره چک کنید بعدا قضاوت کنید
سلام علیکم
بله Paste فعال است اما کار میکند یعنی متن دریافتی به به textbox می افزاید، همچنین بنده قبل از تست کردن نظری نمیدهم
این یک کد استاندارد است البته اگر منظورتان از سرعت پایین بکارگیری حلقه در آن است، چون این حلقه فقط به تعداد کاراکترهای بکارگرفته در آن فعال میشود و هم فقط در زمان Paste اجرا میشود اصولا" تاثیری در زمان برنامه نمیگذارد، اما اصولا" هوک کردن زیاد پیشنهاد نمیشود مگر آنکه کاربر مجبور به استفاده از آن باشدنوشته شده توسط setroyd
بله چک کردم و بعدا" قضاوت کردم، همانگونه که قبلا" هم عرض شد بخشی برای غیرفعال نمودن میانبر مفید است اما قسمتی که مدنظر شماست یعنی از paste جلوگیری نمیکندنوشته شده توسط setroyd
موفق باشید
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.
سلام
با اجازه من كدتون رو يكم تكميل كردم، چون ويندوز هنوز كليد Shift+Insert رو هم از زمان داس به ارث مي بره
Private Sub text1_KeyDown(KeyCode As Integer, Shift As Integer)
If (Shift = vbCtrlMask And (Chr(KeyCode) = "v" Or Chr(KeyCode) = "V")) Or _
(Shift = vbShiftMask And KeyCode = 45) Then
Text1.Locked = True
Else
Text1.Locked = False
End If
End Sub
اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com
بله کاملتر شد مرسی .
سلام دوستان
یه سوال داشتم، چجوری میشه کلا گزینه paste رو غیرفعال کرد؟
با lock کردن تکست باکس فقط از نوشتن و cut جلوگیری میشه!
یا علی (ع)