ویژوال فاکس‌پرو

تاریخچه

ویژوال فاکس پرو (به انگلیسی: Visual FoxPro) یک زبان برنامه‌نویسی داده محور شی گرا و روال محور است که توسط مایکروسافت تهیه شده‌است. در سال ۱۹۸۴، این زبان از زبان فاکس پرو (که اوایل با نام FoxBASE شناخته می‌شد) تولید شده توسط نرم‌افزار فاکس، مشتق شد. بعد از این که فناوری‌های فاکس در سال ۱۹۹۲ با مایکروسافت ادغام شد امکانات جدید و پسوند visual را پیدا کرد. آخرین نسخهٔ فاکس پرو(۲٫۶) تحت Mac OS، داس، ویندوز و یونیکس کار می‌کرد. ویژوال فاکس پرو ۳٫۰، اولین نسخه ویژوال، پشتیبانی از platform را به Mac و ویندوز کاهش داد و نسخه‌های بعدی فقط تحت ویندوز بودند. نسخه کنونی ویژوال فاکس پرو تحت com است و مایکروسافت ابراز داشته که قصد ندارد که یک نسخه تحت .NET از آن ارائه کند.
فاکس پرو به عنوان عضوی از خانواده زبان‌های xbase، که ساختاری بر اساس زبان برنامه‌نویسی dbase دارند، ظهور کرد. Clipper و recital از دیگر اعضای خانواده زبان‌های xbase هستند.
ویژوال فاکس پرو، که معمولاً با نام اختصاری VFPدیده می‌شود به‌طور محکمی با موتور پایگاه دادهٔ ارتباطی خود گره خورده است که این امر باعث می‌شود توانایی‌های xBase برای فاکس پرو افزایش یابد و از پرسش‌های sql و عملیات کار با داده پشتیبانی کند. بر خلاف اکثر سیستم‌های مدیریت پایگاه داده، ویژوال فاکس پرو یک زبان برنامه‌نویسی پویا و با تمامی امکانات است که در نتیجه نیازی به یک محیط برنامه‌نویسی همه منظوره اضافی ندارد. ویژوال فاکس پرو نه تنها برای نوشتن برنامه‌های «چاق» مشتری بلکه برای میان افزارها و برنامه‌های تحت وب نیز کاربرد دارد.
در اواخر سال ۲۰۰۲ این قابلیت که ویژوال فاکس پرو با استفاده از بسته تطبیق‌پذیری ویندوز wine بتواند روی لینوکس هم اجرا شود معرفی شد. در سال ۲۰۰۳ این مطلب شکایت مایکروسافت را در پی داشت که در آن ادعا شده بود که مستقرسازی کد فاکس پرو زمان اجرا روی ماشین‌های غیر ویندوز با گواهینامه «کاربر پایانی» متناقض است.
در دسامبر سال ۲۰۰۵، VFP برای اولین بار به جمع ۲۰ رتبه اول در فهرست جمعیت برنامه‌نویسی تیوب راه پیدا کرد. در ماه مارس ۲۰۰۷ در رتبه ۱۹ ام این فهرست بود که آن را تبدیل به یک زبان «ب» می‌کرد و در دسامبر ۲۰۰۸ به رتبه ۲۳ ام نزول کرد.
در ماه مارس ۲۰۰۷، مایکروسافت اعلام کرد که دیگر VFP 10 وجود نخواهد داشت بدین معنی که VFP 9 آخرین نسخه تجاری VFP تولید شده توسط مایکروسافت خواهد بود. البته پشتیبانی از نسخه ۹ با ارائه بسته سرویس‌هایی که در تاریخ‌های ۸ دسامبر ۲۰۰۵ و ۱۱ اکتبر ۲۰۰۷ در اختیار قرار گرفت همچنان ادامه دارد.
همزمان با اعلام رسمی پایان عمر، کار روی نسخه انتشاری بعدی تحت عنوان سدنا (نام یکی از سیارات کوتوله که به تازگی کشف شده بود) که روی پایه کد VFP 9 ساخته شده بود به تازگی آغاز شده بود و در نهایت در ۲۵ ژانویه ۲۰۰۸ در اختیار عموم قرار گرفت. با همه این‌ها مایکروسافت اعلام کرده که هسته VFP همچنان به عنوان یک کد بسته باقی خواهد ماند.

نگاهی گذرا به فاکس پرو

در توالی مطالب زیر طراحی یک پایگاه داده ساده به همراه یک جدول و یک فرم را دنبال خواهیم کرد. پایگاه دادهٔ موردنظر ما جزئیات سی دی‌های برنامه نویسیمان را نگه می‌دارد.
در اداره، بیش از هزار سی دی وجود دارد و ما نمی‌توانیم سی دی مورد نظرمان را پیدا کنیم. هر کدام یک شماره ID یکتا دارند و روی طبقه به ترتیب عددی چیده شده‌اند. اگر من همان سی دی «ویژوال اینتردو» را دوباره بخواهم آنگاه پایگاه داده به من اطلاع می‌دهد که کجا آن را بیابم. پایگاه داده همچنین شماره سریال و کلید ثبت نام را نگه می‌دارد و این امر در موقعی کمک می‌کند که شماره ID سی دی را نداشته باشیم.
مطلب با یک توصیف از رویه کاربردی ای موجود در ویژوال فاکس پرو شروع می‌کنیم. سپس یک جدول می‌سازیم، آنگاه یک فرم آماده می‌کنیم تا اطلاعات را در آن نمایش دهیم و در پایان نیز یک فایل قابل اجرا تولید خواهیم کرد.
فاکس پرو در میان ابزارهای تولیدی مایکروسافت غیرمعمول است. از این لحاظ که یک پوستهٔ خط فرمان نیز دارد. همان‌طور که ممکن است انتظار داشته باشید یک نوار ابزار نیز با تمام دکمه‌های معمول وجود دارد. اما همچنین با یک پنجرهٔ فرمان نیز روبرو هستید که در آن می‌توانید دستورهای فاکس پرو را وارد کنید.
تصویر بالا قسمتی از محیط ویژوال فاکس پرو را به همراه چند خط از دستورهای فاکس در پنجرهٔ فرمان نشان می‌دهد.
پنجره در سمت چپ صفحه نمایش قرار دارد و در کاربرد معمول بزرگتر خواهد یود و اندازهٔ فونت کوچکتری خواهد داشت تا مقدار بیشتری از هر دستور را نمایش دهد.

Intellisense

کلمات کلیدی این زبان به صورت حروف بزرگ و با رنگ آبی نمایش داده می‌شوند. این تنظیمات پیش‌فرض فاکس پرو است. به محض این که فاکس پرو کلمه‌ای که شما تایپ می‌کنید را تشخیص بدهد آن را با رنگ آبی نشان خواهد داد. اگر شما کلید space یا tab را فشار دهید فاکس پرو کلمهٔ مورد نظر را در صورت امکان برای شما کامل خواهد کرد و یک لیست از پارامترها و گزینه‌هایی که می‌تواند در ادامه آن دستور بیاید را به شما نشان می‌دهد. بر خلاف سایر زبان‌های مایکروسافت intellisense ویژوال فاکس پرو باز و مستند بوده – در واقع یک جستجو در یک جدول فاکس پرو – شما می‌توانید لغات مورد نظر خود را به این لیست اضافه کنید.

استفاده از پنجرهٔ فرمان

وقتی شما برای اولین بار می‌خواهید ویژوال فاکس پرو را یاد بگیرید ممکن است تحریک شوید تا پنجرهٔ فرمان را ببندید و فاکس پرو را در همان شکل «اشاره و کلیک» رایج در اختیار بگیرید. همان طوری‌که در اکسس این کار را انجام می‌دهید این امر ممکن است، اما یک روش کند و محدود خواهد یود. فقط به عنوان یک مثال ساده، شما می‌توانید از طریق انتخاب new از منوی file و سپس مشخص کردن این که شما یک فایل جدید از نوع کد می‌خواهید یک فایل برنامه جدید (ماژول کد) ایجاد کنید. اما این کار بسیار سریعتر خواهد یود اگر شما در پنجرهٔ فرمان کلمهٔ mc را تایپ کرده و enter را بزنید!!

