عبدالرحمن
Jul 1 2001, 07:31 PM
توفر MFC عدة فئات عامة لنوافذ التخاطب وهذه الفئات هي :-
CFileDialog (انتقاء الملفات)
CFontDialog (انتقاء نمط الحروف)
CColorDialog (انتقاء الالوان)
CPageSetupDialog (اعداد صفحة الطباعة)
CPrintDialog (الطباعة)
CFindReplaceDialog (بحث واستبدال)
مثال لاستخدام مربع حوار فتح الملفات :-
أولا نضع textbox ونضع له متغير نسميه m_t
CFileDialog m_ldFile(TRUE);
if(m_ldFile.DoModal() ==IDOK)
}
;() m_t = m_ldFile.GetFileName
;() UpdateData
{
في اول سطر اعلنا عن متغير من فئة CFileDialog , وهذا المتغير نمرر له الدالة TRUE ليكون مربع حوار فتح , اما لو مررنا الدالة FALSE لعرض مربع حوار حفظ .
وفي السطر الثاني استعدينا الوظيفة DoModal للمتغير
والقيمة المرتجعة تحدد اي زر نقر المستخدم
اذا نقر فتح تعاد القيمة IDOK .
وفي السطر الثالث عرفنا المتغير m_t بالوظيفة GetFileName للمتغير m_ldFile , وهذه الوظيفةتعطيك اسم الملف الذي اختاره المستخدم.
وهناك وظائف كثيرة منها :-
GetFileExt : تعطيك امتداد الملف
GetPathName تعطيك دليل الملف
أما الدالة UpdateData فاني باذن الله سوف اشرحها لاحقا
أو احد الاخوان يتكرم ويشرحها ..
لانني حتى الان لم استوعبها جيدا .
ملاحظة :- اضافة المتغير للاداة تكون كالتالي :_
من القائمة المنسدلة للاداة اختر classwizard ومن اداة التبويب اختر Member Variable اختر العنصر ومن ثم Add Variable .
هذا والله الموفق .
عبدالرحمن
Jul 6 2001, 12:40 PM
السلام عليكم ..
اذا ما عليكم كلفة تشرحولنا وتوضحولنا وظيفة ال UpdateData
وشكرا ..
هاني الأتاسي
Jul 6 2001, 01:43 PM
شرح UpdateData :
يمكن من خلال الClass Wizard ربط متحولات بالأدوات التي على نافذتك فمثلا يمكن ربط المتحوول m_strTextBox بصندوق نص حيث يكون ذاك التحول من نوع CString ...
إن UpdateData تحتاج إلى تحديد بارامتر واحد (قيمته الافتراضية هي TRUE) وتكون وظيفتها على حسب قيمة البارامتر :
TRUE : يعني أن جميع المتحولات التي قمت باضافتها عن طريق ال Wizard سوف تأخذ القيم الموجودة في عناصر النافذة Controls .
FALSE : سوف يتم تجديد عناصر النافذة بالقيم الجديدة الموجودة في المتحولات ..
فمثلا إذا قمت بكتابة التعليمة ..
UpdateData() فسوف تقوم بنقل ما يحتوي عليه صندوق النص إلى المتحول m_strTextBox .. أما مثلا إن أردت تجديد هذا الصندوق بمعلومات جدبدة فإنك تكتب مثلا ..
m_strTextBox = "New Data";
UpdateData(FALSE);
إن التابع UpdateData يقوم باستدعاء التابع DoDataExchange والتي تحتوي على العديد من توابع ال DDX أو (Dialog Data Exchange) و DDV أو (Dialog Data Validate) . الأولى تقوم بتبادل البيانات من وإلى عناصر التحكم والثانية وظيفتها التأكد من القيمة الموجودة في عناصر التحكم صحيحة . فإذا اختل الشرط المحدد في أي من ال DDV فإن رسالة تظهر إلى المستخدم تخبره بالخطأ (مثلا القيمة خارج المجال المحدد به) ويذهب ال Focus إلى عنصر التحكم الذي خل بهذا الشرط ..
إن التابع DoDataExchange يقوم ال Wizard بالاضافة والتعديل فيه لكن في المراحل المتقدمة يمكنك أن تعدل فيه وتضيف توابع DDV و DDX من برمجتك والتي تدعم أنواع متحولات جديدة ..
هذا بشكل بسيط وأرجو أن تخبرني إذا أردت أن أشرح أكثر..