PDA

View Full Version : سوال: دابل کلیک دکمه کامند و دو سؤال دیگر



hr0694
سه شنبه 15 شهریور 1390, 10:43 صبح
سلام

1- چکار کنم وقتی دکمه کامند دوبار کلیک شد نوشته های داخل تکست پاک شود

2- چه کدی بنویسم وقتی یکی از حروف انگلیسی داخل تکست نوشته شد مثلاً حرف A نوشته های تکست پاک نشود ولی خود A پس از نوشته شدن پاک شود یه کدی شبیه کد زیر باشه اما این کد تمام تکست را پاک میکنه من میخوام فقط حرف A پاک بشه

"" = It Text = "A" Then Text1


3- چه کدی بنویسم وقتی روی تکست دوبار کلیک کردم نوشته های تکست کپی شود

MohammadGh2011
سه شنبه 15 شهریور 1390, 11:22 صبح
سلام علیکم
پاسخ سوال 3

Private Sub Text1_DblClick()
If Text1.SelText <> "" Then
Clipboard.Clear
Clipboard.SetText Text1.SelText
End If
End Sub

hr0694
سه شنبه 15 شهریور 1390, 11:46 صبح
من میخوام تمام متن کپی شود با این کد شما فقط جائی که موس آنجا دوبار رویش کلیک میشود کپی میشود

ramzdar
سه شنبه 15 شهریور 1390, 12:07 عصر
سوال اول: کامندها رویداد دابل کلیک ندارند.در صورت امکان بهتره عوضش کنید و یا از اکتیوایکس استفاده کنید.

سوال دوم:
Private Sub Text1_Change()
For i = 1 To Len(Text1)
a = Mid(Text1, i, 1)
For j = 65 To 90
If a = Chr$(j) Or a = LCase(Chr$(j)) Then
Text1 = Split(Text1, a)(0) & Split(Text1, a)(1)
Text1.SelStart = Len(Text1)
Exit Sub
End If
Next
Next
End Sub

سوال سوم:
Private Sub Text1_DblClick()
Clipboard.Clear
Clipboard.SetText Text1
End Sub

ramzdar
سه شنبه 15 شهریور 1390, 12:13 عصر
اینم یه راه دیگه برای سوال 2 که از یک حلقه For استفاده شده.
Private Sub Text1_Change()
For j = 65 To 90
a = InStr(1, Text1, Chr$(j))
b = InStr(1, Text1, LCase(Chr$(j)))
If a <> 0 Or b <> 0 Then
Text1 = Mid(Text1, 1, a - 1) & Mid(Text1, a + 1)
Text1.SelStart = Len(Text1)
Exit For
End If
Next
End Sub

hr0694
سه شنبه 15 شهریور 1390, 12:20 عصر
جناب Ramzdar هنگام Paste کردن در خود آن Text برای سؤال سوم فاصله ای که بین هر کلمه بوده از بین میرود و کلمات بهم میچسبند

ramzdar
سه شنبه 15 شهریور 1390, 12:39 عصر
نمیدونم.
من تست کردم و درست کار میکنه
لطفاً سورستون رو بذارید که ببینیم چرا اینجوریه.

kitcat_m18
چهارشنبه 16 شهریور 1390, 00:19 صبح
سلام،
واسه سوال اول:



Dim Chek As Integer

Private Sub Command1_Click()

If Chek = 2 Then Chek = 0

Chek = Chek + 1

If Chek = 2 Then MsgBox "ok"

End Sub




واسه سوال دوم:


Dim TXT As String
TXT = Replace(TXT, "A", "")




واسه سوال سوم:
پاسخ داده شده یه کم خودتم رو کد ها عمل تحلیل رو انجام بده!

واسه داداشای گلم:
کار نشد نداره!

موفق باشین:لبخندساده:

ramzdar
چهارشنبه 16 شهریور 1390, 09:41 صبح
واسه سوال اول:


Dim Chek As Integer

Private Sub Command1_Click()

If Chek = 2 Then Chek = 0

Chek = Chek + 1

If Chek = 2 Then MsgBox "ok"

End Sub


به این کدی که نوشتی دقت کردی؟
اگه طرف یه بار روی دکمه کلیک کنه و بعد بره یه ساعت دیگه دوباره رو دکمه کلیک کنه، برنامه Msgbox میده؟ یعنی به حساب شما دابل کلیک میده.

محسن واژدی
چهارشنبه 16 شهریور 1390, 09:59 صبح
سلام علیکم
با اجازه جناب kitcat_m18
کد جواب شماره 1 را بصورت زیر ویرایش کردم و البته به رویداد MouseDown هم منتقل کردم چون اگر همچنان در رویداد click باشد کاربر با فشار دادن هرکلید صفحه کلید هم میتواند دوبار کلیک را اجرا کند


Option Explicit
Dim Chek As Integer
Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Chek = 2 Then Chek = 0
Timer1.Interval = 800
Chek = Chek + 1
If Chek >= 2 Then
Timer1 = False
Chek = 0
MsgBox "Double Click"
Else
Timer1 = True
End If
End Sub

