الدرس الثالث
من أجل التعامل مع البرنامج كقاعدة بيانات فإنه يلزمنا أزرار التنقل بين السجلات
التي هي :
سجل جديد ، السجل الأول ، السجل السابق ، السجل التالي ، السجل الأخير بالإضافة إلى
Panel نستخدمها لعرض رقم السجل الحالي بحيث يصبح شكل النموذج كما يلي :

وسنسمي الأزرار على التوالي :
GoNew - GoPrevious - GoNext - GoLast ولعرض تعليقات
Hints للأزرار نكتب في خاصية
Hint لكل زر شرح عنه .. ثم نجعل خاصية
ShowHint تساوي
True 
لنقم الآن بتحديد الإجراءات والدوال التي تلزم لنا في البرنامج لكي نقوم ببرمجتها وهي :
>> دالة لإضافة عنصر جديد من النمط
phoneCard وربطه في اللائحة المترابطة والبطاقات الموجودة
>> إجراء تخزين القيم الموجودة في الفورم ضمن عنصر من النمط
phoneCard>> إجراء عرض عنصر
phoneCard في فورم
>> إجراء تفريغ الحقول في الفورم
>> إجراء إظهار رقم السجل الحالي في الـ
Panel بالإضافة إلى تحديد حالة
Enabled للأزرار حسب السجل الحالي

1- دالة إضافة عنصر جديد من النوع
phoneCard وربطه في اللائحة المترابطة والبطاقات الموجودة :
هذه الدالة وظيفتها إنشاء عنصر جديد من النمط
phoneCard وتخزين عنوان العنصر السابق لها في خاصية
Prev وتخزين عنوان العنصر الجديد في خاصية
Next للعنصر السابق وتعود هذه الدالة بقيمة من النوع
PhonePointer كمؤشر للعنصر الجديد الذي تم إنشاؤه
وسنمرر لهذه الدالة موشر للعنصر السابق
وهذه هي الدالة(نكتبها في آخر ال
Unit1 قبل كلمة
End.) :
كود: Function NewPhoneCard(PLastCard : PhonePointer):PhonePointer; Var NewCard : PhonePointer; Begin New(PNewCard); PNewCard^.Prev := PLastCard; If PlastCard <> nil then PLastCard^.Next := PNewCard Else FirstPoint:=PNewCard; NewPhoneCard := PNewCard; End;
|
ويجب أن لا ننسى أننا يجب أن نصرح عن أي إجراء أو دالة أعلى الـ Unit1 بعد التصريح عن المتحولات العامة حتى نتمكن من استعماله في أجزاء الـ Unit الأخرى
كما نشاهد :
كود: var Form1: TForm1;
Function NewPhoneCard(var PLastCard : PhonePointer):PhonePointer;
implementation
|

2- إجراء تخزين القيم الموجودة في الفورم ضمن عنصر من النمط
phoneCardكود: Procedure SaveToCard(PCard : PhonePointer); Begin With Form1 Do Begin Pcard^.FName := Edit1.Text; Pcard^.LName := Edit2.Text; Pcard^.Address := Edit3.Text; Pcard^.HomeNo := Edit4.Text; Pcard^.JobNo := Edit5.Text; Pcard^.FaxNo := Edit6.Text; Pcard^.Mobile := Edit7.Text; Pcard^.Email := Edit8.Text; Pcard^.Page := Edit9.Text; Pcard^.Rem := Edit10.Text; End; End;
|

3- إجراء عرض عنصر
phoneCard في الفورم :
كود: Procedure GetFromCard(PCard : PhonePointer); Begin With Form1 Do Begin Edit1.Text := Pcard^.FName; Edit2.Text := Pcard^.LName; Edit3.Text := Pcard^.Address; Edit4.Text := Pcard^.HomeNo; Edit5.Text := Pcard^.JobNo; Edit6.Text := Pcard^.FaxNo; Edit7.Text := Pcard^.Mobile; Edit8.Text := Pcard^.Email; Edit9.Text := Pcard^.Page; Edit10.Text := Pcard^.Rem; End; End;
|

4- إجراء تفريغ الحقول في الفورم :
كود: Procedure EmptyFields; Begin With Form1 Do Begin Edit1.text := '; Edit2.text := '; Edit3.text := '; Edit4.text := '; Edit5.text := '; Edit6.text := '; Edit7.text := '; Edit8.text := '; Edit9.text := '; Edit10.text := '; End; End;
|

5- إجراء إظهار رقم السجل الحالي في الـ
Panel بالإضافة إلى تحديد حالة
Enabled للأزرار حسب السجل الحالي
رقم السجل الحالي : يمكننا معرفة رقم السجل الحالي إذا استخدمنا متحول عام رقمي كعداد للسجلات .. ويتم التعريف عن المتحولات العامة في بداية الـ
Unit1 بعد كلمة
var سنسمي هذا المتحول الذي يدل على السجل الحالي
CurrentRec .. وسنضيف متحول عام آخر يدل على عدد السجلات بشكل عام سنسميه
RecordCount .. وهذان المتحولان يجب أن يكونا من النمط
LongInt وبالاعتماد على قيمة هذين المتحولين يمكننا أن نكتب في
Panel قيمة السجل الحالي وعدد السجلات الإجمالي كما يلي :
كود: Form1.Panel1.Caption := IntToStr(CurrentRec) + ' من ' + IntToStr(RecordCount);
|
وأيضاً بالاعتماد عليها بإمكاننا تحديد حالة أزرار التنقل
(متاحة
/غير متاحة
) كما يلي :
السجل الحالي
= 1 : عدم تفعيل أزرار
GoFirst - GoPrevious السجل الحالي هو الأخير : عدم تفعيل أزرار
GoNext - GoLast وهكذا يكون الإجراء كما يلي :
كود: Procedure ConfigMovePanel; Begin With Form1 Do Begin Panel1.Caption := IntToStr(CurrentRec) + ' من ' + IntToStr(RecordCount); GoFirst.Enabled := (CurrentRec > 1); GoPrevious.Enabled := GoFirst.Enabled ; GoNext.Enabled := (CurrentRec < RecordCount); GoLast.Enabled := GoNext.Enabled; End;
|

الملفات المرفقة
Tel1.rar ( 7.13ك )
عدد مرات التنزيل: 4403