MFC (Microsoft Foundation Classes) ব্যবহার করে কাস্টম ভ্যালিডেশন রুল তৈরি করা একটি গুরুত্বপূর্ণ কাজ, বিশেষ করে যখন আপনি ব্যবহারকারীর ইনপুট যাচাই করতে চান এবং সুনির্দিষ্ট শর্ত অনুযায়ী ভ্যালিডেশন প্রয়োগ করতে চান। MFC এ কাস্টম ভ্যালিডেশন সাধারণত Validation Controls অথবা Custom Code এর মাধ্যমে করা হয়।
এখানে, আমরা কাস্টম ভ্যালিডেশন রুল তৈরি করার জন্য বিভিন্ন পদ্ধতির আলোচনা করবো, যেমন TextBox ফিল্ডের কাস্টম ভ্যালিডেশন বা ইনপুট ফর্মের জন্য কাস্টম ভ্যালিডেশন ফাংশন তৈরি করা।
কাস্টম ভ্যালিডেশন রুল তৈরি করার জন্য সাধারণ পদ্ধতি
MFC তে সাধারণত Validation Controls যেমন CEdit, CComboBox, CListBox ইত্যাদি কন্ট্রোলসের মাধ্যমে ইনপুট যাচাই করা হয়। তবে কখনো কখনো কাস্টম ভ্যালিডেশন রুল প্রযোজ্য হতে পারে, যেখানে আপনার নিজস্ব কন্ডিশন অনুযায়ী যাচাই করতে হবে।
1. CEdit কন্ট্রোলের জন্য কাস্টম ভ্যালিডেশন
ধরা যাক, আপনি একটি CEdit কন্ট্রোলে কাস্টম ভ্যালিডেশন প্রয়োগ করতে চান, যেমন ইনপুটটি একটি নির্দিষ্ট ফরম্যাটে হতে হবে, বা শুধুমাত্র সংখ্যা বা অক্ষর গ্রহণ করতে হবে। এতে আপনি EN_CHANGE বা EN_KILLFOCUS মেসেজে কাস্টম ভ্যালিডেশন কোড যোগ করতে পারেন।
Code Example: কাস্টম ভ্যালিডেশন রুল যা শুধু ডিজিট অনুমোদন করবে:
void CMyDialog::OnEnKillfocusEdit1()
{
CString str;
m_editCtrl.GetWindowText(str); // CEdit থেকে টেক্সট নিন
// কাস্টম ভ্যালিডেশন: শুধুমাত্র সংখ্যা গ্রহণ করা হবে
for (int i = 0; i < str.GetLength(); i++)
{
if (!isdigit(str[i]))
{
AfxMessageBox(_T("Only numbers are allowed!"));
m_editCtrl.SetFocus(); // কন্ট্রোলে ফোকাস ফিরে দিন
return;
}
}
}
এখানে, যখন ব্যবহারকারী CEdit ফিল্ডে কিছু ইনপুট করেন এবং ফোকাস চলে যায়, তখন ইনপুটটি চেক করা হয়। যদি ইনপুটে কোনো সংখ্যা না থাকে, তবে একটি মেসেজ বক্স দেখানো হবে এবং ফোকাস ফিরে আসবে।
2. CComboBox কন্ট্রোলের জন্য কাস্টম ভ্যালিডেশন
CComboBox কন্ট্রোলের ক্ষেত্রে, আপনি কাস্টম ভ্যালিডেশন করতে পারেন যা শুধু নির্দিষ্ট মান (যেমন প্রিপপপুলেটেড আইটেম) সিলেক্ট করার অনুমতি দেবে।
Code Example: কাস্টম ভ্যালিডেশন রুল যা শুধুমাত্র নির্দিষ্ট আইটেমগুলোর মধ্যে থেকে একটি সিলেক্ট করতে দেবে:
void CMyDialog::OnCbnSelchangeCombo1()
{
CString str;
m_comboBox.GetLBText(m_comboBox.GetCurSel(), str); // CComboBox থেকে নির্বাচিত আইটেম
// কাস্টম ভ্যালিডেশন: শুধুমাত্র নির্দিষ্ট মান অনুমোদন করা হবে
if (str != _T("Option 1") && str != _T("Option 2"))
{
AfxMessageBox(_T("Please select a valid option!"));
m_comboBox.SetCurSel(0); // প্রথম আইটেম সিলেক্ট করুন
}
}
এখানে, যখন ব্যবহারকারী একটি কম্বো বক্স আইটেম সিলেক্ট করেন, তখন কাস্টম ভ্যালিডেশন চেক করা হয় এবং যদি নির্বাচিত আইটেমটি নির্দিষ্ট কোনো মান না হয়, তাহলে একটি মেসেজ বক্স দেখানো হবে।
3. CButton কন্ট্রোলের জন্য কাস্টম ভ্যালিডেশন
যখন ব্যবহারকারী একটি CButton ক্লিক করেন, তখন আপনি একটি কাস্টম ভ্যালিডেশন চেক করতে পারেন। উদাহরণস্বরূপ, একটি বাটন ক্লিক হওয়ার আগে নিশ্চিত করতে হবে যে অন্য কোনো ইনপুট ক্ষেত্রটি সঠিকভাবে পূর্ণ করা হয়েছে।
Code Example: বাটন ক্লিক করার আগে ইনপুট ভ্যালিডেশন:
void CMyDialog::OnBnClickedOk()
{
CString str;
m_editCtrl.GetWindowText(str); // CEdit থেকে টেক্সট নিন
// কাস্টম ভ্যালিডেশন: ইনপুট ফিল্ড খালি না থাকলে তবেই বাটন ক্লিক হবে
if (str.IsEmpty())
{
AfxMessageBox(_T("Please fill in the text field!"));
m_editCtrl.SetFocus();
}
else
{
CDialogEx::OnOK(); // ইনপুট সঠিক হলে ডায়ালগ বন্ধ করুন
}
}
এখানে, যখন ব্যবহারকারী OK বাটন ক্লিক করবেন, তখন প্রথমে ইনপুট চেক করা হবে। যদি CEdit ফিল্ডটি খালি থাকে, তবে একটি মেসেজ বক্স দেখানো হবে এবং বাটন ক্লিক করা হবে না।
4. Custom Validation Using Regular Expressions
কিছু ক্ষেত্রে, আপনি ইনপুটের জন্য আরো জটিল শর্ত প্রয়োগ করতে পারেন, যেমন একটি নির্দিষ্ট ফরম্যাটে ইনপুট (ইমেইল, ফোন নাম্বার, ইত্যাদি)। এ জন্য আপনি Regular Expressions ব্যবহার করতে পারেন। MFC তে এই কাজটি করার জন্য CRegEx বা CString এর Match মেথড ব্যবহার করা যায়।
Code Example: ইমেইল ফরম্যাট যাচাই:
void CMyDialog::OnEnKillfocusEdit1()
{
CString str;
m_editCtrl.GetWindowText(str); // CEdit থেকে টেক্সট নিন
// কাস্টম ভ্যালিডেশন: ইমেইল ফরম্যাট যাচাই
CRegEx regex;
regex.Init(_T("^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)*\\.\\w{2,3}$"));
if (!regex.Match(str))
{
AfxMessageBox(_T("Please enter a valid email address!"));
m_editCtrl.SetFocus();
}
}
এখানে, ইমেইল ফরম্যাট চেক করতে Regular Expressions ব্যবহার করা হয়েছে। যদি ইনপুট ইমেইল ফরম্যাটের সাথে মেলে না, তবে একটি মেসেজ বক্স দেখানো হবে।
সারাংশ
MFC তে Custom Validation Rules তৈরি করা খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি ব্যবহারকারীর ইনপুটের নির্দিষ্ট শর্ত পূরণ করতে চান। আপনি CEdit, CComboBox, CButton ইত্যাদি কন্ট্রোলসের মাধ্যমে কাস্টম ভ্যালিডেশন তৈরি করতে পারেন এবং Regular Expressions ব্যবহার করে আরো জটিল ইনপুট যাচাই করতে পারেন। কাস্টম ভ্যালিডেশন রুল আপনাকে সঠিক ইনপুট নিশ্চিত করতে এবং ব্যবহারকারীর জন্য একটি ভালো অভিজ্ঞতা তৈরি করতে সহায়তা করে।
Read more