قواعد المشاركة في المنتدى

(أخبار التكنولوجيا) الموضوع:طريقة استخدام حبوب سايتوتك 00962781150400 بيع سايتوتك في قطر بواسطة: (دكتوره ياسمين2) :: (قسم الاعلانات) الموضوع:دورة قانون النقل البحري2019 بواسطة: (غادة السعيد) :: (منتدى Microsoft Visual Basic) الموضوع:برنامج محاسبة بواسطة: (لمياء على) :: (قسم الاعلانات) الموضوع:فني تركيب مطابخ بالرياض 0501533591 صقر المملكة بواسطة: (رحيق الجنة 1) :: (قسم الاعلانات) الموضوع:درس اساسيات برنامج بلندر بواسطة: (عمر تاج الدين) :: (قسم الاعلانات) الموضوع:قناه خاصه بالرياضة و التغذية بواسطة: (عمر تاج الدين) :: (قسم الاعلانات) الموضوع:شركة تنظيف خزانات بواسطة: (nanafananas) :: (قسم الاعلانات) الموضوع:افضل شركة عزل اسطح بالرياض بواسطة: (nanafananas) :: (قسم الاعلانات) الموضوع:شركة تنظيف واجهات زجاج بالرياض مفتاح الدقة كلين 0500801225 بواسطة: (nanafananas) :: (قسم الاعلانات) الموضوع:شركة تنظيف بالاحساء 0590352700 ديكورنيد بواسطة: (nanafananas) :: (قسم الاعلانات) الموضوع:فلل للبيع في دبي بواسطة: (مو السيد) :: (قسم الاعلانات) الموضوع:شركة نظافة بالهفوف 0558359575 النجم المثالي بواسطة: (nanafananas) :: (أخبار التكنولوجيا) الموضوع:شيخ روحاني رد المطلقه 00201026018176 بواسطة: (حزونبل) :: (قسم الاعلانات) الموضوع:بذور اشجار برية واشجار ظل وزينة توصيل مجاني بواسطة: (ضيااء) :: (قسم الاعلانات) الموضوع:ماهو تصحيح البصر بالليزك؟ وهل نتائجه دائمة؟ بواسطة: (turkiturk) :: (قسم الاعلانات) الموضوع:جهاز كشف الذهب الخام TDI من شركة جولدن ديتيكتور بواسطة: (نا ريمان) :: (قسم الاعلانات) الموضوع:شركة كوالتي-نقل عفش بالرياض بواسطة: (HGJNBF) :: (أخبار التكنولوجيا) الموضوع:سعر شريط حبوب سايتوتك الاصلي 00962781150400 بيع حبوب الاجهاض سايتوتك الاصلي بواسطة: (دكتوره ياسمين2) :: (قسم الاعلانات) الموضوع:شركة كوالتي-كشف تسربات المياه بالرياض بواسطة: (HGJNBF) :: (قسم الاعلانات) الموضوع:ماهو شلل بيل و كيفية علاجه بواسطة: (سلام العتيبي)


راديو القرآن