مدیر پروژه

مدیر پروژهٔ ویژوال فاکس پرو اجزای یک پروژه را کنترل می‌کند و به شما اجازه می‌دهد تا یک فایل اجرایی یا dll از آن بسازید. همچنین یک راه بسیار آسان برای شما فراهم می‌کند تا فایل‌های متعلق به برنامه، فرم‌ها، گزارش‌ها و کلاس‌ها را تولید یا اصلاح کنید. به جای استفاده از منو یا پنجرهٔ فرمان برای باز کردن یک فایل شما می‌توانید به راحتی روی فایل موردنظر در project manager دابل کلیک کنید. این روش برای تمام انواع فایل کاربرد دارد. اگر یک فایل از نوع bmp را به پروژه اضافه کنید در نتیجهٔ این کار فاکس پرو، paint را در ازای دابل کلیک کردن باز می‌کند.
با وجود این که مدیر پروژه بسیار شبیه پنجره پایگاه داده متعلق به یک نسخه قدیمی تر از access می‌باشد، کد برنامه یا طرح اجزای پروژه را در برندارد. در واقع جدولی است از اطلاعات پروژه به همراه جزئیات فایل‌های مورد نیاز شامل این که این فایل‌ها کجا ذخیره شده‌اند یا هر نوع توضیحاتی که بخواهیم به آن‌ها نسبت دهیم. به این معنا که بسیاری از پروژه‌های پایگاه داده می‌توانند فایل‌های یکسانی را از زیر روال‌های مشترک یا کتاب‌خانه‌های کلاس به اشتراک بگذارند.
با تایپ create proj در پنجرهٔ فرمان یک پروژهٔ جدید ایجاد کنید.

شکل بالا یک پروژهٔ خالی را نشان می‌دهد. همچنان که فایل‌هایی به پروژه اضافه می‌شوند گره‌هایی روی دید درختی گسترش پیدا می‌کنند.
شش دکمه در سمت راست مدیر پروژه قرار دارد. سه تای اول به شما اجازه می‌دهد تا یک فایل جدید را ایجاد کنید، یک فایل موجود را به پروژه اضافه کنید و یک فایل از پروژه را تغییر دهید. دکمه run یک فایل برنامه را اجرا خواهد کرد، یک فایل فرم را نمایش می‌دهد یا یک فایل گزارش را چاپ می‌کند. remove اشاره به یک فایل مورد نظر را از پروژه پاک می‌کند و build فایل‌های پروژه را داخل یک dll یا یک فایل اجرایی می‌سازد

استفاده از مدیر پروژه

اولین نکته برای کار با مدیر پروژه این است که بتوانیم آن را در اختیار بگیریم. اگر روی نوار عنوان کلیک کنیم می‌توانیم آن را به درون منوی اصلی بکشیم. اگر به یکی از فایل‌ها نیاز داشته باشیم باید روی tab موردنظر کلیک کنیم تا یک لیست پایین افتادنی ظاهر شود. با این کار مقدار زیادی فضا روی میز کار حفظ می‌شود.
زمانی که مدیرپروژه شبیه عکس زیر باشد هیچ‌کدام از دکمه‌ها در نمایش کامل قابل دیدن نیستند ولی همة قابلیت‌ها روی یک منویی که از طریق کلیک راست کردن ظاهر می‌شود مهیا هستند.
اگر در عین حالی که مدیر پروژه بسته شده‌است بخواهیم که یکی از صفحات را قابل دیدن نگه داریم باید آن tag را پاره کنیم. فقط کافیست روی caption آن کلیک کنیم و آن را روی میز کار فاکس پرو بیندازیم.

فایل‌های جدول

