PDA

View Full Version : سوال: تکرار beep به تعداد مشخص



saleh.hi.62
چهارشنبه 18 شهریور 1388, 20:33 عصر
سلام
من یه برنامه نوشتم که به تعداد مشخص بوق بزنه!!!!!
ولی نمیدونم مشکل کجاست که کار نکمیکنه.


Private Sub Command1_Click()
If Text1.Text < 0 Or Text1.Text > 10 Then
MsgBox "Please Enter a Number Beetwen 1 to 10", vbOKOnly, "Error"
Else

Dim i As Integer
For i = Text1.Text To 1 Step -1
Beep
Next
End If

End Sub

xxxxx_xxxxx
چهارشنبه 18 شهریور 1388, 20:54 عصر
کد درسته و این اتفاق (Beep) رخ میده اما چون توی حلقه قرار داره و با سرعت بالایی انجام میشه متوجه نمیشید. بهتره بجای حلقه از Timer استفاده کنید. به این شکل:


Dim i As Integer

Private Sub Command1_Click()
If Text1.Text < 0 Or Text1.Text > 10 Then
MsgBox "Please Enter a Number Beetwen 1 to 10", vbOKOnly, "Error"
Else
Timer1.Interval = 500
End If
End Sub

Private Sub Timer1_Timer()
If i < 5 Then Beep
i = i + 1
End Sub

البته خودتون یکجایی بعد از تمام شدن کار تایمر Interval اون رو 0 کنید که حافظه رو بیخود اشغال نکنه و یا Enabled اون رو False کنید.

Cancer
چهارشنبه 18 شهریور 1388, 23:35 عصر
Option Explicit
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Private Sub Command1_Click()
Beep 1000, 100
Beep 4000, 100
Beep 2000, 100
Beep 3000, 100
Beep 500, 100
Beep 5000, 100
Beep 1000, 100
Beep 4000, 100
Beep 2000, 100
Beep 6000, 100
Beep 1000, 100
Beep 3000, 100
Beep 2000, 100
Beep 1000, 100
Beep 500, 200
End Sub
Private Sub Form_Load()
Call Command1_Click
End Sub




اینم یه کد باحال

saleh.hi.62
پنج شنبه 19 شهریور 1388, 07:31 صبح
ممنون دوستان ولی اگه کد منو دیده باشین! من تعداد beep رو از ورودی میگیرم و ثابت نیست.
و اگه بخوام با for پیاده سازیش کنم و مشخص باشه داره به تعداد beep میزنه چه جوری؟

این سورس کد که ضمیمه کردم.

ali_habibi1384
پنج شنبه 19 شهریور 1388, 09:57 صبح
این کد رو امتحان کنید. من امتحان کردم:


Dim s As Integer
Private Sub Command1_Click()
If Text1.Text < 0 Or Text1.Text > 10 Then
MsgBox "error"
Else:
s = 1
Timer1.Enabled = True
End If
End Sub
Private Sub Timer1_Timer()
If s >= Text1.Text Then Timer1.Enabled = False
Beep
s = s + 1
End Sub

saleh.hi.62
پنج شنبه 19 شهریور 1388, 12:56 عصر
دوست عزیز ممنون ولی این کد اصلا beep نمیزنه!!!!!

butterfly8528
پنج شنبه 19 شهریور 1388, 16:17 عصر
سلام دوست عزیز .

بفرما فقط کافیه بعد ازbeep یه وقفه بیندازید .


Private Sub Pause(interval)
Dim X
X = Timer
Do While Timer - X < Val(interval)
DoEvents
Loop
End Sub





Private Sub Command1_Click()
If Text1.Text < 0 Or Text1.Text > 10 Then
MsgBox "Please Enter a Number Beetwen 1 to 10", vbOKOnly, "Error"
Else

Dim i As Integer
For i = Text1.Text To 1 Step -1
Beep
Call Pause(1)
Next
End If
End Sub


موفق باشید .