Private Sub Timer1_Timer()
If Chek = 1 Then Chek = 0
End Sub

برای استفاده یک تایمر با نام Timer1 بر روی فرم قرار بدین و کد بالا را در ماژول فرم کپی کنین، البته به این دلیل از تایمر برای حذف تعداد کلیک ها استفاده کردم چون Sleep برنامه را قفل میکرد

موفق باشید

hr0694
چهارشنبه 16 شهریور 1390, 11:32 صبح
سلام جناب Mohsenvj من این کد را در ماژول کپی کردم اما برنامه کار نمیکند

ramzdar
چهارشنبه 16 شهریور 1390, 11:38 صبح
یعنی چی کار نمیکنه؟؟؟!!!

توی ماژول فرم نه یه ماژول جدا. منظور از ماژول فرم، همون بخش کدنویسی خود فرم هست که با دابل کلیک روی اشیاء فرم باز میشه.

از این به بعد اگه کدی براتون کار نکرد، ارورش رو هم بذارید.

hr0694
چهارشنبه 16 شهریور 1390, 11:51 صبح
اتفاقاً توی ماژول جدا کار نمیکنه ولی توی ماژول فرم کار میکنه ولی وقتی تو ماژول فرم کپی میکنم از یه کد دیگه که نوشتم ایراد میگیره و کار نمیکنه از این کد

Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
Private Sub Timer1_Timer()
Dim s As String
s = String(9, 0)
GetKeyboardLayoutName s
If Right(s, 4) = "409" & Chr(0) Then LoadKeyboardLayout "00000429", 1
End Sub

kitcat_m18
چهارشنبه 16 شهریور 1390, 12:13 عصر
سلام مجدد،

با تشکر از جناب Mohsenvj بابت ویرایش کد
Ramz دار عزیز، بهتر بود قبل از اینکه اینقدر سریع پاسخ منو بدین یه مقدار زحمت تحلیل کد هایی که گذاشتم رو می کشیدین درست مثل کاری که آقای Mohsenvj انجام دادن :چشمک:

قرار نیست هر چی که تو وب پیدا می کنیم رو کپی و مستقیما تو برنامه هامون Paste کنیم
موفق باشی

محسن واژدی
چهارشنبه 16 شهریور 1390, 12:16 عصر
احتمالا" از روال Timer1 خطا میگیرد چون نام تایمر مورد استفاده در دابل کلیک نیز Timer1 و نام تایمر فعلی شما نیز همنام با آن است، برای بررسی این موضوع روال Timer1 کد خودتون را در تایمری مثلا" Timer2 کپی کنید

موفق باشید

ramzdar
چهارشنبه 16 شهریور 1390, 12:16 عصر
شاید کدها رو درست وارد نکردی
احتمالاً کدت دو بخشی شده.
مثلاً Timer دو جا هست.
این کد رو بذار تو همین کدی که گذاشتی
If Chek = 1 Then Chek = 0
اینم بذار تو MouseDown مربوط به دکمه
If Chek = 2 Then Chek = 0
Timer1.Interval = 800
Chek = Chek + 1
If Chek >= 2 Then
Timer1 = False
Chek = 0
MsgBox "Double Click"
Else
Timer1 = True
End If

اینم تعریف عمومیه
Dim Chek As Integer

MohammadGh2011
چهارشنبه 16 شهریور 1390, 12:57 عصر
سلام به اساتیدان گرامی

hr0694
من میخوام تمام متن کپی شود با این کد شما فقط جائی که موس آنجا دوبار رویش کلیک میشود کپی میشود
دوست عزیز همون کدی که من در پست2 قرار دادم همون طور که خودتون گفتین اگه دوبار تو تکست باکس کلیک کنید تمام متن کپی میشه.

موفق باشید

hr0694
پنج شنبه 17 شهریور 1390, 10:37 صبح
سلام
اگر میشه این قسمت را برام جابجا کنید(Dim Chek As Integer) چون وقتی قبل Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) نوشته میشه با اون کدی که در پست 13 نوشتم که مربوط نوشتن حروف فارسی است در کنار هم کار نمیکنند

ramzdar
پنج شنبه 17 شهریور 1390, 11:50 صبح
دوست عزیز شما خودت هم یه تلاشی بکنی بد نیست.
این دیگه با خودت. به نظرم بهتره خودت هم یه کمی تلاش کنی و یه دستی به سر و روی کد بکشی.

kitcat_m18 (http://barnamenevis.org/member.php?139522-kitcat_m18) عزیز!
من فقط خواستم یه اطلاعی بدم.
کدی رو گذاشتی منم مثل جناب mohsenvj ادیت کردم ولی ایشون سرعتشون یه کم کولاکه. البته ادیت من با ادیت ایشون فرق داشت. تا اومدم بذارم آقا محسن گذاشته بود. منم که دیدم ایشون کدش بهتره دیگه بیخیال شدم.
اگه باعث ناراحتی شما دوست عزیز شدم عذر میخوام.