PDA

View Full Version : Space در تکست باکس



Veteran
چهارشنبه 24 اسفند 1390, 14:52 عصر
سلام دوستان
یک برنامه داریم که یک تکست باکس روی فرم هست و کاری کردیم که کاربر نتونه توی تکست باکس (فضا خلی) Space بزنه
ایا راهی هست که این رو دور زد ؟
مثلا میشه با گرفتن هندل و ارسال یک متن به اون تکست باکس و از این دسته از کد ها این مشکل رو دور زد ؟:متفکر:

Javad-2010
چهارشنبه 24 اسفند 1390, 15:26 عصر
کاری کردیم که کاربر نتونه توی تکست باکس (فضا خلی) Space بزنه

چه کاری کردید ؟


ایا راهی هست که این رو دور زد ؟

توضیح بده تا دوستان بتونند جواب شما رو بدن .

Veteran
چهارشنبه 24 اسفند 1390, 15:38 عصر
عزیزم فرض کن کاری کردیم که توی تکست باکس کلید Space کار نکنه دیگه.
روش های مختلفی داره
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then KeyAscii = 0
End Sub

میخوایم ببینم روشی چیزی هست که بشه دورش زد ؟
یک نکته توی تکست باکس نمیشه چیزی Paste کرد

محسن واژدی
چهارشنبه 24 اسفند 1390, 15:55 عصر
سلام
زیاد بررسی نکرده ام اما ممکن است امکان پذیر باشد،
برای اینکه کاربر نتواند با روش های مختلف کاراکتر ممنوع شده مانند Space را به text-box وارد کند میتوانید کدهایی را در رویداد Change تعریف کنید که در صورت یافت شدن کاراکتر space آنرا حذف کند
یا در کل text-box را هوک کرده باشیم که از پذیرفتن کاراکتر space در همه شرایط جلوگیری شود

موفق باشید

Veteran
چهارشنبه 24 اسفند 1390, 18:38 عصر
اگر امکانش هست ی تست بزنید راهی هست این مشکل رو دور زد یا نه

setroyd
چهارشنبه 24 اسفند 1390, 18:44 عصر
شما میتونی بزاری وارد کنه و تو رویداد change هی پاک کنیش ولی 100% میشه جلوشو گرفت .

Veteran
چهارشنبه 24 اسفند 1390, 18:47 عصر
من نمیخوام که کاری کنم طرف Space نزنه.
ی برنامه هست که ی جای اون نمیزاره Space بزنی
منم نیاز دارم انجا بتونم Space بزنم حالا میخوام ببینم راهی هست که این مشکل رو حل کرد ؟
مثلا خودمون یک برنامه بنویسیم یک تکست باکس داشته باشیم که متن رو از تکست باکس خودمون به اون برنامه ارسال کنیم با گرفتن هندل وا اینجور چیزا
شاید بشه ؟ اما من اینو بلد نیستم که تست کنم شما تست کنین اگر شد ی نمونه سورس بزارین

AbbasVB
چهارشنبه 24 اسفند 1390, 18:54 عصر
ببین با Paste کردن متن داخل Text میشه این کار رو کرد؟

Veteran
چهارشنبه 24 اسفند 1390, 18:54 عصر
نمیزاره Paste کنیم توی تکست باکس

سید حمید حق پرست
چهارشنبه 24 اسفند 1390, 19:23 عصر
برنامه رو بزار اینجا تا ببینم میتونم کاری براتون انجام بدم
با چی نوشته شده؟


یا علی (ع)

Veteran
چهارشنبه 24 اسفند 1390, 19:37 عصر
نمیتونم برنامه رو بزارمن حجم زیاده هست.
شما ی تکست باکس بیار
اینو بزار
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then KeyAscii = 0
End Sub


بعد حالا سعی کن با ی برنامه دیگه به تکست باکس متن ارسال کنی .

سید حمید حق پرست
چهارشنبه 24 اسفند 1390, 21:11 عصر
اینطوری نمیشه که . باید برنامه دم دست باشه تا بررسیش کنیم . ببینم چطوری با چه کدی اینکارو کرده . شاید از ریپلاس استفاده کرده باشه یا ...

موفق باشی


یا علی (ع)