المواضيع المثبته: (منتدى تحليل و تصميم نظم المعلومات) الموضوع:تحليل كامل لبرنامج حسابات بواسطة: (الشجرة الطيبة) :: (منتدى مبرمجي ASP) الموضوع:برنامج مكتبة إلكترونية بواسطة: (عبدالله جابر شقليه) :: (منتدى Microsoft SQL Server) الموضوع:كتب SQL server بواسطة: (m.atassi) :: (منتدى الوورد والباور بوينت) الموضوع:برنامج عملاق باللغة العربية بواسطة: (هنوشه) :: (منتدى البرامج) الموضوع:7 اسطوانات لتعليم شهاده ICDL بالصوت والصوره بواسطة: (مستشفى الكمبيوتر) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:بعض ميزات أوركل 10g بواسطة: (وليد القدسي) :: (منتدى برمجة الألعاب) الموضوع:اعلان هام بواسطة: (مصطفي البارودي) :: (منتدى مبرمجي ASP) الموضوع:مشروع تخرج القرية الذكية المصرية بواسطة: (caco) :: (منتدى برمجة الألعاب) الموضوع:برنامج رائع لتصميم الألعاب بواسطة: (mjxp) :: (منتدى Microsoft SQL Server) الموضوع:كيف أقوم بنسخ البيانات فقط من جهازي الى الويب بواسطة: (أبو محمـد) :: (منتدى التصميم والجرافيكس) الموضوع:الكتابة باللغة العربية في برنامج فلاش بواسطة: (مبرمجة فلسطينية) :: (منتدى Microsoft Visual Basic) الموضوع:عرض الصور المخزنه في قاعدة البيانات بالكريستال ريبورت بواسطة: (ابو حمد) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:ما هي أوراكل وماتعرف عنها بواسطة: (وليد القدسي) :: (منتدى الأكسس) الموضوع:مثال على تغير الكائنات حسب مقاس الشاشه بواسطة: (startnet) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:كتب اوراكل (عربي) ...حمل... بواسطة: (عبد الرحمن) :: (منتدى البرامج) الموضوع:برنامج القرآن الكريم كاملاً مع التفسير بواسطة: (tarik-2007) :: (منتدى تصميم صفحات الويب) الموضوع:أرشيف المواضيع المميزة بواسطة: (alanees) :: (منتدى مبرمجي Microsoft Visual VB.NET) الموضوع:دورة تحزيم البرامج Setup & Deployment Applications by VS 2008 بواسطة: (Max Bayne) :: (منتدى الكتب و المقالات) الموضوع:الشرح الكامل التفصيلي المصور لمعرفة نسخة الأكسيس وتخفيض الأمان برمجيا بواسطة: (zahrah) :: (منتدى برمجة التقارير) الموضوع:كتاب كريستال ريبورت بواسطة: (شهرزاد)

عدد الصفحات : 6  1  2  3  4  5   > » إضافة رد إضافة موضوع جديد

> دورة تعليمية في تصميم دليل هاتف في دلفي
Bookmark and Share
تقييم الموضوع Label معدل التقيم:0
مشاركةالاثنين,13/محرم/1426 هـ,09:23 مساءً
المشاركة #1

نائب منتديات المحيط العربي
الرتبة في المنتدى:عقيد



المجموعة: الإدارة
المشاركات: 701
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:سوريا
رقم العضوية: 15





الأخوة الأكارم ..


هذا شرح خطوة بخطوة لتصميم برنامج هاتف بسيط بواسطة دلفي

المطلوب من أجل الاستفادة من الدورة الالمام بأساسيات الدلفي

وسيتم شرح كل خطوة بخطوتها نظرياً ثم عملياً مع الدعم بالصور والمرفقات اللازمة ..

أرجو المتابعة والتفاعل ..

مع تحياتي


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالاثنين,13/محرم/1426 هـ,09:55 مساءً
المشاركة #2

نائب منتديات المحيط العربي
الرتبة في المنتدى:عقيد



المجموعة: الإدارة
المشاركات: 701
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:سوريا
رقم العضوية: 15



الدرس الأول



سنبدأ بتحليل ما نريده من البرنامج وأبعاده

البرنامج هو برنامج بسيط جداً عبارة على دليل هاتف بسيط ، يتم تخزين الاسم - الكنية - العنوان - هاتف المنزل - هاتف العمل - الفاكس - المحمول - البريد الالكتروني - الموقع - ملاحظات

لن نعتمد على قواعد البيانات بل سنتعامل مع ملف نصي عادي

المطلوب من البرنامج : حفظ واستعراض الأسماء - البحث وفق أي حقل

إذاً .. دعونا نبدأ بالعمل :

نشغل برنامج دلفي وسيكون أمامنا الآن مشروع جديد به فورم فارغ طبعاً

سننجز القسم الأول من البرنامج ( تصميم الشكل) :
بعد وضع كلفة الحقول .. نستخدم زر BitBtn من مجموعة Additional .. نضعه ثم نعين خاصية Kind تساوي bkClose
ثم نغير الـ Caption إلى إغلاق (هذا الزر سيقوم الآن بإغلاق الفورم فوراً دون الحاجة إلى كنابة كود الإغلاق)
سيبدو الفورم كما يلي بعد الانتهاء من تصميم الشكل :


وهذا هو الملف مرفق


الملفات المرفقة
 Tel.rar ( 3.16ك ) عدد مرات التنزيل: 5029


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالثلاثاء,14/محرم/1426 هـ,11:12 مساءً
المشاركة #3

نائب منتديات المحيط العربي
الرتبة في المنتدى:عقيد



المجموعة: الإدارة
المشاركات: 701
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:سوريا
رقم العضوية: 15



الدرس الثاني


الآن كما نشاهد أن كل بطاقة في دليل الهاتف تتألف من عدد من الحقول ..
والمفروض من أجل سهولة العمل أن نقوم بتعريف نمط جديد Type خاص بالبطاقات

تعريف الأنماط الخاصة بالبرنامج :
1- يتم وضع تعريف الأنماط الخاصة بالبرنامج ضمن تعريفات كلمة Type الموجودة في أعلى Unit1
2- يأخذ تعريف نمط جديد مؤلف من عدة سجلات هذه الصيغة :

كود:


MyType = Record
Rec1 : Type ;
Rec2 : Type;
.
.
end;


3- بالنسبة لحالتنا سنسمي النمط الجديد PhoneCard وسيتم تعريفه كما يلي :

كود:


phoneCard = Record
FName,LName,Address : string;
HomeNo,JobNo,FaxNo,Mobile : string;
Email , Page, Rem : string;
End;



من أجل التعامل مع عدد من السجلات المرتبة يفضل استخدام تقنية اللوائح المترابطة وهي تقنية مهمة جداً في دلفي سيتم شرحها الآن بالتفصيل :
اللوائح المترابطة :تعتمد هذه التقنية على ربط مجموعة من أنماط السجلات مع بعضها البعض بواسطة متحولات من النمط مؤشر ، فما هو نمط المؤشر ؟؟
المؤشر : هو نمط معطيات يتم استخدامه لتخزين عنوان في الذاكرة أي أنه يدل على عنوان كائن ما في الذاكرة ، حيث يمكننا استخدام هذا العنوان للتعامل مع الكائن المعنون مباشرة
>> يتم تعريف متحول من النمط مؤشر لأحد الأنماط بوضع إشارة ^ قبل النمط
>> يتم اتخزين قيمة مؤشر في متحول بوضع إشارة @ قبل اسم الكائن المراد عنونته في متحول المؤشر
>> يتم التعامل مع الكائن المخزن في متحول من خلال وضع إشارة ^ بعد اسم المتحول من النمط مؤشر
مثال :

كود:


var
X, Y: Integer; // X and Y are Integer variables
P: ^Integer; // P points to an Integer
begin
X := 17; // assign a value to X
P := @X; // assign the address of X to P
Y := P^; // dereference P; assign the result to Y
end;


تستخدم المؤشرات في أحد أهم استخداماتها في بناء اللوائح المترابطة .. التي هي عبارة عن مجموعة متحولات من نمط سجل محجوزة في الذاكرة بحيث يحتوي كل متحول منها على عنوان متحول واحد آخر على الأقل بحيث تشكل سلسلة من المتحولات لهذا تدعى اللوائح المترابطة
ويتم إنشاء متحول جديد في الذاكرة من خلال التعليمة New بهذه الصيغة :

كود:


New(VarPointer)



مثال :

كود:


type
PListEntry = ^TListEntry;
TListEntry = record
Next: PListEntry;
Text: string;
Count: Integer;
end;
var
List, P: PListEntry;
begin
...
New(P);
P^.Next := List;
P^.Text := 'Hello world';
P^.Count := 1;
List := P;
...
end;




بناءً على ما تقدم سنقوم بتعريف نمط جديد من نوع مؤشر إلى النمط PhoneCard سنسمية PhonePointer
أيضاً سنقوم بتعديل النمط phoneCard وإضافة سجلان عليه هما Next و Prev من النمط PhonePointer
وسيصبح الكود كما يلي :

كود:


PhonePointer = ^PhoneCard;
phoneCard = Record
FName,LName,Address : string;
HomeNo,JobNo,FaxNo,Mobile : string;
Email , Page, Rem : string;
Next,Prev : PhonePointer;
End;




--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالأربعاء,15/محرم/1426 هـ,11:04 مساءً
المشاركة #4

نائب منتديات المحيط العربي
الرتبة في المنتدى:عقيد



المجموعة: الإدارة
المشاركات: 701
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:سوريا
رقم العضوية: 15



الدرس الثالث


من أجل التعامل مع البرنامج كقاعدة بيانات فإنه يلزمنا أزرار التنقل بين السجلات
التي هي :
سجل جديد ، السجل الأول ، السجل السابق ، السجل التالي ، السجل الأخير بالإضافة إلى 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ك ) عدد مرات التنزيل: 4108


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,16/محرم/1426 هـ,05:37 صباحاً
المشاركة #5

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 30
سجل في:الخميس,03/ذو الحجة/1425 هـ,08:22 صباحاً
الدولة:فلسطين
رقم العضوية: 1164



السلام عليكم
شو هذا استاذ مهند أي حيرتنا مره أكسس ومره فيجول بيسك ومره دوت واليوم دلفي، ما شاءلله عليك مخك لامم كل لغات البرمجة أنا خايف أحسدك بس والله ما شاءلله عليكم وربنا يقويك ، وياريت تكمل الدورة وإن شاءلله من اليوم سوف أكون من المتابعين لها.


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,16/محرم/1426 هـ,07:01 صباحاً
المشاركة #6

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 3
سجل في:الخميس,16/محرم/1426 هـ,06:02 صباحاً
الدولة:مصر
رقم العضوية: 1717



السلام عليكم ورحمة الله وبركاته
شكرا يا أخى على المجهو الوافر المبذول
والى الامام دائما بأذن الله


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,16/محرم/1426 هـ,02:46 مساءً
المشاركة #7

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 2
سجل في:الخميس,16/محرم/1426 هـ,02:42 مساءً
الدولة:سوريا
رقم العضوية: 1727



وفقك الله وجزاك الخير


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,16/محرم/1426 هـ,03:17 مساءً
المشاركة #8

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 16
سجل في:الثلاثاء,25/شوال/1425 هـ,02:25 مساءً
الدولة:السعودية
رقم العضوية: 766



ألف شكر لك أستاذنا القدير مهند عبادي

وعندي سؤال لو سمحت ..

لماذا لا نستخدم المصفوفات بدل اللوائح المترابطة خاصة وأنها أسهل بالاستخدام ؟؟


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,16/محرم/1426 هـ,05:17 مساءً
المشاركة #9

نائب منتديات المحيط العربي
الرتبة في المنتدى:عقيد



المجموعة: الإدارة
المشاركات: 701
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:سوريا
رقم العضوية: 15



الأخوة : أبو ربيع - lord369 - محمد ربيع - أبو ديب ..

شكراً لمساهمتكم ومروركم على الموضوع


الأخ أبو ديب ..

بالنسبة لعدم استعمال المصفوفات بدلاً عن اللوائح المترابطة فهذا لأن اللوائح المترابطة أكثر تلبية لاحتياجات البرنامج من حيث عدم محدودية عددها بعدد معين كما أنني قصدت من هذا المثال تعريف المتابعين للمؤشرات وأسلوب التعامل مع اللوائح المترابطة (وهي تقنية القليل فقط من يجيدها)..

تحياتي لك


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,16/محرم/1426 هـ,11:41 مساءً
المشاركة #10

نائب منتديات المحيط العربي
الرتبة في المنتدى:عقيد



المجموعة: الإدارة
المشاركات: 701
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:سوريا
رقم العضوية: 15



الدرس الرابع



الآن يجب أن نستخدم الإجراءات التي سبق لنا تصميمها :
عند عملية الانتقال بالأزرار يجب تخزين محتويات المعلومات الظاهرة على الشاشة في السجل في الذاكرة .. و إذا كان سجل جديد يجب قبلها أن يتم إضافة عنصر جديد من النوع phoneCard ... وبعد ذلك يجب اجراء عملية الانتقال ثم استدعاء إجراء ConfigMovePanel .. لذلك يجب تعريف متحول عام على مستوى الـ Unit من النوع Boolean سنسميه IsNewRec
كما سيلزم لنا تحديد السجل الأول والسجل الأخير والسجل الحالي لذلك سنقوم بتعريف 3 متحولات عامة من النوع PhonePointer سنسميها : FirstPoint , CurrPoint , LastPoint .
بحيث تصبح التعريفات العامة لمتحولات الوحدة Unit1 هكذا :
كود:


var
Form1: TForm1;
CurrentRec , RecordCount : LongInt;
IsNewRec : Boolean;
FirstPoint,CurrPoint,LastPoint : PhonePointer;



وبالاعتماد على المتحول IsNewRec سنقوم ببعض التعديلات على إجراء ConfigMovePanel وسنضيف غليه معالجة تفعيل زر سجل جديد حسب الحالة ، حيث أن زر GoNew يجب أن يكون غير متاح إذا كان السجل الحالي سجل جديد وكانت حقل الاسم فارغاً وسيصبح الإجراء بعد التعديل كما يلي:
كود:


