برنامه نمونه دفترچه یادداشت
مهمان گرامی به ویبی اسکین خوش آمدید - برای ثبت نام کلیک کنید !
به انجمن در گوگل امتیاز دهید :

برای جستجو در سایت از این موتور جستجوی گوگل می توانید استفاده کنید

در حال بارگذاری لطفا صبر کنید
+ پاسخ به موضوع
نمایش نتایج: از شماره 1 تا 2 , از مجموع 2
  1. #1

    آخرین بازدید
    02-08-2012 [ 06:19]
    تاریخ عضویت
    Dec 2008
    محل سکونت
    رو صندلی انتظار
    سن
    23
    نوشته ها
    591
    سپاس ها
    856
    سپاس شده 981 در 408 پست

    پیش فرض برنامه نمونه دفترچه یادداشت

    ما میخوایم یک دفترچه یادداشت کاملا ساده شبیه به NotePad ویندوز بسازیم. خب شروع میکنیم:


    - یک فولدر در یک جایی از هارد به اسم MyNotes0.1 می سازیم.
    - وی بی 6 رو باز می کنیم، از صفحه New Project که ظاهر میشه - قابل دسترسی از منوی File
    Standard EXE رو انتخاب میکنیم و بعد Open!
    - Project1 رو به mynotes تغییر نام میدیم. فرم پیش فرض رو هم از Form1 به frmNotes تغییر نام میدیم.
    - Caption فرم رو به MyNotes تغییر نام میدیم.
    - دکمه Save رو میزنیم و همه فایلهای برنامه رو توی فولدر MyNotes0.1 ذخیره میکنیم.

    خب! ما الان یک فرم خالی داریم که میخوایم یک چیزی شبیه به NotePad بشه!
    یه TextBox به فرم اضافه میکنیم با این خصوصیات:






    کد PHP:
    NametxtNotes
    Left
    0
    Top
    0
    Multiline
    True
    ScrollBars
    3-Both
    Font
    Tahoma size12 Bold 

    خصوصیت Text رو هم که الان برابر Text1 هست، پاک میکنیم. بر روی فرم رفته و دابل کلیک میکنیم تا کد ادیتور ظاهر بشه ویا F7 رو میزنیم.

    ابتدا به قسمت General Declarations با تنظیم دو منوی داخل ادیتور، میریم و کلمه کلیدی و مهم Option Explicit رو تایپ می کنیم.

    این دستور باعث میشه که ما بعدا در هنگام اجرا خیالمون از بابت تعریف شده بودن متغییر ها راحت باشه چون در غیر این صورت خطای زمان اجرا میگیریم و یا با مقادیر اشتباهی دست و پنجه نرم می کنیم.

    بسیاری از باگهای یک برنامه وی بی، بخاطر تناقض و یا نبودن متغییرهای صحیح هست. همونطور که میدونیم اگر متغییری در وی بی 6 تعریف نشه، از نوع Variant در نظر گرفته میشه که این ممکن هست ایجاد مشکل کنه و اگر هم مشکلی بوجود نیاد حداقل حافظه بیشتری مصرف شده. وارد جزئیات ماجرا نمیشیم، اینکه حالا بماند!....

    خب، کجا بودیم؟
    Option Explicit رو تایپ میکنیم. حالا Form رو از منوی Object (اولی از چپ) در ادیتور کد انتخاب میکنیم و سپس Resize رو از منوی Procedure انتخاب میکنیم.

    حالا ساب (پروسیجر) Form_Resize ساخته شد. کد زیر رو داخلش تایپ می کنیم:



    کد PHP:
    Private Sub Form_Resize()
    txtNotes.Width frmNotes.ScaleWidth
    txtNotes
    .Height frmNotes.ScaleHeight
    End Sub 

    چه کار کردیم؟ این ساب که در واقع یک event (رخداد) از خوده فرم (frmNotes) هست با کوچکترین تغییر اندازه فرم صدا زده میشه. ما میخوایم که txtNotes با تغییر اندازه فرم تغییر کنه و خودش رو کیپ به کیپ اندازه فرم نگه داره. پس اونرو به همون اندازه فرم در میارم. اگر هم قبلا توجه کرده باشید Left و Top کنترل تکست باکس مون صفر هست، پس اگر پهنا و درازای اون رو مساوی با پهنا و درازای فرم قرار بدیم، کافیه.
    البته "frmNotes." ها در این کد اضافی هستند. چون در خود فرم کد رو مینویسیم لازم نیست برای صدا زدن خصوصیاتش از "frmNotes." استفاده کنیم.

    چرا از ScaleWidth, ScaleHeight بجای Width, Height استفاده کردیم؟
    خب، Width و Height اندازه فرم + عنوان و گوشه های فرم رو برمیگردونه. یعنی همه جای پنجره یک فرم، ولی ScaleWidth و ScaleHeight فقط اندازه قسمت داخلی فرم (خاکستری) برمی گردونه. تکست باکس ما فقط در همون محیط میتونه باشه، پس ما هم از همون مقادیر استفاده کردیم.

    برنامه رو اجرا می کنیم (F5) ... خب این خیلی ساده بود، نه؟ پس تا برنامه بعد!

    در قسمت بعدی منو و امکانات دیگر رو بهش اضافه می کنیم.
    حالا تا اون موقع ابتدا سورس رو مرور می کنیم:






    کد PHP:
    Option Explicit
     
    Private Sub Form_Resize()
    txtNotes.Width ScaleWidth
    txtNotes
    .Height ScaleHeight
    End Sub 

    از منوی File گزینه Make mynotes.exe رو انتخاب می کنیم. بعد از ساخت exe برنامه رو ذخیره میکنیم.
    همونطور که گفتم در مباحث بعدی این برنامه رو بهینه می کنیم و امکان ذخیره و بازیابی از فایلها رو هم به برنامه اضافه می کنیم.

  2. #2

    آخرین بازدید
    02-08-2012 [ 06:19]
    تاریخ عضویت
    Dec 2008
    محل سکونت
    رو صندلی انتظار
    سن
    23
    نوشته ها
    591
    سپاس ها
    856
    سپاس شده 981 در 408 پست

    پیش فرض برنامه نمونه دفترچه یادداشت 2

    حالا میخوایم برنامه MyNotes رو گسترش بدیم.
    ابتدا از فولدر قبلی یک کپی بگیرید و اسمش رو به MyNotes0.2 تغییر بدید. خب پروژه رو در وی بی 6 باز کنید.

    ما میخوایم menu به برنامه اضافه کنیم. سه تا منو اضافه می کنیم؛ از منوهای استانداری که در اکثر برنامه های ویندوز دیده میشه. File, Edit و Help

    فرم رو در وی بی باز می کنیم و از تولبار آیکونه Menu Editor رو انتخاب می کنیم و یا Ctrl+E
    همونطور که می دونیم برای هر آیتمی در یک منو یک Caption و یک Name لازم هست. من ساختار منو رو در زیر میگذارم.
    شما موقع ساختن منو کلمه ای رو که داخل [] گذاشتم برای Caption و دیگری رو برای Name استفاده بکنید.
    ... در این ساختار به معنی زیرشاخه بودن آیتم هست که در ادیتور توسط دکمه های جهت نما بوجود میان؛ و البته برای اضافه کردن آیتم جدید از دکمه Next و Insert استفاده میکنیم.

    کد PHP:
    mnuFile [&File]
    … mnuNew [&New]
    … mnuSep1 [-]
    … mnuOpen [&Open…]
    … mnuSave [&Save…]
    … mnuSep2 [-]
    mnuExit [E&xit]
     
    mnuEdit [&Edit]
    … mnuCut [Cu&t]
    … mnuCopy [&Copy]
    … mnuPaste [&Paste]
    … mnuSep3 [-]
    … mnuSelAll [Select &All]
     
    mnuHelp [&Help]
    … mnuAbout [&About…


    خب این از منو اگر اشتباهی نکرده باشیم در صورت زدن OK منوی برنامه ساخته خواهد شد.
    حالا موقع کد نویسی برای هر آیتم هست...

    روی منو رفته و New رو انتخاب کنید تا رخداد مربوطه ایجاد بشه. حالا کد زیر رو توش می نویسیم:





    کد PHP:
    Private Sub mnuNew_Click()
    txtNotes.Text ""
    End Sub 

    فکر کنم به حد کافی ساده باشه. فعلا به Open و Save کاری نداریم. برای Exit هم همین کار رو می کنیم:


    کد PHP:
    Private Sub mnuExit_Click()
    Unload Me
    End Sub 

    حالا میرسیم به Cut و Copy و Paste و Select All:

    کد PHP:
    Private Sub mnuCut_Click()
    If 
    txtNotes.SelText <> "" Then
    Clipboard
    .Clear
    Clipboard
    .SetText txtNotes.SelText
    txtNotes
    .SelText ""
    End If
    End Sub
     
    Private Sub mnuCopy_Click()
    If 
    txtNotes.SelText <> "" Then
    Clipboard
    .Clear
    Clipboard
    .SetText txtNotes.SelText
    End 
    If
    End Sub
     
    Private Sub mnuPaste_Click()
    If 
    Clipboard.GetFormat(vbCFText) = True Then
    txtNotes
    .SelText Clipboard.GetText(vbCFText)
    End If
    End Sub
     
    Private Sub mnuSelAll_Click()
    If 
    Len(txtNotes.Text) > 0 Then
    txtNotes
    .SelStart 0
    txtNotes
    .SelLength Len(txtNotes.Text)
    End If
    End Sub 

    چه کار کردیم؟
    برای Cut ما ابتدا چک کردیم که در تکست باکس چیزی انتخاب شده یا نه؟ بعد کلیپ برد رو پاک کردیم و مقدارش رو برابر متن انتخاب شده قرار دادیم. و در انتها متن انتخاب شده رو پاک کردیم.

    برای Copy از روش مشابهی رو استفاده کردیم بجز اینکه دیگه متن رو پاک نمی کنیم.

    برای Paste ابتدا چک می کنیم که آیا متنی از نوع تکست خام vbCFText در کلیپ برد ویندوز وجود داره یا نه؟ اگر بود پس ما می تونیم ازش استفاده کنیم و بجای متن انتخاب شده قرار میدیم.

    برای Select All ابتدا برای اینکه خطایی در زمان اجرا نبینیم از وجود داشتن متن در تکست باکس مطمئن میشیم و بعد کل متن رو انتخاب می کنیم.

    حالا آیتم About رو از منوی Help انتخاب می کنیم:


    کد PHP:
    Private Sub mnuAbout_Click()
    MsgBox "Learning VB6 - MyNotes" vbNewLine "PersianTools Forum Topic: http://forum.persiantools.com/showthread.php?t=31711"vbInformation
    End Sub 

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

    برای استفاده از هر فایلی چه برای خواندن یا نوشتن در وی بی 6، باید ابتدا فایل رو باز بکنیم. برای این کار دستور Open وجود داره. نوع های مختلفی برای باز کردن یک فایل وجود داره: Binary, Random, Input, Output, Append

    برای باز کردن فایلهای ASCII خام همانند متونی که ما داریم که یکی از متداول ترین پسوندهاش txt میباشد، از دستورهای Random, Input و Append استفاده می کنیم. برای باز کردن کلیه فایلها شامل کداسکی خام یا هر نوع دیگه به هر دلیلی بطور مثال exe ها، میشه از Binary استفاده کرد.

    ما متن اسکی خام داریم، پس از سه نوع اول استفاده میکنیم. برای اینکه یک فایل رو برای خواندن و نوشتن باز کنیم می تونیم از Random استفاده کنیم. در این صورت میتونیم رکورد هم تعریف کنیم. منتها ما در یک زمان واحد فقط یا میخوایم بخونیم یا بنویسیم پس:
    برای باز کردن فایل و خوندن محتویاتش در برنامه، از مد Input استفاده می کنیم. برای نوشتن داخل یک فایل از Output استفاده می کنیم.

    بعد از انجام کار با فایل، فایل رو با دستور Close میبندیم.

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




    کد PHP:
    Sub open_file(strFilename As String)
     
    On Error GoTo errs1
    Dim f 
    As Integer
    Dim tmp 
    As String
     
    FreeFile
    Open strFilename 
    For Input As #f
    tmp Input(LOF(f), #f)
    Close #f
     
    txtNotes.Text tmp
    Exit Sub
    errs1
    :
    MsgBox "Error: Can not open file '" strFilename "'."vbExclamation
    Close 
    #f
    End Sub 

    چه کار کردیم؟

    ابتدا برای گرفتن خطاهای احتمالی از قبیل در دسترس نبودن فایل، از On Error GoTo استفاده کردیم. یک متغییر به نام f برای نگهداری شماره فایلی که باز میکنیم گذاشتیم. با دستور FreeFile یک شماره فایل براش اختصاص دادیم. فایل رو برای خواندن باز کردیم. کلیه محتویات فایل رو در یک متغییر ریختیم. فایل رو بستیم و تکست باکس رو با متن داخل فایل پر کردیم.

    دستور LOF به معنی: Length of File اندازه فایل به بایت رو برمیگردونه. دستور Input – منظور تابع هست نه نوع فایل، دو ورودی داره، تعداد بایتی که باید خونده بشه و شماره فایلی که باید ازش بخونیم. ما این دو رو بهش دادیم و در برگشت کل متن داخل فایل رو در یک متغییر ریختیم.

    حالا میریم برای ذخیره کردن هم یک ساب بسازیم:


    کد PHP:
    Sub save_file(strFilename As String)
    On Error GoTo errs1
    Dim f 
    As Integer
    Dim tmp 
    As String
     
    FreeFile
    Open strFilename 
    For Output As #f
    Print #f, txtNotes.Text
    Close #f
     
    MsgBox "File saved successful."vbInformation
    Exit Sub
    errs1
    :
    MsgBox "Error: Can not save file '" strFilename "'."vbExclamation
    Close 
    #f
    End Sub 

    چه کار کردیم؟


    فایل رو از نوع Output برای نوشتن باز میکنیم. در لحظه باز کردن با این نوع، در صورت وجود داشتن فایل کلیه محتوای اون پاک میشه و اندازش صفر بایت خواهد شد. در صورت وجود نداشتن، یک فایل صفر بایتی ساخته خواهد شد.
    سپس توسط دستور # Print که دستوری مخصوص فایلها هست؛ محتوای کل تکست باکس رو داخل فایل ریختیم و در انتها؛ فایل رو بستیم.

    خب، حالا تقریبا همه چیز برای استفاده آمادست. ما برای انتخاب یک نام برای فایلها در برنامه به روندی احتیاج داریم. بهترین کار استفاده از Common Dialog در وی بی 6 هست که به ما این قابلیت رو میده که بتونیم یک نام برای فایلها همانند روشی که در کلیه برنامه های ویندوز دیده میشه ، انتخاب کنیم، یعنی نمایش یک دیالوگ Open یا Save و انتخاب یک فایل.

    برای استفاده از کامپوننت کامان دیالوگ در برنامه، به منوی Project در ویبی رفته و Components رو کلیک می کنیم از لیست Microsoft Common Dialog 6.0 رو انتخاب و تیک میزنیم و بعد OK . از روی تولبار ویبی یک کنترل CommonDialog روی فرم میگذاریم با این مشخصات:




    کد PHP:
    NamecdlgDialog
    Filter
    : *.txt|*.txt
    Flags


    حالا از منوی File آیتم Open رو انتخاب میکنیم:




    کد PHP:
    Private Sub mnuOpen_Click()
    On Error GoTo errs1
    cdlgDialog
    .CancelError True
    cdlgDialog
    .ShowOpen
     
    If cdlgDialog.FileName <> "" Then
    open_file cdlgDialog
    .FileName
    End 
    If
    errs1:
    End Sub 

    ابتدا CancelError رو برابر True قرار میدیم. این کار باعث میشه که در صورتی که کاربر بر روی Cancel کلیک بکنه یک خطا رخ بده. ما این خطا رو میگیریم و می فهمیم که کاربر منصرف شده و فایلی رو انتخاب نکرده پس از ساب میریم بیرون. در صورتی که فایلی رو انتخاب کرده باشه اون فایل رو توسط ساب open_file که ساختیم باز میکنیم.




    برای Save از منوی File هم:





    کد PHP:
    Private Sub mnuSave_Click()
    On Error GoTo errs1
    cdlgDialog
    .CancelError True
    cdlgDialog
    .ShowSave
     
    If cdlgDialog.FileName <> "" Then
    save_file cdlgDialog
    .FileName
    End 
    If
    errs1:
    End Sub 

    همون کار رو کردیم منتها برای نمایش دایالوگ Save از ShowSave استفاده و برای ذخیره به اسم فایلی که انتخاب میشه از save_file استفاده کردیم.

    خب اینم از این ورژن از برنامه. جالب بود نه؟ پس تا برنامه بعد!!!

    سورس ورژن جدید:


    کد PHP:
    Option Explicit
     
    Private Sub Form_Resize()
    txtNotes.Width ScaleWidth
    txtNotes
    .Height ScaleHeight
    End Sub
     
    Private Sub mnuAbout_Click()
    MsgBox "Learning VB6 - MyNotes" vbNewLine "PersianTools Forum Topic: http://forum.persiantools.com/showthread.php?t=31711"vbInformation
    End Sub
     
    Private Sub mnuCut_Click()
    If 
    txtNotes.SelText <> "" Then
    Clipboard
    .Clear
    Clipboard
    .SetText txtNotes.SelText
    txtNotes
    .SelText ""
    End If
    End Sub
     
    Private Sub mnuCopy_Click()
    If 
    txtNotes.SelText <> "" Then
    Clipboard
    .Clear
    Clipboard
    .SetText txtNotes.SelText
    End 
    If
    End Sub
     
    Private Sub mnuOpen_Click()
    On Error GoTo errs1
    cdlgDialog
    .CancelError True
    cdlgDialog
    .ShowOpen
     
    If cdlgDialog.FileName <> "" Then
    open_file cdlgDialog
    .FileName
    End 
    If
    errs1:
    End Sub
     
    Private Sub mnuSave_Click()
    On Error GoTo errs1
    cdlgDialog
    .CancelError True
    cdlgDialog
    .ShowSave
     
    If cdlgDialog.FileName <> "" Then
    save_file cdlgDialog
    .FileName
    End 
    If
    errs1:
    End Sub
    Private Sub mnuPaste_Click()
    If 
    Clipboard.GetFormat(vbCFText) = True Then
    txtNotes
    .SelText Clipboard.GetText(vbCFText)
    End If
    End Sub
     
    Private Sub mnuSelAll_Click()
    If 
    Len(txtNotes.Text) > 0 Then
    txtNotes
    .SelStart 0
    txtNotes
    .SelLength Len(txtNotes.Text)
    End If
    End Sub
     
    Private Sub mnuExit_Click()
    Unload Me
    End Sub
     
    Private Sub mnuNew_Click()
    txtNotes.Text ""
    End Sub
    Sub open_file
    (strFilename As String)
    On Error GoTo errs1
    Dim f 
    As Integer
    Dim tmp 
    As String
     
    FreeFile
    Open strFilename 
    For Input As #f
    tmp Input(LOF(f), #f)
    Close #f
     
    txtNotes.Text tmp
    Exit Sub
    errs1
    :
    MsgBox "Error: Can not open file '" strFilename "'."vbExclamation
    Close 
    #f
    End Sub
    Sub save_file
    (strFilename As String)
    On Error GoTo errs1
    Dim f 
    As Integer
    Dim tmp 
    As String
     
    FreeFile
    Open strFilename 
    For Output As #f
    Print #f, txtNotes.Text
    Close #f
     
    MsgBox "File saved successful."vbInformation
    Exit Sub
    errs1
    :
    MsgBox "Error: Can not save file '" strFilename "'."vbExclamation
    Close 
    #f
    End Sub 

    در قسمت بعدی، امکانات بیشتری به برنامه اضافه میکنیم...
    تا بعد!

    ادیت: برنامه دیباگ شد.
    Clipboard.SetText txtNotes.SelText صحیح است.
    MsgBox "Error: Can not save file صحیح است.

  3. کاربر روبرو از پست مفید mr.yashar سپاس کرده است .

    aquapresco (12-10-2009)

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

     

کاربران خواننده این موضوع : 6

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید