|
این مبحث در
برنامه نویسی
ویندوز بسیار مهم
است. متغیرهای عضوی (Member
Variable) دستگیره ای برای
تنظیم کنترل ها
هستند. با استفاده از
آن ها می توانید هر
تغییری که بخواهید
در کنترل مورد
نظرتان ایجاد کنید.
به عنوان مثال برای
متن یک Edit متغیری به
نام edit1 از نوع رشته
تعریف می کنیم و در هر
نقطه ای از کد که
بخواهیم متن آن را به
این صورت تغییر می
دهیم:
edit1 = "Piece of cake!";
برای تعریف یک
متغیر عضوی در Editor (قسمت
طراحی فرم) رایت کلیک
کنید و ClassWizard را انتخاب
کنید. در پنجره ی باز
شده وارد تب Member Variables شوید.
وسط این تب لیستی از
کنترل های موجود روی
فرم با نام شناسایی
آن ها نمایش داده می
شود، البته کنترل
هایی مانند static نمی
توانند متغیر عضوی
داشته باشند.اگر نام
کنترل مورد نظر را
نمی دانید، در Editor آن را
انتخاب کنید تا نام
آن در WizardBar نمایش داده
شود. به عکس آن توجه
کنید:

به Member Variable بر می
گردیم. یکی از کنترل
ها را انتخاب کنید و
روی Add Variable کلیک کنید. Member variable name
نام متغیر تعریفی می
باشد (مانند edit1 در مثال
بالا). Category معمولا یکی
از دو مقدار Value یا Control می
باشد. با انتخاب Value
متغیر به مقدار
کنترل اشاره می کند
(دستگیره ی کنترل
مقدار است) مثل متن یک
Edit یا چک بودن یک Check Box، و با
انتخاب Control متغیر به کل
کنترل اشاره می کند.
بسیاری از کنترل ها
فقط دارای حالت دوم
هستند. آخرین فیلد Variable type
است که نوع متغیر را
تعیین می کند. بسته به
کنترل و Category انتخابی
نوع های موجود در
لیست متفاوت هستند.
DynamicMessage (پیغام پویا):
برای یادگیری
بیشتر می خواهیم
برنامه ای بنویسیم
که کاربر متن و Title یک
پیغام را تایپ کند و
با کلیک دکمه ای آن را
نمایش دهد. یک پروژه ی
جدید به نام پیغام پویا
بسازید و فرمی مثل
فرم زیر طراحی کنید:

برای Edit اول
متغیری به نام title با
تنظیمات Value و CString (رشته) و
برای Edit دوم متغیری به
نام message با همان
تنظیمات title تعریف
کنید. حالا روی دکمه ی
Show Message دابل کلیک کنید و
کد زیر را برای
رویداد کلیک آن
بنویسید:
void CDynamicMessageDlg::OnButton1()
{
UpdateData(true);
MessageBox(message, title);
UpdateData(false);
}
تابع UpdateData متغیر
های عضوی را کنترل می
کند. در صورتی که
هنگام فراخوانی
مفدار true را به آن
بدهیم، از آن به بعد
همیشه متغیرها نسبت
به کنترل ها و همچنین
کنترل ها نسبت به
متغیر ها به روز می
مانند، یعنی اگر
کاربر متنی را در Edit
تایپ کند message نیز همان
متن را در خود ذخیره
می کند، و اگر برنامه
نویس محتویات message را
تغییر دهد متن Edit نیز
تغییر می کند. دقت
کنید که پس از اتمام
کار با متغیر های
عضوی باید UpdateData را با
مقدار false فرابخوانید،
در غیر این صورت
برنامه درست کار
نخواهد کرد. در ضمن
این را هم بدانید که
تنها وقتی متغیر شما
به Value اشاره می کند به UpdateData
نیاز دارید، در حالت
Control نیازی به آن نیست.
SimpleEvaluator (ارزیاب ساده):
دومین تمرین ما
انجام محاسبات ساده
ی ریاضی و چاپ نتایج
آن است. نام پروژه را
به ارزیاب ساده تغییر
دهید و فرمی مانند
شکل زیر بسازید:

نام Member Variable های سه Edit را
به ترتیب num1، num2 و ans و نوع
هر سه را double (عدد اعشاری)
تنظیم کنید. حالا
برای هر چهار Button کد زیر
را بنویسید:
void CSimpleEvaluatorDlg::OnButton1()
{
UpdateData(true);
ans = num1 + num2;
UpdateData(false);
}
void CSimpleEvaluatorDlg::OnButton2()
{
UpdateData(true);
ans = num1 - num2;
UpdateData(false);
}
void CSimpleEvaluatorDlg::OnButton3()
{
UpdateData(true);
ans = num1 * num2;
UpdateData(false);
}
void CSimpleEvaluatorDlg::OnButton4()
{
UpdateData(true);
ans = num1 / num2;
UpdateData(false);
}
همان طور که
متوجه شدید، دکمه
های Button1، Button2، Button3 و Button4 به
ترتیب عملگر های +، -، *
و / هستند. مانند تمرین
قبل، در این جا هم از
UpdateData استفاده شده است.
برنامه را اجرا و
نتیجه را مشاهده
کنید.
|
IP: 38.107.191.102 |
Country: United States
|
Browser: Unknown |
OS: Unknown |
|
|