barnamenevisforme
چهارشنبه 24 اسفند 1390, 23:06 عصر
اینطوری نمیشه که . باید برنامه دم دست باشه تا بررسیش کنیم . ببینم چطوری با چه کدی اینکارو کرده . شاید از ریپلاس استفاده کرده باشه یا ...


مهندس شما از هر روشی که احساس میکنید جلوی ورود space گرفته شده توی برنامه اول استفاده کنید.بعد با استفاده از یه برنامه دیگه پاد این تکنیک رو به کار ببرید.اینجوری نیازی به وجود برنامه اصلی نیست.

m.4.r.m
چهارشنبه 24 اسفند 1390, 23:35 عصر
ببین می تونیی به جای space از کد ترکیبی alt+255 استفاده کنی تست کردی ؟
چون جلوی کد های ترکیبی رو فکر نکنم به ذهن برنامه نویس برسه تا اونو بلوک کنه یه تست بزن من رو این کد زدم جواب داد

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then KeyAscii = 0
End Sub


وقتی Alt+255 رو میزنی space میندازه

Veteran
چهارشنبه 24 اسفند 1390, 23:59 عصر
ممنون اما نشد.
اون کدی رو هم که گذاشتم برای نمونه بود برای دوستی که سوال کردن چجوری کاری میکنی که space کار نکنه.

ASedJavad
پنج شنبه 25 اسفند 1390, 00:15 صبح
آخه کاملا بستگی داره به کدی که اون نرم افزار استفاده کرده.
بستگی به کدش ممکنه بشه دورش زد و ممکنه نشه دورش زد.
مثلا اگه تو رویداد کی پرس نوشته شده باشه، راحت میشه دورش زد
(مثلا اول هندلش رو بدست میاریم بعد متن اون پنجره رو عوض میکنیم)
ولی اگه تو رویداد change نوشته شده باشه، معلوم نیست به این راحتی بشه دورش زد.

Veteran
پنج شنبه 25 اسفند 1390, 00:20 صبح
بابا مشکل من اینجاست که کار با هندل و این چیزا رو درست حسابی بلد نیستم.وگرنه تست مکیردم

مثلا اول هندلش رو بدست میاریم بعد متن اون پنجره رو عوض میکنیم
میشه ی برنامه بنویسین که ی تکست باکس داشته باشه بعد توی کی پرس از زدن Space جلوگیری بکنید بعد با ی برنامه دیگه متنشو رو عوض کنید ؟

barnamenevisforme
پنج شنبه 25 اسفند 1390, 00:20 صبح
سلام

