PDA

View Full Version : سوال: محدودیت در تکست باکس



RezaS_1354
سه شنبه 09 تیر 1394, 15:05 عصر
سلام خدمت دوستان محترم

من به مدلهای مختلف و غیر عرف برنامه نویسی و اصطلاحاً (من دراوردی) یه عملکرد خاص رو بروی تکست باکس انجام دادم ولی میخاستم نوع راحت و استاندارد این کار و سورس کدش رو اگه از دوستان کسی میدونه راهنمایی کنه

من یه تکست باکس بنام Text1 که بصورت معمولی مثلا داخلش , کاربر مینویسه :

"با عرض سلام خدمت دوستان محترم"

در اینجا میخام در یه تسکت دیکه بنام Text2 این عبارت بدون Space نمایش داده شه به اینصورت :

"باعرضسلامخدمتدوستانمحترم"

و در قسمت بعدی وقتی این جمله رو بدون فاصله ویرایش کرد مثلا اگه به بعضی از حروف برخورد انها رو replace کنه البته در جای خودش مثلا اگه به حرف "م" در هرجای جمله بدون فاصله رسید اونو تبدیل کنه به حرف "ض" به اینصورت :

"باعرضسلاضخدضتدوستانضحترض"

و در قسمت پایانی وقتی محدودیت ایجاد میکنیم برای تکست باکس به اینصورت که فقط عدد نوشته بشه داخلش در روال keypress متاسفانه این روش با Copy/Paste بهم میریزه باید چیکار کرد ؟

البته بخش اول سوالم خیلی مهمتره اگر سه تاش رو هم جواب دادید که بی نهایت ممنون میشم

مثه همیشه منتظر جوابهای انصافاً کار راه انداز و ارزشمند دوستان بزرگوارم هستم

با تشکر

samiasoft
سه شنبه 09 تیر 1394, 15:46 عصر
درود . مواردی که گفتید رو با Replace میتوان انجام داد.
قبل از ایجاد تاپیک یه جستجو میکردید خودتون به راحتی میتونستید اینارو بنویسید .

برای از بین بردن فاصله ها در متن اینطور عمل کنید :

Text2 = Replace(Text1, " ", "")

برای جایگزینی حرف خاص مثلا "م" به "ن" :

Text2 = Replace(Text1, "ن", "م")

ایجاد محدودیت در تکست باکس 1 برای نوشته شدن فقط اعداد :

Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKey0 To vbKey9
Case vbKeyBack, vbKeyClear, vbKeyDelete
Case vbKeyLeft, vbKeyRight, vbKeyUp, vbKeyDown, vbKeyTab

Case Else
KeyAscii = 0
Beep
End Select

End Sub



در مورد بهم ریخته شدن Copy/Paste منظورتون چیه؟

RezaS_1354
چهارشنبه 10 تیر 1394, 11:12 صبح
اقا ممنون از لطف و پاسخت رو راست غیر از کدهای اخرت بقیشو میدونستم ولی خیلی ازت ممنون چرا که این فرهنگ رو مثه سابق اینجا دوباره جا بندازی که هیچ سئوالی بی پاسخ نمونه واسه اینکه وقتی من نوعی بعد از این همه سابقه در اینجا وقتی یه تایپیک جدید میزنم احتمالا سرچ کردم جواب سوالمو یا پیدا نکردم یا اونی نبوده که من احتیاج داشتم
بهر حال بازم ممنون
فقط راجع به کد آخرت که یک تکست رو محدود میکنه من مدل شما رو ندیده بودم خودم اینجوری مینویسم
Dim intLtdNumb As String
intLtdNumb = "1234567890"
'
If KeyAscii > 26 Then
If InStr(intLtdNumb, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
'

ببخشید کد رو تو تگ نذاشتم ولی منظورم این بود که شما وقتی تو یه تکست مینویسی به دلیل وجود کد تو روال keypress محدودیت ایجاد میشه ولی وقتی یه جمله رو از تکست دیگه کپی کنی و روی همون تکست مورد نظر paste کنی اون موقع این کد بکار نمیاد اگه ممکنه اینو توضیح بده
با تشکر

samiasoft
چهارشنبه 10 تیر 1394, 15:55 عصر
کدی که قرار دادم کلا Copy/Paste رو هم غیرفعال میکنه و شما دیگه نمیتونید داخل تکست باکس چیزی جایگذاری کنید.

اما اگر میخواهید کپی کردن و جایگذاری کردن فعال باشه و برای مثال وقتی کلمه "برنامه نویس" رو کپی کردید و میخواهید داخل تکست باکس جایگذاری نشه (چون عدد نیست) در این حالت باید کلیپ برد رو برسی کنید.
یعنی یه تایمر قرار بدید روی فرم که هرلحظه کلیپ برد رو بررسی کنه اگر کلمه ای کپی شده بوده کلیپ برد رو کلا حذف کنه ولی اگر عددی کپی شده بود دست بهش نزنه و کاربر بتونه اونو داخل تکست باکس جایگذاری کنه.