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


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

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


Code:

Name: txtNotes
Left: 0
Top: 0
Multiline: True
ScrollBars: 3-Both
Font: Tahoma , size: 12 , Boldخصوصیت Text رو هم که الان برابر Text1 هست، پاک میکنیم. بر روی فرم رفته و دابل کلیک میکنیم تا کد ادیتور ظاهر بشه ویا F7 رو میزنیم.

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

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

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

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

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


Code:

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 فقط اندازه قسمت داخلی فرم (خاکستری) برمی گردونه. تکست باکس ما فقط در همون محیط میتونه باشه، پس ما هم از همون مقادیر استفاده کردیم.