Skill

MFC এর Data Exchange এবং Validation Techniques

এমএফসি (MFC) - Microsoft Technologies

623

MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশনগুলিতে Data Exchange এবং Validation Techniques খুবই গুরুত্বপূর্ণ ভূমিকা পালন করে। ডাটা এক্সচেঞ্জ (Data Exchange) হল একটি প্রক্রিয়া যার মাধ্যমে ডায়ালগ বক্সের কন্ট্রোলের মধ্যে ডেটা আদান-প্রদান করা হয়, এবং ভ্যালিডেশন (Validation) হল সেই ডেটার সঠিকতা এবং পরিপূর্ণতা নিশ্চিত করার প্রক্রিয়া। এই দুটি কৌশল অ্যাপ্লিকেশনের ব্যবহারযোগ্যতা এবং সঠিকতা বজায় রাখতে সহায়ক।


Data Exchange (Data Xchange)

Data Exchange (DDX) MFC তে ডায়ালগ বক্সের কন্ট্রোল এবং ক্লাসের ভেরিয়েবলগুলির মধ্যে ডেটা আদান-প্রদান করার একটি প্রক্রিয়া। MFC তে, ডাটা এক্সচেঞ্জ করতে DDX পদ্ধতি ব্যবহার করা হয়। সাধারণত, ডায়ালগ বক্সে Edit, ComboBox, ListBox, Static ইত্যাদি কন্ট্রোলগুলির মাধ্যমে ইউজারের ইনপুট নেওয়া হয় এবং সেগুলি অ্যাপ্লিকেশনের ভেরিয়েবলে জমা করা হয়, বা আবার ভেরিয়েবলের মান কন্ট্রোলে প্রদর্শন করা হয়।

DDX ব্যবহার করার পদ্ধতি

MFC তে ডাটা এক্সচেঞ্জ করার জন্য DDX ফাংশন ব্যবহার করা হয়। এই ফাংশনটি DoDataExchange মেথডের মধ্যে কল করা হয়, যা ডায়ালগ বক্সের কন্ট্রোল এবং ক্লাসের ভেরিয়েবলের মধ্যে ডেটা এক্সচেঞ্জ করে।

void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_MY_EDIT, m_strMyEdit);  // Text কন্ট্রোল থেকে ভেরিয়েবলে ডেটা এক্সচেঞ্জ
    DDX_Check(pDX, IDC_MY_CHECK, m_bMyCheck); // Checkbox কন্ট্রোল থেকে ভেরিয়েবলে ডেটা এক্সচেঞ্জ
}

এখানে:

  • DDX_Text(pDX, IDC_MY_EDIT, m_strMyEdit) ব্যবহার করা হয়েছে, যেখানে IDC_MY_EDIT হল কন্ট্রোল আইডি এবং m_strMyEdit হল ক্লাসের ভেরিয়েবল। এই কোডটি টেক্সট কন্ট্রোলের ইনপুট কে m_strMyEdit ভেরিয়েবলে এক্সচেঞ্জ করবে।
  • DDX_Check(pDX, IDC_MY_CHECK, m_bMyCheck) ব্যবহার করা হয়েছে, যেখানে IDC_MY_CHECK হল চেকবক্সের আইডি এবং m_bMyCheck হল ভেরিয়েবল।

এই কোডটিতে ডেটা এক্সচেঞ্জ করার সময় pDX (CDataExchange) প্যারামিটার ব্যবহার করা হয় যা এই প্রক্রিয়াটিকে পরিচালনা করে।


Data Validation (ভ্যালিডেশন)

ডেটা ভ্যালিডেশন হল প্রক্রিয়া যার মাধ্যমে ইউজারের ইনপুট যাচাই করা হয়। MFC তে, ডায়ালগ বক্সের ইনপুটগুলো সঠিক কিনা তা যাচাই করার জন্য ভ্যালিডেশন করা হয়। ইনপুটের সঠিকতা যাচাই করার জন্য UpdateData() ফাংশন এবং কাস্টম ভ্যালিডেশন মেথড ব্যবহার করা হয়।

