DataBinding in Delphi .Net Applications
أضافه Issam Ali في اثنين, 07/02/2007 - 10:19
مفهوم الـ DataBinding قد يكون مفهوماً جديداً على مبرمجي دلفي القادمين حديثاُ على بيئة الـ .NET والذين لديهم خلفية في برمجة Win32 لكني في هذا المقال سأحاول تبسيط الموضوع قدر الإمكان مع إعطاء مثال عملي لتوضيح هذا المفهوم.
هناك نوعين من الـ DataBinding في بيئة الـ .NET هما
Simple Binding : ويشمل (Field to Field – Object to Object)
Complex Binding : ويشمل (Datasets - Arrays)
في الـ Simple DataBinding يمكننا أن نربط خاصية Property  لـ عنصر Component أو بالأحرى لـ Control إلى خاصية Property  لغرض Object .
txtPersonFirstName.DataBindings.add(‘text’,Per,’FirstName’);
حيث أن المتحول الأول للإجرائية Add  يمثل اسم (نص) الخاصية من العنصر (Component) التي سنقوم بربطها. أما المتحول الثاني فهو الغرض (Object) الذي سنقوم بربط خاصية منه إلى العنصر. أما المتحول الثالث فهو اسم الخاصية (نص) من الغرض التي سنقوم بربطها إلى الخاصية من العنصر (Component)
 لتوضيح هذا المفهوم نعرض لمثال عملي.
نبدأ مشروع دلفي (.Net) جديد من نوع (Windows Form Application)
نقوم الآن بتعريف صف جديد TPerson  على الشكل التالي:
TPerson = Class
  private
    FLastName: String;
    FFirstName: String;
    procedure set_FirstName(const Value: String);
    procedure set_LastName(const Value: String);
  Public
  published
    Property FirstName :String read FFirstName write set_FirstName;
    Property LastName :String read FLastName write set_LastName;
  End;
implementation
{ TPerson }
procedure TPerson.set_FirstName(const Value: String);
begin
  FFirstName := Value;
end;
procedure TPerson.set_LastName(const Value: String);
begin
  FLastName := Value;
end;
الآن نحتاج إلى نموذج (Form ) عليها العناصر التي توضحها الصورة
الآن نقوم بتعريف Global Variable   من النوع أو الصف TPerson
var
  Per :TPerson
بعد ذلك نكتب الشيفرة التالية للحدث Load    للنموذج ( Form ) ليصبح كما يلي:
procedure TWinForm.TWinForm_Load(sender: System.Object; e: System.EventArgs);
begin
  per := TPerson.Create;
  per.FirstName := 'Issam';
  Per.LastName := 'Ali';
  txtPersonFirstName.DataBindings.Add('Text',per,'FirstName');
  txtPersonLastName.DataBindings.Add('Text',Per,'LastName');
end;
بذلك نكون قد ربطنا الخاصية ‘Text’ من العنصر txtPersonFirstName الذي هو TextBox    إلى الخاصية FirstName من الغرض Per الذي هو TPerson
كما قمنا بربط الخاصية ‘Text’ من العنصر txtPersonLastName الذي هو TextBox    إلى الخاصية LastName من الغرض Per الذي هو TPerson
و لا ننسى هنا طبعاً أن نقوم بإزالة الغرض Per الذي قمنا ببنائه  عند إغلاق البرنامج أو الواجهة
procedure TWinForm.TWinForm_Closed(sender: System.Object; e: System.EventArgs);
begin
  per.Free;
end;
الآن عند تشغيل البرنامج سنلاحظ أن مربعات النص TextBoxs قد أظهرت القيم الموجودة في  FirstName و LastName للغرض  Per
 إلى هنا الأمور عادية لكن الشيء الجميل هو أنه عند تغيير القيم الموجودة في مربعات النص فإن قيم الخاصية المربوطة معها تتغير و للتأكد من ذلك نضيف الكود التالي إلى  إلى حدث Click للزر Button1 بحيث يصبح.
procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
begin
  MessageBox.Show('FirstName : '+Per.FirstName+#13+'LastName : '+Per.lastName);
end;
الآن نقوم بتشغيل البرنامج ثم نغير قيم مربعات النص لتصبح كما في الصورة ونضغط الزر Button1 لنرى النتيجة.
و للموضوع تتمة في مقالات قادمة ...
