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 لنرى النتيجة.
و للموضوع تتمة في مقالات قادمة ...