ভ্যালিডেশন করার পদ্ধতি

  1. UpdateData() ব্যবহার: UpdateData() ফাংশন ডায়ালগ বক্সের কন্ট্রোল থেকে ভেরিয়েবলে ডেটা আপডেট করে, বা ভেরিয়েবল থেকে কন্ট্রোলে ডেটা সেট করে। এই ফাংশনটি Data Exchange প্রক্রিয়া চালু করে এবং সাধারণত ভ্যালিডেশন শেষে ডেটা আপডেট করার জন্য ব্যবহৃত হয়।

    • OnOK() অথবা OnCancel() এর মধ্যে UpdateData() ব্যবহার করা হয়:
    void CMyDialog::OnOK()
    {
        UpdateData(TRUE); // ডায়ালগ থেকে ভেরিয়েবলে ডেটা আপডেট করা
    
        if (m_strMyEdit.IsEmpty()) {
            AfxMessageBox(_T("Please enter some text."));
            return;
        }
    
        CDialogEx::OnOK();
    }
    

    এখানে, UpdateData(TRUE) ফাংশনটি ডায়ালগ বক্স থেকে ভেরিয়েবলে ডেটা আপডেট করবে, এবং তারপর IsEmpty() ফাংশনটি যাচাই করবে যে ইনপুট ফিল্ড খালি আছে কি না।

  2. ভ্যালিডেশন ম্যাসেজ: যদি ইউজারের ইনপুট ভুল হয়, তবে ব্যবহারকারীকে AfxMessageBox() ফাংশনের মাধ্যমে একটি ম্যাসেজ শো করা যায়।

    void CMyDialog::OnOK()
    {
        UpdateData(TRUE); // ডায়ালগ থেকে ভেরিয়েবলে ডেটা আপডেট করা
    
        if (m_strMyEdit.IsEmpty()) {
            AfxMessageBox(_T("Please enter a valid name!"));
            return;  // যদি ইনপুট খালি থাকে তবে প্রক্রিয়া থামিয়ে দেওয়া হবে
        }
    
        CDialogEx::OnOK();
    }
    
  3. ইনপুট ভ্যালিডেশন: আপনি ইনপুটের ফরম্যাট বা কন্ট্রোলের জন্য কাস্টম ভ্যালিডেশন করতে পারেন। যেমন, একটি নাম্বার ইনপুট ফিল্ডে শুধু নম্বর গ্রহণ করা।

    void CMyDialog::OnOK()
    {
        UpdateData(TRUE); // ডায়ালগ থেকে ভেরিয়েবলে ডেটা আপডেট করা
    
        if (!CString(m_strMyEdit).IsNumeric()) {
            AfxMessageBox(_T("Please enter a valid number."));
            return;  // শুধুমাত্র নাম্বার ইনপুট গ্রহণ করবে
        }
    
        CDialogEx::OnOK();
    }
    

Custom Validation Functions (কাস্টম ভ্যালিডেশন ফাংশন)

কাস্টম ভ্যালিডেশন ফাংশন ব্যবহার করে আপনার ডায়ালগ বক্সের ইনপুটের জন্য নির্দিষ্ট শর্তাবলী তৈরি করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি ইমেইল ঠিকানা যাচাই করতে চান, তবে একটি কাস্টম ফাংশন ব্যবহার করা যেতে পারে।

BOOL CMyDialog::ValidateEmail(CString strEmail)
{
    CString pattern = _T("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$");
    CRegExp regex(pattern);
    return regex.Match(strEmail);
}

এই কাস্টম ফাংশনটি একটি ইমেইল ঠিকানার বৈধতা যাচাই করবে। আপনি UpdateData() এর পরে এই ধরনের কাস্টম ফাংশন ব্যবহার করতে পারেন।