بر خلافaccess یا sql saver فاکس پرو تمام جدول‌های پایگاه داده را تحت عنوان فایل‌های جدا از هم نگه می‌دارد. فیلدهای با طول ثابت در یک فایل با پسوند .dbf نگهداری می‌شوند. در حالی که داده‌های با طول متغیر گرافیک و اشیا ole پسوند .fpt دارند و indexها با پسوند .cdx ذخیره می‌شوند. این جداسازی خوبی‌ها و بدی‌هایی دارند اما در طی سالیان دراز اثبات شده‌است که قابل اتکا هستند.

طراحی یک جدول

ما اولین و مهم‌ترین فاز این فرایند را کنار می‌گذاریم و فرض می‌کنیم ساختار جدول قبلاً نهایی شده‌است. این پروژه یک جدول خاص با عنوان CD با ساختار زیر دارد.

ایجاد یک جدول

روی tab مربوط بهdata از مدیر پروژه کلیک کرده، روی free tables کلیک راست می‌کنیم.
New file را انتخاب کرده، new table را از کادر محاوره‌ای که ظاهر می‌شود انتخاب می‌کنیم. این محاوره به شما اجازه می‌دهد تا table wizard را شروع کنید که اگر برنامهٔ شما متناظر با یکی از templateهای آماده باشد می‌تواند بسیارمفید باشد.
یک محاوره کاوشگر ظاهر خواهد شد که پیشنهاد می‌کند تا یک جدول با نام table1.dbf ایجاد کنیم. اسم مورد نظر را به CD.bdf تغییر داده، آن را در همان پوشه‌ای که فایل مدیر پروژه قرار دارد ذخیره کنید. یک پروژهٔ کاربردی نوعاً فایل‌های خود را در یک ساختار درختی از مسیرها قرار می‌دهد. اما ما در اینجا برای سادگی همهٔ فایل‌ها را در همان پوشهٔ فعلی قرار می‌دهیم.
Table desingner ظاهر می‌شود.
شش فیلد مورد نظر از لیست بالا را اضافه کرده، دکمهٔ ok را زمانی که تمام شده‌اید بزنید. دقت کنید که هیچ اندازه‌ای برای integer و فیلدهای date داده نشده‌است. بلکه ثابت هستند.
فیلدهای خاکستری در سمت راست طراح فقط برای جدول‌هایی مهیا هستند که قسمتی از یک پایگاه داده باشند.

دیدن جدول

زمانی که شما table designer را ببندید باید یک ورودی شبیه این در نوار وضعیت در پایین صفحه نمایش ببینید. این نشان دهنددهٔ این است که جدول با نام CD باز است و برای استفاده انحصاری شما آماده است و در ضمن هیچ رکوردی را در برندارد. تایپ کنید:

Browse

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

اضافه کردن تعدادی رکورد

بر خلاف access شما نمی‌توانید یک رکورد جدید را از طریق تایپ کردن در یک خط خالی در یک سلول ایجاد کنید. حتماً باید append new record را از منوی table انتخاب کنید. این منو زمانی که یک پنجرهٔ مرورگر روی میزکار باز است، ظاهر می‌شود.
این کار را سه یا چهار بار انجام داده و مقداری اطلاعات را به جدول اضافه کنید تا هنگام طراحی یک فرم، چیزی داشته باشید که با آن کار کنید.

طراح فرم

درست مانند هر کدام از ابزارهای توسعهٔ ویندوز، فرم پایه‌ای‌ترین رویه برای کاربر است.
فاکس پرو یک ویزارد فرم دارد که به سرعت یک فرم با ظاهر خوب تولید می‌کند.

ایجاد یک فرم

روی tab document مدیر پروژه کلیک کرده سپس روی forms کلیک راست کنید.new file را انتخاب کرده سپس از محاوره مورد نظر new form را بزنید. form designer ظاهر خواهد شد.
تصویر بالا from designer و نوار ابزار form controls را نشان می‌دهد در حالی که ماوس به کنترل button اشاره می‌کند.

