برگزیده های پرشین تولز

نمونه برنامه های VB6 -آموزش از روی مثال

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
اقا ممنون خيلي خوب شد
 

darklord

Registered User
تاریخ عضویت
23 آپریل 2005
نوشته‌ها
1,085
لایک‌ها
1
محل سکونت
System32
خواهش میکنم،قابلی نداره؛ اصل زحمتش با شما و بلا بلا بوده.
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
دستت درست. عالی بود، حرفه ای به تمام معنا.
 

darklord

Registered User
تاریخ عضویت
23 آپریل 2005
نوشته‌ها
1,085
لایک‌ها
1
محل سکونت
System32
اینقدر خجالتم ندین دیگه... کاری نکردم که... همه ش کاره خودتون بوده دست شما درد نکنه که این همه زحمت کشیدین.
 

شايان

مدیران قدیمی
تاریخ عضویت
2 سپتامبر 2003
نوشته‌ها
4,813
لایک‌ها
9
بچه ها چرا بیخیال شدید دیگه ؟! ادامه بدید !‌ تازه داشت به یه جاهایی میرسید !
 

shankimout

Registered User
تاریخ عضویت
17 می 2004
نوشته‌ها
1,524
لایک‌ها
3
محل سکونت
ساری . . . . . . . . . . . . . . Permanently Bann
اقا ما اجاز داریم برنامتونو یکم تغیر بدیم ؟ شاید تونستیم یه چیزایی ازافه کنیم :D
 

شايان

مدیران قدیمی
تاریخ عضویت
2 سپتامبر 2003
نوشته‌ها
4,813
لایک‌ها
9
آره آقا راحت باش اجازه رو من میدم . ازافه کن :D
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
برنامه جدید در راه
یه ذره وایسین بخدا ما هم کار و زندگی داریم
باید برنامه نوشته بشه .بعد توضیح بدیدم ببینید چکار کردیم
فعلا
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
Learning VB6 from Examples!

PersianTools Forum Topic:
http://forum.persiantools.com/showthread.php?t=31711

This tutorial was written by Saeedsmk .
This is the continuation of last days training by balabala​
در اين مبحث مي خواهيم توانايي شمارش خط رو به پروژه مان اضافه كنيم .
بهترين محل براي نمايش مكان نما استفاده از status bar است.
براي اين كار يك كپي از MyNotes0.6.1 گرفته و به نام MyNotes0.6.2 ذخيره ميكنيم .
حالا فرم frmNotes را كليك مكنيم و از از منوي تول بار بروي ايكون status bar ديل كليك كرده تا به فرم ما اضافه شود. اسم آن را به StatusBar تغيير ميدهيم
براي پيدا كردن شماره سطر يك edit box ما ميتوانيم از api ها استفاده كنيم
معمولا توابع api در فرم module تعريف ميشوند .
يكي از كاربردي ترين توابع در زمينه كنترل بچه پنجره ها استفاده از تابع SendMessageA است
کد:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
اين تابع داراي چهار متغير است
Hwnd كه دستگيره بچه پنجره ماست ( child window )
wMsg نوع پيغام فرستاده شده است
wParam متغير اول بر حسب نوع پيغام
lParam متغير دوم بر حسب نوع پيغام

مثلا اگر ما بخواهيم متن داخل يك box edit را دريافت كنيم از پيغام xx استفاده نماييم .
حال بر فرض مثال اين پيغام دو نوع مقدار بر ميگرداند يكي بافري كه متن را در بر دارد و ديگري اندازه يا طول اين متن از انجايي كه خروجي تابع يك عدد است . متغير متن ما توسط wParam فرستاده ميشود . اين فقط يك مثال بود تا نحوه عمل كرد اين تابع مشخص شود و در شرايط عملي اين اتفاق ميافتد اما ممكن است جاي متغير ها تغيير پيدا كند براي اطلاعات بيشتر به رفرنس هاي api مراجع كنيد .
در مثال بالا همانطور كه ديده شد بايد ما متغير متن خود را به تابع ارسال نماييم اما در تعريف پارامتر wParam از نوع any تعريف ميشود و اين تعريف مشكل ساز است . لذا تعريف هاي مثل زير انجام ميپذيرد كه همگي يك عمل را انجام ميدهند اما بر اساس متغير هاي سوم و چهارم و پيغام فرستاده شده تعريف آنها فرق ميكند. اين مشكل بخاطر نوع فرستادن متغير ها در زبان وي بي به api مي‌باشد.