সারাংশ

MFC তে Data Exchange এবং Validation Techniques ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের ইনপুট ডেটাকে কার্যকরভাবে ম্যানেজ ও যাচাই করতে পারেন। Data Exchange দ্বারা ডায়ালগ বক্সের কন্ট্রোল থেকে ভেরিয়েবলে ডেটা এক্সচেঞ্জ করা হয়, এবং Validation Techniques ব্যবহার করে ইনপুটের সঠিকতা যাচাই করা হয়। এই দুটি কৌশল অ্যাপ্লিকেশনটির স্থিতিশীলতা ও সঠিকতা নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By

DDX (Dynamic Data Exchange) এবং DDV (Dynamic Data Validation)

360

MFC (Microsoft Foundation Classes) তে DDX (Dynamic Data Exchange) এবং DDV (Dynamic Data Validation) হল দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, যেগুলি ডায়ালগ বক্সের মধ্যে ডেটা আদান-প্রদান এবং ডেটা যাচাইকরণের জন্য ব্যবহৃত হয়। এই দুটি ফিচার MFC অ্যাপ্লিকেশনগুলির মধ্যে ডেটা ব্যাবস্থাপনা সহজ করে তোলে এবং ব্যবহারকারীর ইনপুটের সাথে সম্পর্কিত বিভিন্ন ধরনের কাজ সহজে সম্পন্ন করতে সাহায্য করে।


DDX (Dynamic Data Exchange)

DDX হল একটি প্রক্রিয়া যা ডায়ালগ বক্সের কন্ট্রোলগুলোর সাথে ডেটার আদান-প্রদান পরিচালনা করে। MFC তে ডায়ালগ বক্স এবং উইন্ডো কন্ট্রোলের মধ্যে ডেটা স্থানান্তরের জন্য DDX ব্যবহৃত হয়। এর মাধ্যমে, আপনি অ্যাপ্লিকেশনের ভেরিয়েবলগুলোকে ডায়ালগ বক্সের কন্ট্রোল (যেমন Edit Box, Combo Box ইত্যাদি) এর সাথে সংযুক্ত করতে পারেন। ডায়ালগ বক্সের কন্ট্রোলের মধ্যে ইউজার ইনপুট নেওয়ার সময় অথবা ডেটা প্রক্রিয়াকরণের সময় DDX ব্যবহৃত হয়।

DDX এর মাধ্যমে ডায়ালগ বক্সে ব্যবহারকারীর ইনপুট ভ্যালু স্বয়ংক্রিয়ভাবে মেম্বার ভেরিয়েবলে প্রেরণ করা হয় এবং বিপরীতভাবে, মেম্বার ভেরিয়েবলের মান কন্ট্রোলের সাথে আপডেট হয়।

DDX ব্যবহার:

DDX ব্যবহারের জন্য, DoDataExchange ফাংশনটি ব্যবহার করা হয়, যা ডায়ালগ বক্সে এবং অ্যাপ্লিকেশনের ভেরিয়েবলের মধ্যে ডেটা আদান-প্রদান করে।

Code Example:

void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT_NAME, m_strName);  // m_strName ভেরিয়েবলকে Edit Box এর সাথে সম্পর্কিত করা
    DDX_Text(pDX, IDC_EDIT_AGE, m_nAge);     // m_nAge ভেরিয়েবলকে Edit Box এর সাথে সম্পর্কিত করা
}

এখানে DDX_Text ফাংশনটি IDC_EDIT_NAME এবং IDC_EDIT_AGE এর মধ্যে ডেটা আদান-প্রদান করবে। যখন ডায়ালগ বক্সের তথ্য পরিবর্তন হবে, তখন তা m_strName এবং m_nAge ভেরিয়েবলে সংরক্ষিত হবে।


DDV (Dynamic Data Validation)