اگه تو رویداد کی پرس نوشته شده باشه، راحت میشه دورش زد
(اول هندلش رو بدست میاریم بعد متن اون پنجره رو عوض میکنیم
به فرض تحقق این شرط باید چکار کرد؟
ممنون

ASedJavad
پنج شنبه 25 اسفند 1390, 02:15 صبح
سلام


میشه ی برنامه بنویسین که ی تکست باکس داشته باشه بعد توی کی پرس از زدن Space جلوگیری بکنید بعد با ی برنامه دیگه متنشو رو عوض کنید ؟

شما یه فرم درست کنید توش یه text1 بذارید و یه Command1 بعد این کد رو بنویسید:

Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long

Private Sub Command1_Click()
SetWindowText Text1.hwnd, "Befarma: OK?"
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then KeyAscii = 0
End Sub


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

Veteran
پنج شنبه 25 اسفند 1390, 02:53 صبح
خب فرض کنین توی یک پنجره دیگه هست اونوقت چجوری میشه ؟

سید حمید حق پرست
پنج شنبه 25 اسفند 1390, 02:56 صبح
سلام دوباره
همانطور که گفتم شاید از ریپلس استفاده کرده باشه که اگه اینطوری باشه که نه با روش اقا جواد و نه کپی پست کردن متن میتونیم space بزاریم
اینم نمونه برنامه با ریپلاس :

موفق باشی


یا علی (ع)

ASedJavad
پنج شنبه 25 اسفند 1390, 05:35 صبح
خب فرض کنین توی یک پنجره دیگه هست اونوقت چجوری میشه ؟

راه کلیش همینه
فقط مشکل اینه که وقتی با ویبی یه پروژه میسازم که توش یه تکست باکس داره و بعد ازش فایل اگزه میسازم، دیگه نمیتونم هندل تکست باکس رو بدست بیارم.



همانطور که گفتم شاید از ریپلس استفاده کرده باشه که اگه اینطوری باشه که نه با روش اقا جواد و نه کپی پست کردن متن میتونیم space بزاریم

سخن شما هم تا حدودی درسته.
البته ربطی به ریپلیس کردن نداره بلکه بیشتر مربوط میشه به اینکه برنامه کی میاد اسپیس ها رو حذف میکنه!

Veteran
پنج شنبه 25 اسفند 1390, 09:11 صبح
تونستم Space بندازم هندل رو پیدا کردم و متن رو ارسال کردم به تکست باکسش اما برنامه هوشمند بود. فهمید, نذاشت برم به مرحله بدی.
تشکر از دوستان

Javad-2010
پنج شنبه 25 اسفند 1390, 09:55 صبح
تونستم Space بندازم هندل رو پیدا کردم و متن رو ارسال کردم به تکست باکسش

از چه کدی استفاده کردی ؟

Veteran
پنج شنبه 25 اسفند 1390, 10:47 صبح
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Const WM_SETTEXT As Long = &HC

Private Sub Command1_Click()
Hendel = FindWindow(vbNullString, "Register")
If Hendel <> 0 Then
SetForegroundWindow Hendel
End If
Dim tWnd&, bWnd&
Dim lMainHwnd&
Dim lEdit1&

lMainHwnd = FindWindow("Notepad", vbNullString)
Print lMainHwnd
lEdit1 = FindWindowEx(lMainHwnd, 0&, "Edit", vbNullString)
SendMessage lEdit1, WM_SETTEXT, 0&, "New text string"
End Sub

m.4.r.m
پنج شنبه 25 اسفند 1390, 12:33 عصر
سلام دوباره
همانطور که گفتم شاید از ریپلس استفاده کرده باشه که اگه اینطوری باشه که نه با روش اقا جواد و نه کپی پست کردن متن میتونیم space بزاریم
اینم نمونه برنامه با ریپلاس :

موفق باشی


یا علی (ع)


من تو این برنامه تونستم space بزنم با ترکیب کلید های ALT+255 می تونی تست کنی خودت البته فونت text1 رو باید بزاری تو تاهوما .

محسن واژدی
جمعه 26 اسفند 1390, 10:10 صبح
من تو این برنامه تونستم space بزنم با ترکیب کلید های ALT+255 می تونی تست کنی خودت البته فونت text1 رو باید بزاری تو تاهوما .

سلام
کد زیر را بررسی کنید:

Private Sub Text1_Change()
On Error Resume Next
Dim vd$
With Text1
If Not InStr(1, .Text, " ") = 0 Or Not InStr(1, .Text, Chr(160)) = 0 Then
.Tag = .SelStart
vd$ = .Text
vd$ = Replace(vd$, " ", Empty): vd$ = Replace(vd$, Chr(160), Empty)
.Text = vd$
.SelStart = IIf(CLng(.Tag) - 1 > 0, CLng(.Tag) - 1, 1)
End If
End With
End Sub

موفق باشید

سید حمید حق پرست
جمعه 26 اسفند 1390, 17:03 عصر
من تو این برنامه تونستم space بزنم با ترکیب کلید های ALT+255 می تونی تست کنی خودت البته فونت text1 رو باید بزاری تو تاهوما .
فایل زیر را بررسی کنید

موفق باشی


یا علی (ع)

m.4.r.m
جمعه 26 اسفند 1390, 19:35 عصر
سلام
کد زیر را بررسی کنید:

Private Sub Text1_Change()
On Error Resume Next
Dim vd$
With Text1
If Not InStr(1, .Text, " ") = 0 Or Not InStr(1, .Text, Chr(160)) = 0 Then
.Tag = .SelStart
vd$ = .Text
vd$ = Replace(vd$, " ", Empty): vd$ = Replace(vd$, Chr(160), Empty)
.Text = vd$
.SelStart = IIf(CLng(.Tag) - 1 > 0, CLng(.Tag) - 1, 1)
End If
End With
End Sub

موفق باشید


این قطعه کد عالی بود ، هیچ کدوم از ترفند های من عمل نکرد . مرسی