اضافه کردن داده

فرم باید به یک جدول داده وصل شود. روی فرم کلیک راست کرده data environment را انتخاب کنید. یک درخت مسیر باز خواهد شد به‌طوری‌که بتوانید یک جدول را انتخاب نمایید. روی CD.dbf کلیک کنید. سپس محاورهٔ add table را ببندید. با این کار فقط فرم و پنجره‌های data environment باید باقی بمانند.
از ماوس برای انتخاب شش فیلد از data envioronment استفاده کنید و آن‌ها را به داخل فرم بکشید. اگر شما این کار با استفاده از یک کلیک چپ معمول انجام دهید فاکس پرو به‌طور خودکار یک کنترل شبکه‌ای برای فیلدها تولید خواهد کرد. وقتی که فایل‌ها را رها می‌کنید یک منو به همراه یک گزینه برای نشان دادن فیلدها به عنوان یک سطر یا چند کنترلی ظاهر خواهد شد. گزینهٔ create multiple controls here را انتخاب کنید. قبل از این که فیلدها را رها کنید مطمئن شوید که ماوس را به گوشهٔ بالا سمت چپ فرم حرکت داده‌اید. بعضی از فیلدها کاملاً عریض هستند و شما مجبور خواهید شد که فرم را به اندازه‌ای عریض تر کنید تا آن‌ها جا شوند. در نهایت data environment را بسته، فقط form designer را روی صفحه نمایش باقی بگذارید.

اجرای فرم

روی علامت تعجب قرمز رنگ بر روی نوار ابزار کلیک کرده یا این که run form را از منوی form انتخاب کنید. از شما تقاضا می‌شود که فرم را قبل از اجرا ذخیره کنید. فاکس پرو form1.scx را پیشنهاد خواهد داد اما شما آن را به myCD.scx تغییر دهید.

مسیریابی

تمام کنترل‌های اولیه روی نوار ابزار form controls آماده هستند. نوار ابزار فاکس پرو آشنا به نظر می‌رسد اما تفاوت‌های آشکاری بین این نوار ابزار و نوار ابزارهای مشابه در access و visual basic وجود دارد. برای اضافه کردن یک کنترل به فرم باید روی نوار ابزار یک بار کلیک کرده سپس یک بار روی فرم کلیک کنید. لازم است ذکر شود با حرکت برعکس هیچ اتفاق نخواهد افتاد.

اضافه کردن یک دکمهٔ close

روی کنترل دکمه روی نوار ابزار کلیک کنید (پنجمین دکمه از سمت چپ) و سپس آن را روی سمت راست پایین فرم رها کنید.
روی دکمهٔ مورد نظر دابل کلیک کرده تا یک ویرایشگر روی کد موردنظر باز شود که هرگاه دکمه کلیک شود اجرا می‌شود. این خط از کد را درون پنجره تایپ کنید :
ThisForm.Release
ThisForm معادل فاکس پرو برای Me در access است و به فرمی اشاره می‌کند که این شئ را دربردارد. همچنان که یک نقطه را تایپ می‌کنید متدهای ممکن ظاهر می‌شود.
با فشردن ctrl+w یا کلیک بر روی دکمه save بر روی نوار ابزار پنجرهٔ کد را بسته و ذخیره کنید. سپس ctrl+e یا علامت تعجب را برای اجرای فرم فشار دهید.
با فشردن دکمه فرم بسته خواهد شد و شما را به form designer باز خواهد گرداند.

ویژگی‌های کنترل

فاکس پرو یک سیستم شئ گرای انعطاف‌پذیر است که ویژگی‌های بسیار گشترده و متنوعی دارد. شما می‌توانید تعدادی که ظاهر می‌شود را تغییر دهید. به‌طوری‌که فقط آن‌هایی را ببینید که از مقدار پیش‌فرض تغییر پیدا کرده‌اند. بدین منوال که روی اسم command1 در بالای پنجرهٔ properties کلیک راست کرده و nondefault properties only را از منو انتخاب کنید. نکتهٔ قابل توجه در اینجا این است که ویژوال فاکس پرو بر خلاف access و basic که با تغییر نام یک ویژگی، ارتباطات به متدهای آن نیز قطع می‌شود بسیار انعطاف‌پذیر است!