DDV হল একটি প্রক্রিয়া যা ডায়ালগ বক্সের কন্ট্রোলগুলির ইনপুট যাচাই করার জন্য ব্যবহৃত হয়। যখন ব্যবহারকারী ডায়ালগ বক্সে ডেটা ইনপুট করেন, তখন DDV যাচাই করে যে ইনপুটটি বৈধ কিনা। উদাহরণস্বরূপ, আপনি নিশ্চিত করতে চান যে ইনপুট একটি নির্দিষ্ট ধরনের ডেটা (যেমন সঠিক বয়স বা ইমেইল ঠিকানা) তা সঠিক ফর্ম্যাটে রয়েছে কিনা।

DDV ব্যবহার করার মাধ্যমে, আপনি ডায়ালগ বক্সের ইনপুটের জন্য নির্দিষ্ট শর্তাবলী বা বিধিনিষেধ প্রয়োগ করতে পারেন।

DDV ব্যবহার:

DDV ফাংশন ব্যবহার করা হয় DoDataExchange ফাংশনের মধ্যে, যেখানে ইনপুট যাচাইকরণ ফাংশনগুলো যোগ করা হয়।

Code Example:

void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
    DDX_Text(pDX, IDC_EDIT_AGE, m_nAge);

    // ইনপুট যাচাইকরণ
    DDV_MinMaxChars(pDX, m_strName, 3, 50); // নামের জন্য ৩ থেকে ৫০ ক্যারেক্টারের সীমাবদ্ধতা
    DDV_MinMax(pDX, m_nAge, 18, 100);       // বয়সের জন্য ১৮ থেকে ১০০ এর মধ্যে থাকতে হবে
}

এখানে DDV_MinMaxChars এবং DDV_MinMax ফাংশনগুলি ইনপুট যাচাইকরণের জন্য ব্যবহৃত হয়েছে:

  • DDV_MinMaxChars: এটি নিশ্চিত করে যে নামের ইনপুট ৩ থেকে ৫০ ক্যারেক্টারের মধ্যে থাকবে।
  • DDV_MinMax: এটি বয়সের ইনপুট ১৮ থেকে ১০০ এর মধ্যে থাকতে হবে তা নিশ্চিত করে।

DDX এবং DDV এর মধ্যে পার্থক্য

  • DDX (Dynamic Data Exchange) মূলত ডেটা আদান-প্রদান পরিচালনা করে, যেখানে ভেরিয়েবলগুলোকে কন্ট্রোলের সাথে যুক্ত করা হয় এবং পরিবর্তনগুলির জন্য সিঙ্ক্রোনাইজেশন সম্পন্ন হয়।
  • DDV (Dynamic Data Validation) ডেটার বৈধতা যাচাই করে, যাতে ইনপুটটি নির্দিষ্ট শর্তাবলী পূর্ণ করে।

সারাংশ

MFC তে DDX এবং DDV ডায়ালগ বক্সে ডেটা এক্সচেঞ্জ এবং ইনপুট যাচাইকরণের জন্য ব্যবহৃত হয়। DDX এর মাধ্যমে কন্ট্রোলগুলোর সাথে ভেরিয়েবলগুলির ডেটা আদান-প্রদান করা হয়, এবং DDV এর মাধ্যমে ইনপুট যাচাই করা হয়, যাতে ব্যবহারকারীর ইনপুট সঠিক এবং গ্রহণযোগ্য হয়। এই দুটি ফিচার MFC অ্যাপ্লিকেশনগুলিতে ব্যবহারকারীর ইন্টারঅ্যাকশন আরও কার্যকরী এবং সঠিক করতে সাহায্য করে।

Content added By

Dialog Data Exchange এবং Data Mapping Techniques

350

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 নিশ্চিত করে যে ইনপুট ডেটা বৈধ এবং প্রত্যাশিত ফরম্যাটে আছে। এই দুটি টেকনিক একত্রে ব্যবহার করলে ডায়ালগ উইন্ডোগুলোর কার্যকারিতা এবং নির্ভরযোগ্যতা বাড়ানো যায়।

