PDA

View Full Version : سوال: سؤال در مورد فرم و تکست



Hassan2500
سه شنبه 26 اردیبهشت 1391, 13:24 عصر
سلام
1- من میخوام اگه فرم رو با موس گرفتم بتونم تکونش بدم ولی در حالت عادی باید برای تکان دادن فرم نوار آبی بالای فرم رو گرفت کدش چی میشه

2- چه کدی باید نوشته شود که اگر فاصله بین هر حرف تکست1 از یکی بیشتر شد چه در پیست چه در نوشتن فاصله یکی بشود و فوکوس هم سرجایش بماند و به اول یا آخر تکست نپرد

3- چه کدی بنویسم که اگه سه خط که بصورت vbnewline در تکست1 بودند رو کپی کردم در تکست2 این سه خط بصورت یک خط شوند و فاصله شان که از vbnewline بوجود می آید از بین رود در ضمن مولتی لاین دو تکست True است

مثال
تکست1
ایران
کشور
من

تکست2
ایران کشور من

محسن واژدی
سه شنبه 26 اردیبهشت 1391, 13:33 عصر
1- من میخوام اگه فرم رو با موس گرفتم بتونم تکونش بدم ولی در حالت عادی باید برای تکان دادن فرم نوار آبی بالای فرم رو گرفت کدش چی میشهسلام علیکم
کد زیر را در مادول فرم کپی کنید:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)



On Error Resume Next



If Button = vbKeyLButton Then

Call ReleaseCapture

SendMessage Me.hwnd, &HA1, 2, 0&

End If
End Sub


2- چه کدی باید نوشته شود که اگر فاصله بین هر هرف تکست1 از یکی بیشتر شد چه در پیست چه در نوشتن فاصله یکی بشود و فوکوس هم سرجایش بماند و به اول یا آخر تکست نپردکد زیر را بررسی کنید:
Private Sub Text1_Change()
Dim iSS%, iSL%
iSS% = Text1.SelStart

If InStr(1, Text1, Space(2)) > 0 Then
Do
Text1 = Replace(Text1, Space(2), " ")
Loop Until InStr(1, Text1, Space(2)) = 0
End If
Text1.SelStart = iSS%
End Sub


3- چه کدی بنویسم که اگه سه خط که بصورت vbnewline در تکست1 بودند رو کپی کردم در تکست2 این سه خط بصورت یک خط شوند و فاصله شان که از vbnewline بوجود می آید از بین رود در ضمن مولتی لاین دو تکست True است کدی مشابه زیر:
Private Sub Text2_Change()
If InStr(1, Text2, vbNewLine) > 0 Then
Text2 = Replace(Text2, vbNewLine, " ")
End If
End Sub
البته باید در این کد دقت بیشتری شود

موفق باشید

Hassan2500
سه شنبه 26 اردیبهشت 1391, 23:21 عصر
کد سؤال1 و 3 بخوبی کار میکنه اما کد سؤال2 وقتی فوکوس میان حروف قرار میگیره و دکمه فاصله رو میگیریم فوکوس بحرکت درمی آد من میخام فوکوس بحرکت در نیاد ولی اگر بین دو حرف قرار گرفت که چسبیده بودند فاصله بندازه و بعد سرجاش بمونه

محسن واژدی
چهارشنبه 27 اردیبهشت 1391, 10:10 صبح
کد سؤال1 و 3 بخوبی کار میکنه اما کد سؤال2 وقتی فوکوس میان حروف قرار میگیره و دکمه فاصله رو میگیریم فوکوس بحرکت درمی آد من میخام فوکوس بحرکت در نیاد ولی اگر بین دو حرف قرار گرفت که چسبیده بودند فاصله بندازه و بعد سرجاش بمونه
بله، طبیعتا اگر فاصله ها را حذف کنیم متن کوتاه تر میشود، البته کرت سرجایش است و این کلمات هستند که عقب میروند، و تعیین اینکه کرت قبلا بر روی کدام کلمه قرار داشته مشکل میشود

Hassan2500
چهارشنبه 27 اردیبهشت 1391, 11:15 صبح
آقای واژدی میشه گفت اگه فوکوس وسط دو حرفی قرار گرفت که بهم چسبیده بودن و دکمه فاصله رو زدیم یه فاصله بینشون بندازه و اگه یه فاصله داشتند دیگه دکمه فاصله کار نکنه میشه این رو به کد سؤال 2 اضافه کنی

محسن واژدی
چهارشنبه 27 اردیبهشت 1391, 14:57 عصر
سلام
نمونه زیر را بررسی کنید

برای استفاده کافی است مادول همراه نمونه را به برنامه اضافه کنید، و دو کد زیر را در رویداد های Change و KeyPress شی Text-Box قرار دهید:


Private Sub Text1_Change()
CheckTextBoxContent Text1
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
CheckTextBoxKeyPress Text1, KeyAscii
End Sub


روال CheckTextBoxContent را در رویداد Change و CheckTextBoxKeyPress را در KeyPress هر text-boxیی که میخواهید space را در آن محدود کنید قرار دهید

موفق باشید