Procedure ConfigMovePanel;
Begin
With Form1 Do
Begin
If IsNewRec then
Panel1.Caption := 'سجل جديد من '+ IntToStr(RecordCount)
Else
Panel1.Caption := IntToStr(CurrentRec) + ' من ' + IntToStr(RecordCount);
GoFirst.Enabled := (CurrentRec > 1);
GoPrevious.Enabled := GoFirst.Enabled ;
GoNext.Enabled := (CurrentRec < RecordCount);
GoLast.Enabled := GoNext.Enabled;
GoNew.Enabled := (Not IsNewRec) Or (Edit1.Text > ');
End;
End;



>> حدث الضغط على زر الانتقال للسجل الأول :

كود:


procedure TForm1.GoFirstClick(Sender: TObject);
begin
If IsNewRec then
Begin
CurrPoint := NewPhoneCard(CurrPoint);
LastPoint := CurrPoint;
End;
SaveToCard (CurrPoint);
CurrPoint:= FirstPoint;
GetFromCard (CurrPoint);
CurrentRec := 1;
IsNewRec := False;
ConfigMovePanel;
end;



>> حدث الضغط على زر الانتقال للسجل السابق :

كود:


procedure TForm1.GoPreviousClick(Sender: TObject);
begin
If IsNewRec then
Begin
CurrPoint := NewPhoneCard(CurrPoint);
LastPoint := CurrPoint;
End;
SaveToCard (CurrPoint);
CurrPoint:= CurrPoint^.Prev ;
GetFromCard (CurrPoint);
Dec(CurrentRec);
IsNewRec := False;
ConfigMovePanel;
end;



>> حدث الضغط على زر الانتقال للسجل التالي :

كود:


procedure TForm1.GoNextClick(Sender: TObject);
begin
SaveToCard (CurrPoint);
CurrPoint:= CurrPoint^.Next ;
GetFromCard (CurrPoint);
Inc(CurrentRec);
ConfigMovePanel;
end;



>> حدث الضغط على زر الانتقال للسجل الأخير :

كود:


procedure TForm1.GoLastClick(Sender: TObject);
begin
SaveToCard (CurrPoint);
CurrPoint:= LastPoint ;
GetFromCard (CurrPoint);
CurrentRec := RecordCount;
ConfigMovePanel;
end;



>> حدث الضغط على زر سجل جديد :

كود:


procedure TForm1.GoNewClick(Sender: TObject);
begin
If IsNewRec then
Begin
CurrPoint := NewPhoneCard(CurrPoint);
LastPoint := CurrPoint;
End;
SaveToCard(CurrPoint);
IsNewRec := True;
EmptyFields;
Inc(RecordCount);
CurrentRec := RecordCount;
ConfigMovePanel;
end;



>> أما الحالة التي يجب أن يبدأ بها البرنامج فيتم تحديدها من خلال حدث FormCreate كما يلي :

كود:


procedure TForm1.FormCreate(Sender: TObject);
begin
IsNewRec := true;
CurrentRec := 1;
RecordCount := 1;
ConfigMovePanel;
end;


نلاحظ في الإجراءات السابقة استخدامنا لتعليمة inc ووظيفتها زيادة قيمة المتحول الممرر وتعليمة Dec ووظيفتها انقاص قيمة المتحول الممرر
وأهم ما يجب الاستفادة منه في الإجراءات السابقة والانتباه له هو أسلوب بناء اللوائح المترابطة والتعامل مع المؤشرات


>> حدث عند تغير النص في حقل الاسم نضع هذا الكود :

كود:


GoNew.Enabled := (Not IsNew) Or (Edit1.Text > ');


ووظيفة هذا الكود هي أن يفعّل زر سجل جديد عند إدخال نص في حقل الاسم في حالة سجل جديد

عند هذه النقطة نكون قد أنجزنا الجزء الأساسي من البرنامج وأصبح قابلاً للاختبار ..




الملفات المرفقة
 Tel3.rar ( 8.4ك ) عدد مرات التنزيل: 3499


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة

    

عدد المتصفحين لهذا المنتدى «1»: (الضيوف «1» - المتخفون «0»)
الأعضاء «0»: .

عدد الصفحات : 6  1  2  3  4  5   > » إضافة رد جديد إضافة موضوع جديد



 
الوقت الأن:اليوم,11:10 صباحاً بتوقيت القدس المحتلة

Powered By arabmoheet v3.1

منتديات المحيط العربي  -  راسلنا  -   أعلى
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)