Content added By

Form এবং Control এর মধ্যে Data Binding

309

Data Binding হল একটি প্রযুক্তি যা ব্যবহারকারীর ইন্টারফেস (UI) কন্ট্রোল এবং ডেটাবেস বা মেমরি স্টোরেজ (ডেটা সোর্স) এর মধ্যে সম্পর্ক স্থাপন করে। MFC (Microsoft Foundation Classes) এ Form এবং Control এর মধ্যে ডেটা বাইন্ডিং ব্যবহার করা হয় যাতে UI কন্ট্রোল (যেমন TextBox, ComboBox, etc.) এর মান সরাসরি ডেটাবেস বা ডেটা স্ট্রাকচারের সাথে সংযুক্ত করা যায়। এই প্রক্রিয়া ব্যবহারকারীর জন্য ডেটার সাথে ইন্টারঅ্যাকশন সহজ করে তোলে, এবং এটি অ্যাপ্লিকেশনের কার্যক্ষমতা বাড়াতে সহায়তা করে।


ডেটা বাইন্ডিং এর গুরুত্ব

ডেটা বাইন্ডিং এর মাধ্যমে ফর্মের কন্ট্রোলগুলোর মান (যেমন টেক্সট, সিলেক্টেড ভ্যালু) স্বয়ংক্রিয়ভাবে ডেটাবেসের ডেটার সাথে সিঙ্ক্রোনাইজ হয়ে যায়। এটি ম্যানুয়ালি ডেটা আপডেট করার প্রয়োজনীয়তা কমিয়ে দেয়, কারণ কন্ট্রোল বা ফর্মের মান পরিবর্তন হলেই তা স্বয়ংক্রিয়ভাবে ডেটাবেসের সাথে আপডেট হয়ে যায়। এক্ষেত্রে, UI কন্ট্রোল এবং ডেটাবেসের মধ্যে সম্পর্ক বা binding তৈরি করা হয়।

MFC তে ডেটা বাইন্ডিং কিভাবে কাজ করে?

MFC তে ডেটা বাইন্ডিং Data Binding নামক প্রক্রিয়া বিভিন্ন ফাংশন বা ক্লাসের মাধ্যমে পরিচালিত হয়, যেমন CDataExchange, DDX_Control, DDX_Text, ইত্যাদি। এই ফাংশনগুলো ফর্মের কন্ট্রোলের মধ্যে ডেটা ট্রান্সফার পরিচালনা করে।


CDataExchange এবং DDX Functions

CDataExchange (DDX) MFC এর একটি গুরুত্বপূর্ণ ক্লাস যা ডেটা এক্সচেঞ্জ পরিচালনা করে। এটি ডায়ালগ এবং উইন্ডো কন্ট্রোলগুলোর মধ্যে ডেটা পাঠানো এবং গ্রহণ করার জন্য ব্যবহৃত হয়।

  • DDX_Control: একটি কন্ট্রোলের সাথে ডেটা এক্সচেঞ্জ করার জন্য ব্যবহৃত হয়।
  • DDX_Text: টেক্সট কন্ট্রোলের জন্য ডেটা এক্সচেঞ্জ করার জন্য ব্যবহৃত হয়, যেমন Edit Box কন্ট্রোল।
  • DDX_Check: একটি চেকবক্সের মান আপডেট বা রিট্রিভ করার জন্য ব্যবহৃত হয়।
  • DDX_Radio: একটি রেডিও বাটনের মান পেতে বা সেট করার জন্য ব্যবহৃত হয়।
  • DDX_CBString: ComboBox এর স্ট্রিং মান পাঠানোর জন্য ব্যবহৃত হয়।

Form এবং Control এর মধ্যে ডেটা বাইন্ডিং কিভাবে করবেন?

