PDA

View Full Version : آموزش: ساخت ماشین حساب بدون استفاده از اشیاء فقط با کد (باحال/بدون دانلود)



www.pc3enter.tk
یک شنبه 22 مهر 1397, 17:01 عصر
سلام عزیزای دل وی بی (vb6)

یک چیز باحال دارم براتون که فکر نکنم جایی دیده باشید.
این هم میتونه برای تازه کارها و هم حرفه ای ها جالب باشه.

من امروز سعی کردم که چه جوری میشه بدون استفاده از دکمه ای که داخل خود وی بی هست ماشین حساب ساده ای ساخت که بشود با آن کار کرد.
که بعد از کمی تلاش و کار روش موفق شدم.

نکته ای که باید بگم این هست که این ماشین حساب حرفه ای نخواستم بسازم فقط برای تمرین بود و اینکه خط به خط کدها را توضیح دادم که کامل سر در بیاورید و دچار گیجی نشید. (البته استاندارد اینو میگه)



فقط فقط فقط کافیه 2 تا دکمه با نام C_Num و C_Fun با index برابر = 0 به صفحه خودتون وارد کنید. و خلاص و بعد کد پایین را کپی و اجرا !


'========'tx=مال تکس باکس
'Num=براي ايجاد شمارش دکمه
'NLeft=براي ذخيره سازي موقيعت چپ دکمه ها
'NTop=مثل بالايي براي ارتفاع دکمه ها
'Hesab=ذخيره سازي اعدادي که به صورت اولين بار وارد شده
'Amal=ذخيره سازي انجام عمليات دکمه
'========
Dim tx As Object, Num, NLeft, NTop, Hesab, Amal


Private Sub C_Fun_Click(Index As Integer)
With tx
If Index = 3 Then 'اگر روي دکمه (=) کليک کرد
Select Case Amal: Case "+": .Text = Hesab + .Text: Case "-": .Text = Hesab - .Text: Case "*": .Text = Hesab * .Text: End Select 'کليه انجام عمليات را اينجا انجام مي دهد
'Amal = ""
Exit Sub: End If
'====================================
Hesab = Val(.Text) 'عدد را وارد اين بکن براي اجراي حساب
Amal = C_Fun(Index).Caption 'نوع عمليات کليک شده را وارد اين متغيير کن براي انجام حساب
tx = "" 'پاک ميکنه براي اينکه بتوني عدد بعدي را وارد کني
End With
End Sub


Private Sub C_Num_Click(Index As Integer)
'If len(tx.Text )> 0 And Amal <> "" Then tx.Text = "" 'اگر تکست باکس خالي نبود و روي دکمه عمليات کليک نشده بود تکست را پاک کن تا عدد بعدي را بتواند وارد کند
tx.Text = tx.Text & C_Num(Index).Caption 'اعداد را داخل تکست باکس وارد ميکنه
End Sub



Private Sub Form_Load()
On Error GoTo Arror
Width = 2100: Height = 2800 'تنظيم اندازه صفحه
C_Num(0).Caption = 0: C_Num(0).Width = 450: C_Num(0).Height = 450 ' اندازه دکمه اعداد را درست ميکنه
C_Fun(0).Width = 450: C_Fun(0).Height = 450 'اندازه دکمه عملگرد ها درسته ميکنه
Set tx = Controls.Add("Vb.TextBox", "tx", Me): With tx: .Visible = True: .Top = 50: .Left = 50: .Width = 1800: .Height = 350: .Locked = True: .MaxLength = 16: End With 'يک تکست باکس tx با مشخصات و اندازه کامل درست ميکنه
'==================================

NLeft = 50: NTop = 420 'مقدار و مشخصات دکمه اعداد را براي چيدمان صحيح تنظيم ميکنه
TLabel = Array("*", "-", "+", "=", ".") 'يک ارايه رشته نام براي کد نويسي کمتر ايجاد ميکنه


'==================================
For Num = 1 To 10 'ايجاد حلفه براي درست کردن 10 دکمه
If Num = 4 Then Enter 'به 4 رسيد مشخصات مختصاد دکمه ها را درست ميکنه
If Num = 7 Then Enter 'مثل بالايي به 7 رسيد
If Num = 10 Then Enter 'مثل بالاي به 10 رسيد

With C_Num(Num) 'براي ساده نويسي کد اسمش را کوتاه مي کنيم
Load C_Num(Num) 'ايجاد دکمه براي کپي کاري با نام حلقه NUM
.Visible = True 'براي نمايشش
.Left = NLeft: .Top = NTop 'اندازه بالا و پايين
.Caption = Num 'متن روي خود دکمه اعداد
NLeft = NLeft + 450 '450 ميده به چپ که فاصله دکمه ها درست بشه
End With: Next Num ' پايان نام کوتاه و پايان حلقه


C_Num(10).Caption = TLabel(4) 'براي دکمه 10 متن نقطه(.) را ميزاره
C_Num(0).Left = 500: C_Num(0).Top = NTop: C_Num(0).Width = 900: NTop = 450 'تنظيم دکمه 0 هم از جا و مکان و هم از اندازه
'========================================


C_Fun(0).Top = 420: C_Fun(0).Left = 1400 'تنظيم دکمه عملگرها


For Num = 0 To 3 'ايجاد براي 3 دکمه جديد
With C_Fun(Num) 'کوتاه سازي نام دکمه ها
Load C_Fun(Num): .Visible = True
Arror: .Top = .Top + NTop * Num 'براي فاصله بالا پايين دکمه ها اندازه ها را ضرب ميکنه که کار راحت بشه
.Caption = TLabel(Num) 'نامشان را بر اساس بر اساس آرايه اي که ايجاد کرديم تنظيم ميکنه
End With
Next Num


End Sub


Sub Enter()
NTop = NTop + 450: NLeft = 50 'براي چيدمان صحيح دکمه هاي اعداد
End Sub

اگر به کارتون اومد که خب تشکر کنید اگر هم نیومد که باز هم تشکر.
برای سلامتی VB صلوات

میلاد علوی
سه شنبه 24 مهر 1397, 20:58 عصر
ایراد داره کدت دوست من

www.pc3enter.tk
سه شنبه 24 مهر 1397, 22:05 عصر
اره تو بخش حساب کردنش کمی مشکل داره, الگوریتمشو نمیدونستم چه طوری خوب در بیارم

اگر می تونی کمک کنی . خب نیکیو بپرس؟

یا می تونی تو خط 15 اینو زیر مجموعه دکمه C_Fun_Click عوض کنی:

Private Sub C_Fun_Click(Index As Integer)

به جای

'Amal = ""
اینو بزاری
Num = 1

و این هم به خط اول C_Num_Click اضافه کنی.

If Num = 1 Then tx = "": Num = 0

میلاد علوی
چهارشنبه 25 مهر 1397, 01:21 صبح
اگر میتونی ی برنامه ش کن و سورسشو بزار اینجا
نمی دونم مشکل از منه یا شما توی خط33 که برای خطا گیری نوشتید وقتی کپی میکنم ارور میده چون لیبل درستی نداره

www.pc3enter.tk
پنج شنبه 26 مهر 1397, 19:59 عصر
اگر میتونی ی برنامه ش کن و سورسشو بزار اینجا
نمی دونم مشکل از منه یا شما توی خط33 که برای خطا گیری نوشتید وقتی کپی میکنم ارور میده چون لیبل درستی نداره

حل شد.

یک بار دیگه کل کدو کپی کن