MFC (Microsoft Foundation Classes) এর Dialog Data Exchange (DDX) এবং Dialog Data Validation (DDV) হল দুটি গুরুত্বপূর্ণ টেকনিক, যা ডায়ালগ উইন্ডো এবং অ্যাপ্লিকেশনের মধ্যে ডাটা ট্রান্সফার এবং ডাটা ভ্যালিডেশন পরিচালনা করতে ব্যবহৃত হয়। এই দুটি টেকনিক ডায়ালগ উইন্ডোতে ইউজারের ইনপুট পরিচালনা এবং তা অ্যাপ্লিকেশনে সঠিকভাবে রেন্ডার করতে সহায়তা করে।
Dialog Data Exchange (DDX)
DDX হল একটি প্রক্রিয়া, যার মাধ্যমে ডায়ালগ কন্ট্রোলস (যেমন Edit Box, Combo Box, Check Box, Radio Button) এবং অ্যাপ্লিকেশন ডেটা (যেমন Variables) এর মধ্যে ডাটা এক্সচেঞ্জ করা হয়। DDX এর মাধ্যমে ডায়ালগের কন্ট্রোলস থেকে ডাটা সংগ্রহ করা বা কন্ট্রোলসে ডাটা সেট করা যায়।
MFC তে, DDX সাধারণত DoDataExchange() ফাংশনের মাধ্যমে করা হয়। এই ফাংশনটি ডায়ালগের ডেটা ফিল্ডগুলোর মধ্যে মান পরিবর্তন করে, এবং এটি সিস্টেমের UI কন্ট্রোল এবং অ্যাপ্লিকেশনের ভেরিয়েবলের মধ্যে একে অপরকে আপডেট করতে ব্যবহৃত হয়।
- DDX উদাহরণ: একটি Edit Control এর মান একটি স্ট্রিং ভেরিয়েবলে এক্সচেঞ্জ করার জন্য নিচের কোডটি ব্যবহার করা হয়:
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_NAME, m_strName); // Edit control থেকে m_strName ভেরিয়েবলে মান নেওয়া
}
এখানে:
- IDC_EDIT_NAME হল কন্ট্রোল আইডি যা Edit Box এর সাথে যুক্ত।
- m_strName হল স্ট্রিং ভেরিয়েবল যা কন্ট্রোল থেকে ডাটা নেয়।
DDX এর মাধ্যমে, আপনি ডায়ালগের কন্ট্রোল এবং ভেরিয়েবলের মধ্যে একত্রিত ডাটা এক্সচেঞ্জ করতে পারেন, যা ডায়ালগের ফাংশনগুলোর কার্যকারিতা বাড়ায়।
Dialog Data Validation (DDV)
DDV হল একটি প্রক্রিয়া যা ডায়ালগের ইনপুটের বৈধতা পরীক্ষা করে। এটি ব্যবহারকারীর ইনপুট সঠিক এবং প্রত্যাশিত ফরম্যাটে আছে কিনা তা নিশ্চিত করতে সাহায্য করে। DDV সাধারণত DoDataExchange() ফাংশনের মধ্যে যুক্ত করা হয়, এবং এটি নিশ্চিত করে যে ব্যবহারকারী ইনপুটের মাধ্যমে কোনো ভুল বা অবৈধ ডাটা প্রবেশ করছে না।
MFC তে, DDV এর মাধ্যমে আপনি ইনপুট ডেটার ধরন, সাইজ, পরিসীমা ইত্যাদি যাচাই করতে পারেন। উদাহরণস্বরূপ, একটি ফিল্ডে ইনপুটের দৈর্ঘ্য বা ইনপুটের মান পরিমাণ সীমিত করতে DDV ব্যবহার করা হয়।
- DDV উদাহরণ: একটি Text Box ইনপুটের জন্য DDV সেট করা:
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
DDV_MaxChars(pDX, m_strName, 50); // Name এর দৈর্ঘ্য ৫০ এর বেশি হবে না
}
এখানে DDV_MaxChars ফাংশনটি যাচাই করবে যে m_strName ভেরিয়েবলে থাকা টেক্সটটি ৫০ চরিত্রের বেশি নয়। যদি ইনপুটের দৈর্ঘ্য ৫০ এর বেশি হয়, তবে একটি ত্রুটি বার্তা প্রদর্শিত হবে।
DDV এর অন্যান্য উদাহরণ:
- DDV_MinChars: কোনো টেক্সট ইনপুটের জন্য কমপক্ষে নির্দিষ্ট সংখ্যা চিহ্ন থাকা প্রয়োজন।
- DDV_CheckMask: ইনপুট ফিল্ডে একটি নির্দিষ্ট ফরম্যাট নিশ্চিত করতে ব্যবহৃত হয়।
DDX এবং DDV এর ব্যবহার একসাথে
DDX এবং DDV একসাথে ব্যবহার করলে, ডায়ালগের কন্ট্রোল থেকে ডেটা গ্রহণ করার সময় সেটির বৈধতাও নিশ্চিত করা যায়। সাধারণত, DoDataExchange() ফাংশনই DDX এবং DDV উভয়ের জন্য ব্যবহৃত হয়।
Code Example:
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
DDV_MaxChars(pDX, m_strName, 50); // ইনপুটের দৈর্ঘ্য যাচাই
DDX_Text(pDX, IDC_EDIT_AGE, m_nAge);
DDV_MinMaxInt(pDX, m_nAge, 18, 120); // বয়স ১৮ থেকে ১২০ এর মধ্যে থাকতে হবে
}
এই উদাহরণে:
- m_strName এর দৈর্ঘ্য ৫০ চরিত্রের মধ্যে থাকতে হবে।
- m_nAge অবশ্যই ১৮ থেকে ১২০ এর মধ্যে হতে হবে।
সারাংশ
DDX (Dialog Data Exchange) এবং DDV (Dialog Data Validation) MFC তে ডায়ালগ কন্ট্রোল এবং অ্যাপ্লিকেশন ডেটার মধ্যে সঠিকভাবে ডাটা এক্সচেঞ্জ এবং যাচাই করতে ব্যবহৃত হয়। DDX ডায়ালগ কন্ট্রোলস থেকে ডেটা নিয়ে আসা বা সেখানে ডেটা সেট করা সহজ করে, এবং DDV নিশ্চিত করে যে ইনপুট ডেটা বৈধ এবং প্রত্যাশিত ফরম্যাটে আছে। এই দুটি টেকনিক একত্রে ব্যবহার করলে ডায়ালগ উইন্ডোগুলোর কার্যকারিতা এবং নির্ভরযোগ্যতা বাড়ানো যায়।
Read more