প্রথমে, ডায়ালগের কন্ট্রোলগুলোর সাথে ডেটা বাইন্ডিং শুরু করার জন্য, আপনাকে ডায়ালগ ক্লাসে সংশ্লিষ্ট কন্ট্রোল এবং ডেটার জন্য ভ্যারিয়েবল ডিক্লেয়ার করতে হবে। তারপরে DoDataExchange() মেথডের মধ্যে এই কন্ট্রোল এবং ডেটা এক্সচেঞ্জের কোড লিখতে হবে।

Code Example:

  1. কন্ট্রোলের সাথে ডেটা বাইন্ডিং:
// ডায়ালগ ক্লাসের মধ্যে
CEdit m_editBox;
CString m_strData;
  1. DoDataExchange() মেথডে ডেটা বাইন্ডিং:
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    
    // Edit Box এবং String ভ্যারিয়েবলের মধ্যে ডেটা এক্সচেঞ্জ
    DDX_Control(pDX, IDC_EDIT_BOX, m_editBox);   // Control Binding
    DDX_Text(pDX, IDC_EDIT_BOX, m_strData);       // Data Binding
}

এখানে DDX_Control ব্যবহার করে m_editBox কন্ট্রোলের সাথে কন্ট্রোল রেফারেন্স করা হয় এবং DDX_Text ব্যবহার করে কন্ট্রোলের মান m_strData এর সাথে বাইন্ড করা হয়।

  1. ডেটা আপডেট করা:
// ফাংশন থেকে ডেটা আপডেট
void CMyDialog::UpdateDataToControl()
{
    UpdateData(TRUE);  // ডেটা কন্ট্রোল থেকে ডেটা রিট্রিভ করবে
}

UpdateData(TRUE) ফাংশনটি ডায়ালগের কন্ট্রোল থেকে ডেটা ফিল্ডে মান পাঠানোর জন্য ব্যবহৃত হয়।


ডেটা বাইন্ডিং এর সুবিধা

  • ইউজার ইন্টারফেস সিঙ্ক্রোনাইজেশন: ডেটা পরিবর্তন হলে তা UI তে স্বয়ংক্রিয়ভাবে প্রতিফলিত হয় এবং vice versa।
  • ডেটা এক্সচেঞ্জ সহজ: ডায়ালগ কন্ট্রোল এবং ডেটাবেস বা ডেটা স্ট্রাকচার মধ্যে ডেটা পাঠানোর এবং গ্রহণ করার প্রক্রিয়া সহজ হয়ে যায়।
  • মাল্টি-কন্ট্রোল ডেটা এক্সচেঞ্জ: একাধিক কন্ট্রোলের মধ্যে ডেটা এক্সচেঞ্জ করা সম্ভব, যেমন একাধিক ফিল্ডের মান একসাথে আপডেট করা।

সারাংশ

MFC তে Form এবং Control এর মধ্যে Data Binding প্রক্রিয়া অ্যাপ্লিকেশনের ডেটা এবং UI কন্ট্রোলের মধ্যে একটি শক্তিশালী সংযোগ তৈরি করে, যা ব্যবহারকারীর জন্য আরো ইন্টারঅ্যাকটিভ এবং কার্যকরী অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। MFC এর CDataExchange এবং DDX/DDV ফাংশনগুলো ডেটা বাইন্ডিং সহজ এবং কার্যকর করে তোলে, যাতে ডায়ালগ এবং কন্ট্রোলগুলোর মধ্যে ডেটার এক্সচেঞ্জ স্বয়ংক্রিয়ভাবে পরিচালিত হয়।

Content added By

Custom Validation Rules তৈরি

276

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 ব্যবহার করে আরো জটিল ইনপুট যাচাই করতে পারেন। কাস্টম ভ্যালিডেশন রুল আপনাকে সঠিক ইনপুট নিশ্চিত করতে এবং ব্যবহারকারীর জন্য একটি ভালো অভিজ্ঞতা তৈরি করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...