براي بدست آوردن شماره خط ميتوان از پيغام EM_LINEFROMCHAR استفاده نمود . اگر متغير wParam برابر با -1 باشد شماره خط از ابتدا فرستاده ميشود . يعني اولين خط شماره 0 و الا آخر

نكته : تمامي متن هاي موجود در edit box ها بصورت يك آرايه تعريف ميشوند و هر خط با كد اسكي 13 ( كد دكمه enter ) و 10 تمام ميشود . لذا شماره خط ما بر حسب تعداد كدهاي 13 و بعد از ان بلافاصله كد اسكي 10 محاسبه ميشود .

براي بدست آوردن محل قرار گيري مكان نما ( curser) در خط را بصورت غير مستقيم بدست مي آوريم . بدين صورت كه با فرستادن
پيغام EM_GETSEL به edit box محل قرار گيري مكان نما بر حسب كاركتر بدست مي آيد ، سپس تعداد كاركتر هاي موجود تا انتهاي خط قبل با فرستادن پيغام EM_LINEINDEX بدست مي آيد . حال با كم كردن اين دو مقدار محل curser در خط مورد نظر محاسبه مي‌شود .

خوب مرسيم به كد ها
اين دو تعريف را به module مان يعني My_func اضافه ميكنيم
کد:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function SendMessageReferenceParams Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByRef wParam As Long, ByRef lParam As Long) As Long
خوب براي مشخص كردن پيعام ها بصورت عمومي اين متغير هاي ثابت را زير اين توابع اضافه مكنيم
کد:
Public Const EM_LINEFROMCHAR = &HC9
Public Const EM_LINEINDEX = &HBB
Public Const EM_GETSEL = &HB0
تا اينجا هر چيزي كه لازم بود اضافه كرديم . حال تابعي نوشته ميشود كه با فرستادن شي edit box به ان شماره خط و محل طولي مكان نما را محاسبه نمايد.
کد:
Function FindCurofobject(obj As RichTextBox(
    Dim MyHwnd As Long, Y As Long, X As Long, dumm As String
    Dim PosLine As String * 2, startPos As Long, endPos As Long
    Static X_old As Long, Y_old As Long
    ' get hwnd of child window i mean RichtextBox
    MyHwnd = obj.hwnd
    ' by sending message to control whith paramter EM_LINEFROMCHAR and
    ' -1  we can find out line index number in base 0 array
    ' so we add 1 to convert it to base 1 array
    Y = SendMessage(MyHwnd, EM_LINEFROMCHAR, -1, 0) + 1
    ' by sending message to control whith paramter EM_GETSEL and
    ' startPos ,endPos we can find character index number from first one
    ' that Cursor point to it. if user select some text the number return
    ' is index number of first character selct begin.
    ' and like last varible this return number is base 0 array
    Call SendMessageReferenceParams(MyHwnd, EM_GETSEL, startPos, endPos)
    ' by sending message to control whith paramter EM_GETSEL and
    ' -1  we can find out how much character before this line
    X = SendMessage(MyHwnd, EM_LINEINDEX, -1, 0)
    ' by sub this value we can find pos of cursor in this line
    ' don't forgot to add 1 to convert it to base 1 array
    X = startPos - X + 1
    ' check if x and y changed(to avoid flashing in panels(
    If X_old = X And Y_old = Y Then Exit Function
'Store our x & y
    X_old = X
    Y_old = Y
    ' make buffer
    dumm = "(" & Y & "," & X & ")"
    ' set text of statusbar's first panle to our buffer
    frmNotes.StatusBar.Panels.Item(1).Text = dumm
End Function
در اين تابع ابتدا مكان y مكان نما و سپس محل x آن محاسبه ميشود .
سپس اين مقادير بر اساس شكل مورد نظر در خانه اول status bar قرار داده ميشوند. لازم به ذكر است كه براي جلوگيري از چشمك زدن status bar ( زماني چشمك زدن بوقوع ميپيوند كه يك شيئ نمايش داده شده يا به سرعت تغيير نمايد يا با اينكه مقدار ان ثابت است مداوم با مقدار قبلي پر شود ) 2 مقدار استاتيك تعريف شده است ( Y_oldوX_old) كه مقادير قبلي در آنها ذخيره ميگردد. و هنگام تغيير متن خانه اول status bar چك ميگردد ايا مقادير نسبت به دفعه قبل تغيير كرده اند يا خير و اگر نه تغييري اعمال نمي‌شود. لازم به ذكر است اين تابع را در module مان اضافه ميكنيم .

خوب حالا اين تابع را كجا ها ميتوان صدا زد ؟
بهترين محل هنگام نقاشي مجدد شي مورد نظر است .اما در داخل وي بي شي ما خاصيت paint ندارد ( با استفاده از توابع api و هوك كردن و ديگر تغييرات ميتوان اين خاصيت را به اين شي اضافه نمود كه خود مبحث ديگري را مي طلبد .) لذا ، ما اين تابع را هنگام تغيير متن
Private Sub txtNotes_Change()
کد:
    TextStatus = TextStatus Or TextChanged
    ' if some pase happend and cursor changed
    ' so we call FindCurofobject to find x and y of text
    Call FindCurofobject(txtNotes)
End Sub
، هنگام رها كردن هر كليد ( ممكن است دكمه هاي جابجاي arrow key استفاده شده باشد)
کد:
Private Sub txtNotes_KeyUp(KeyCode As Integer, Shift As Integer)
    ' if any key pressed cursor maybe change.
    ' so we call FindCurofobject to find x and y of text
    Call FindCurofobject(txtNotes)
End Sub
، هنگام فشار دادن دكمه موس ( با كليك كردن روي جاي جاي اين edit box محل مكان نما تغيير ميكند)
کد:
Private Sub txtNotes_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ' if MouseDown cursor maybe change.
    ' so we call FindCurofobject to find x and y of text
    Call FindCurofobject(txtNotes)
End Sub
و در آخر هنگام رها كردن دكمه موس ( هنگام درگ كردن ممكن است محل مكان نما تغيير كند)
کد:
Private Sub txtNotes_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single(
    ' if MouseUp cursor maybe change.
    ' so we call FindCurofobject to find x and y of text
    Call FindCurofobject(txtNotes)
End Sub
صدا ميزنيم تا تمامي اتفاقات منجر به تغيير مكان نما را لحاظ كرده باشيم ( تا آنجايي كه من مي‌دانم بقيه موارد هم كه ممكن است باعث تغيير مكان نما شوند، باعث صدا زدن يكي از اين اتفاقها يا چند تاي از آنها مي شود ).

اميدوارم توضيحات كامل باشه و بتونه كمك كنه .
 

فایل های ضمیمه

  • MyNotes0.6.2.zip
    31.9 KB · نمایش ها: 200
  • Leran0.6.2.zip
    10.7 KB · نمایش ها: 143

Haamed

Registered User
تاریخ عضویت
22 آپریل 2005
نوشته‌ها
1,254
لایک‌ها
8
محل سکونت
کلیسای ایرانیان
جناب saeedsmk ببخشید میپرم وسط بحثتون ولی من یه پی ام زدم دیروز خدمتتون خبری از جواب نشد؟


توجه: این پست بزودی پاک میشود.
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
به نقل از shankimout :
اقا ما اجاز داریم برنامتونو یکم تغیر بدیم ؟ شاید تونستیم یه چیزایی ازافه کنیم :D
اره جناب چرا که نتونید. شما هم برنامه رو ادامه بدید. همونطور که سعیدجان هم گفتن منم حسابی گرفتارم، حالا شما ها فعلا ببریدش جلو...:)
 

darklord

Registered User
تاریخ عضویت
23 آپریل 2005
نوشته‌ها
1,085
لایک‌ها
1
محل سکونت
System32
به چند تا نکته کوچولو تو کدهای برنامه برخوردم که خواستم مطرح کنم:


1. معمولا در برنامه ها در هنگام خروج در صورتی که تغییری رخ داده باشد سه گزینه در اختیار کاربر قرار میگیرد، "بله" ، "خیر" و "انصراف"؛ که با انتخاب "بله" تغییرات ذخیره میشود، با گزینش "خیر" تغییرات به حالت عادی باز میگردند و در هر دو حالت فوق از برنامه خارج میشویم، ولی با انتخاب گزینه "انصراف" برنامه تنها کاری که باید انجام دهد، لغو فرمان خروج است.بنا بر این در این قسمت از برنامه​
کد:
[LEFT]Private Sub Form_Unload(Cancel As Integer)
If TextStatus And TextChanged Then
Dim res As VbMsgBoxResult
res = MsgBox("Text has changed, Do you want to save changes?", vbYesNoCancel + vbExclamation)

If res = vbCancel Then Cancel = True
If res = vbYes Then mnuSave_Click
End If
' exit program and all forms
End
End Sub[/LEFT]

خط​

کد:
[LEFT]If res = vbCancel Then Cancel = True[/LEFT]


باید به شکل زیر تغییر کند...​

کد:
[LEFT]If res = vbNo Then Cancel = True[/LEFT]

برای اینکه با انتخاب گزینه "انصراف" خروج از برنامه لغو شود باید با یک دستور شرط انتخاب این گزینه را تشخیص داد و سپس دستور لغو فرمان خروج را صادر کرد ولی چون پروسه خروج کامل میشود نتوانستم با راههای منطقی جلوی خروج را گرفت!!!(یعنی من که فکر به درد بخوری به ذهنم نرسید...)



2. در این قسمت از برنامه مربوط به فرم جستجو:​
کد:
[LEFT]Private Sub txtFind_KeyUp(KeyCode As Integer, Shift As Integer)
    ' check if user press enter for serached or not
    If KeyCode = 13 Then BtnFind_Click
End Sub[/LEFT]


به دلیل اینکه کد با رویداد "بالا رفتن کلید" فعال میشود... در صورتی که کلمه ای پیدا نشود ابتدا پیامی مبنی بر یافت نشدن واژه اعلام میشود... سپس برای تایید پیام باید کلید "اینتر" فشار داده شود... با فشردن "اینتر" پیام محو میشود و فوکوس به فرم جستجو منتقل میشود... سپس با رها کردن کلید اینتر عمل جستجو مجددا انجام میشود و در واقع در یهک حلقه به دام می افتیم، البته اگر از موس استفاده کنیم مشکلی نخواهیم داشت.
برای رفع مشکل فوق کد بالا را به صورت زیر تغییر میدهیم:​

کد:
[LEFT]Private Sub txtFind_KeyDown(KeyCode As Integer, Shift As Integer)
    ' check if user press enter for serached or not
    If KeyCode = 13 Then BtnFind_Click
End Sub[/LEFT]

و مشکل رفع میشود.



3. برای راحتی بیشتر و کارایی هر چه بیشتر برنامه در فرم جستجو بر روی دکمه "انصراف" کلیک کنید (btnCancel)و در پنجره مشخصات خاصیت Cancel رو از False به True تغییر بدین، بدین ترتیب زمانی که فرم جستجو باز است با فشار کلید Escape ، فرم جستجو بسته میشود.


4. امکان جستجوی فارسی تنها زمانی میسر است که زبان کلی ویندوز فارسی باشد! (هنوز راه حل درست حسابی براش پیدا نکرم، با تغییر کاراکترا میشه ولی میخوام راه ساده تری براش پیدا کنم.)​
 

فایل های ضمیمه

  • MyNotes0.6.3.zip
    31.6 KB · نمایش ها: 188

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
مرسی دارک لورد جان که ارور های برنامه رو پیدا کردی . دستت درد ننکنه
 

darklord

Registered User
تاریخ عضویت
23 آپریل 2005
نوشته‌ها
1,085
لایک‌ها
1
محل سکونت
System32
خواهش میکنم. کاری نکردم که... :blush:
 

shankimout

Registered User
تاریخ عضویت
17 می 2004
نوشته‌ها
1,524
لایک‌ها
3
محل سکونت
ساری . . . . . . . . . . . . . . Permanently Bann
خوب اینم ورژن جدید . اموزششو هنوز وقت نکردم بنویسم . به زودی . اگه کسی میتونه بنویسه که چه بهتر .

در این ورژن فرم ها بصورت پدر و فرزند MDI & SDI هست .

در این ورژن shell command هم ساپورت میشه . یعنی شما میتونید این برنامرو در لیست open with خود قرار دهید .


 

فایل های ضمیمه

  • MyNotes0.6.3.zip
    31.5 KB · نمایش ها: 172

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
سلام عزیز خیلی خوب بود . اگه سعی کنی آموزشش را هم بنویس که چه بهتر .
( اگر این قسمت اموزش نبود تا حالا ما به ورژن 1000 رسیده بودیم :D )
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
دستت درد نکنه. ولی اصلش همون توضیح کامل و شرحش هست که هدف این تاپیکه. اگر زحمتش رو بکشی که دیگه عالی میشه...:rolleyes:
 

darklord

Registered User
تاریخ عضویت
23 آپریل 2005
نوشته‌ها
1,085
لایک‌ها
1
محل سکونت
System32
Learning VB6 from Examples!

PersianTools Forum Topic:
http://forum.persiantools.com/showthread.php?t=31711

This tutorial was written by darklord .
This is the continuation of last days training by balabala and saeedSMK​


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

اگه یه متن رنگی رو از یک ویرایشگر دیگه مثل word کپی کنیم و داخل برنامه مون Paste کنیم، بدون هیچ مشکلی اون متن به همراه رنگها و دقیقا با همون فرمت داخل برنامه ی ما کپی میشه ولی حالا اگه خواستیم در محیط ویرایشگر MyNotes اون رو رنگ دار کنیم باید چی کار کنیم؟ خیلی ساده ست، Visual Basic رو باز کنید و نسخه 0.6.3 برنامه MyNotes رو در این محیط آماده ویرایش کنید.

تا حالا دیگه همگی با اضافه کردن دکمه به Tollbar ها آشنا شدین، پس دو تا دکمه به tbrStandard اضافه کنید و اسمشون رو به ترتیب Color و Spelling قرار بدین، بعد هم دو تا آیکون متناسب رو داخل ImageList قرار بدین و در داخل Toolbar اون ها رو به دکمه هایی که تعریف کردین نسبت بدین.(اگه مشکلی بود به آموزشهای قبلی رجوع کنید)

خب حالا باید به Menu ی برنامه مون هم این دو گزینه رو اضافه کنیم، پس داخل زیر منوی Edit این دو گزینه رو اضافه کنید ( برای یکنواخت شدن کارمون، اسمشون رو به ترتیب mnuColor و mnuSpelling قرار بدین).

در پنجره طراحی بر روی Statusbar راست کلیک کنید و گزینه Propertise رو انتخاب کنید، در Tab ها Panels را انتخاب کنید و بر روی Insert Panel ، 4 بار کلیک کنید، با استفاده از دکمه های ‘>’ , ‘<’ که بر روی همان صفحه قرار دارند پنل شماره 2 را انتخاب کنید و در مقابل Text مقدار " ----------------" را قرار دهید، این بذان معناست که تا کنون این سرویس فراخوانی نشده است؛ از لیست Alignment هم گزینه ی
1-sbrCenter رو انتخاب کنید. پنل 3 را انتخاب کنید و Style را به 1-sbrCaps تغییر دهید. در پنل 4 این گزینه را به 2-sbrNum و در پنل 5 این مقدار را به 3-sbrScrl تغییر دهید؛ در هر سه پنل 3 و 4 و 5 ، Bevel را به 0-sbrNoBevel تبدیل کنید.

خب تا حالا که فقط داشتیم این ور اون ور کلیک میکردیم و ظاهر برنامه رو آماده میکردیم. از این جا به بعد باید یه 7 ، 8 خط هم تایپ کنیم.

از اونجا که در کدهامون به 2 تا متغیر نیاز پیدا میکنیم و چون دستور Option Explicit رو برای جلوگیری از اشتباهات احتمالی در تایپ متغیرها به کار بردیم ابتدا باید متغیرهامون رو تعریف کنیم. پس در پنجره کدها از لیست توابع، (General) و از لیست رویدادها، رویداد Declaration رو انتخاب کنید و کد زیر رو یرای تعریف متغیرهای مورد نیازمون به این بخش اضافه کنید :

کد:
[LEFT]Dim spellChekr As New Word.Application
Dim SpellText As String[/LEFT]
حالا از لیست توابع، tbrStandard رو انتخاب کنید و از لیست رویدادها رویداد ButtonClick رو انتخاب کنید. و به انتهای بلوک Select Case ، درست قبل از دستور End Select کدهای زیر رو اضافه کنید.

کد:
[LEFT]Case 9 'Color
mnuColor_Click
Case 10 'Spell check
mnuSpelling_Click[/LEFT]

خب تا حالا کاری که کردیم چی بوده؟
1- دکمه های Color و Spelling رو به برنامه مون اضافه کردیم.
2- گزینه های بالا رو در داخل Sub menu ی Edit هم قرار دادیم.
3- متغیرهای spellChekr و SpellText رو تعریف کردیم.
4- در رویداد کلیک بر روی دکمه های Toolbar رویداد های مرتبط رو فرا خوانی کردیم.

خب حالا باید در پنجره کد نویسی از لیست توابع، mnuColor و از لیست رویدادها، Click رو انتخاب کنیم و کد های زیر رو در اینجا تایپ کنیم.

کد:
[LEFT]cdlgDialog.ShowColor
txtNotes.SelColor = cdlgDialog.Color[/LEFT]

توسط این دو سطر، ابتدا پنجره محاوره ای انتخاب رنگ باز میشه و پس از بستن این پنجره، رنگی که شما انتخاب کردین به متنی که از پیش توسط موس انتخاب کردین نسبت داده میشه.

بسیار خب الان ویرایشگر متنی ما قابلیت تغییر رنگ متون رو داره، بر روی دکمه Save کلیک کنید.

قابلیت بعدی که می خواهیم به این ویرایشگر اضافه کنیم، Spell Checking نام داره و کارش اینه که ایراد های تایپی ما رو به ما گوشزد کنه. برای این کار هم مثل قابلیت قبلی نیاز به کد نویسی خاصی نیست و فقط کافیه روی سیستم شما نرم افزار MSWord نصب شده باشه.
از منوی Project گزینه ی References رو انتخاب کنید و در کادر محاوره ای باز شده گزینه ی Microsoft Word xx.x Object Library (xx.x ورژن نرم افزار MSword نصب شده میباشد) را انتخاب کنید.

در پنجره کد نویسی از لیست توابع، mnuSpelling و از لیست رویدادها Click رو انتخاب کنید. و کد زیر رو در این محل تایپ کنید.

کد:
[LEFT]On Error Resume Next
If txtNotes.Text = "" Then Exit Sub
If txtNotes.SelText = "" Then
    SpellText = txtNotes.Text
Else
    SpellText = txtNotes.SelText
End If
If spellChekr.CheckSpelling(SpellText) = True Then
    frmNotes.StatusBar.Panels.Item(2).Text = "All Correct"
Else
    frmNotes.StatusBar.Panels.Item(2).Text = "Has some mistakes"
End If[/LEFT]

دستور On Error Resume Next به این معنا است که در صورت بروز هر گونه مشکلی، اجرای ادامه کدها متوقف نشود.

دستور If txtNotes.Text = "" Then Exit Sub چک میکند که اگر تا کنون چیزی تایپ نشده بود اجرا از این روتین خارج شود.

در بلوک If-Else اول، متغیر SpellCheckr بسته به اینکه آیا کاربر بخش خاصی از متن را انتخاب نموده یا خیر، مقدار دهی میشود. (در صورتی که کاربر بخش خاصی را انتخاب نکرده باشد تمامی متن Spell Check میشود)

در بلوک If-Else دوم، Spell Check انجام میشود و نتیجه در Statusbar درج میشود.
خب دیگه فعلا کارمون تموم شد. بر روی Save کلیک کنید و با زدن F5 برنامه رو اجرا کنید.
به همین سادگی... به همین خوشمزه گی...
 

فایل های ضمیمه

  • MyNotes0.6.4.zip
    31.2 KB · نمایش ها: 189
بالا