دکمه‌های مسیر یابی

همان تکنیک یادشده را برای اضافه کردن دو دکمهٔ بیشتر به فرم دنبال کرده و ویژگی caption از آن‌ها را به "Prev" و "Next" تغییر دهید. روی دکمهٔ prev دابل کلیک کنید و این کد را داخل رویداد مربوط به کلیک آن بنویسید.
کد سبز رنگ comment است اگر یک خط با ستاره شروع شود آنگاه هر چیزی که در آن خط بیاید یک comment خواهد بود.
پنجرهٔ edit را بسته روی دکمهٔ next دابل کلیک کنید و این کد بسیار شبیه به کد قبلی را درون رویداد کلیک آن تایپ کنید
دو دکمهٔ دیگر را برای رفتن به اولین و آخرین رکورد اضافه کنید. دستورهای فاکس پرو از قرار زیر هستند:
و

اجرای فرم

اجرای فرم همانند بحث مطرح شده در گفتار قبلی می‌باشد.

ارتقای مسیر یابی

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

ساخت یک فایل قابل اجرا

مرحلهٔ آخر ساختن یک چیز قابل اجرا است. بدین منظور ما به مدیر پروژه دوباره نیاز داریم. روی آن، بر روی دکمهٔ Build کلیک کنید.

گزینه‌های build

نسخهٔ استاندارد ویژوال فاکس پرو به شما اجازه می‌دهد تا dllها و فایل‌های اجرایی بسازید که بتوانند به راحتی توزیع شوند. گزینهٔ win32 executable را انتخاب کنید و تیک display errors را بزنید. سپس ok را بزنید تا فایل قابل اجرا ساخته شود

اجرای فایل قابل اجرا

شما می‌توانید فایل قابل اجرا را از داخل محیط توسعهٔ فاکس پرو با انتخاب Do از منوی program یا باتایپ Do cd.exe از پنجرهٔ فرمان اجرا کنید.
(دستورهای دیگر برای اجرای فایل cd.exe! یا RUN cd.exe)
اگر بخواهید یک فایل قابل اجرا را از خارج از محیط فاکس پرو اجرا کنید متوجه خواهید شد که با این کار برنامهٔ موردنظر یک لحظه روی صفحه نمایش ظاهر می‌شود و سپس ناپدید می‌گردد. مجبوریم حلقهٔ پردازش رویداد را شروع کنیم. به‌طوری‌که فاکس پرو به محض این که فرم نمایش داده می‌شود برای رویدادهای موس و صفحه کلید منتظر بماند.
از مدیر پروژ فرم را باز کرده روی سطح خود فرم دابل کلیک کنید یک پنجرهٔ ویرایش برای رویداد بارگذاری فرم موردنظر باز خواهد شد. روی جعبهٔ نشان دهندهٔ "load" کلیک کرده “activate” را از لیست رویدادها انتخاب کنید. آنگاه کد زیر را در رویداد activate تایپ کنید:
Read Events
این عمل حلقهٔ پردازش رویداد را شروع خواهد کرد اما در عین حال ما نیاز داریم حلقه را زمانی که فرم بسته می‌شود متوقف کنیم. برای این کار روی دکمهٔ close دابل کلیک کرده، رویداد کلیک آن را به صورت زیر تغییر بدهید:
This Form.Release()
Clear Events
بعد از همهٔ این‌ها فرم را بسته، فایل قابل اجرا را مجدداً بسازید. اکنون شما باید قادر باشید تا فاکس پرو را به‌طور کامل بسته به فایل قابل اجرای مورد نظر در مرورگر ویندوز راه پیدا کرده و با دابل کلیک کردن بر روی آن فایل قابل اجرای موردنظر را اجرا کنید.