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

(قسم الخدمات) الموضوع:برنامج كاشير بواسطة: (لمياء على) :: (قسم الاعلانات) الموضوع:الافاكر بواسطة: (لمسه احساس) :: (قسم الاعلانات) الموضوع:دورة إدارة انظمة المعلومات الحكومية بواسطة: (marwa nasser) :: (قسم الاعلانات) الموضوع:يونيفورم لعمال الهاوس كيبنج بجميع المجالات 01200561116 بواسطة: (joyjojo288) :: (قسم الاعلانات) الموضوع:أحدث كاميرات مراقبة متحركة IP 2MP ماركة CONVOY بواسطة: (royalrom) :: (قسم الاعلانات) الموضوع:افضل شركة ديكورات فلل 01119959188 بواسطة: (joyjojo288) :: (أخبار التكنولوجيا) الموضوع:اهلا و سهلا بكم بواسطة: (لمسه احساس) :: (قسم الاعلانات) الموضوع:كاميرات مراقبة داخلية IP Cameras 2MP بالخصائص الذكية ماركة ZKTECO بواسطة: (royalrom) :: (منتدى الأكسس) الموضوع:شرح سريع لنقل سجل سطر من جدول الى جدول اخر بدون اكواد بواسطة: (xhanyx) :: (أخبار التكنولوجيا) الموضوع:شركات تغليف العفش بجدة بواسطة: (لمسه احساس) :: (قسم الاعلانات) الموضوع:تنسيق زهور وكوش افراح دبى 0561932441 افراحى بواسطة: (remo2019) :: (قسم الاعلانات) الموضوع:شركات تنظيف المبانى دبى 0561153381 بروف بواسطة: (مسوق كوم) :: (قسم الاعلانات) الموضوع:تركيب رحام بعجمان 0509079418 المحترف بواسطة: (remo2019) :: (قسم الاعلانات) الموضوع:دورة المراجعة الاستراتيجية للعمليات التدريبيه تعقد في دبي المغرب لندن جورجيا برشلونه بواسطة: (مركز تدريب) :: (قسم الاعلانات) الموضوع:دورة تصميم نظم التدريب والمراجعه الاستراتيجية للعمليات التدريبية تعقد في لندن باريس بواسطة: (مركز تدريب) :: (قسم الاعلانات) الموضوع:دورة مهارات تحفيز الذات والاخرين تعقد في كوالالمبور اسطنبول تبليسي اندونيسيا تايلاند بواسطة: (مركز تدريب) :: (قسم الاعلانات) الموضوع:دوره تدريبيه في ادارة شؤون الموظفين تعقد في شرم الشيخ مراكش تونس بيروت الاردن تركيا بواسطة: (مركز تدريب) :: (قسم الاعلانات) الموضوع:دورة إدارة الموارد البشرية وفقاً لمدخل إدارة الجودة الشاملة تعقد في لندن باريس مدريد بواسطة: (مركز تدريب) :: (قسم الاعلانات) الموضوع:شركة تي كاب للتمويل بواسطة: (عمر تاج الدين) :: (قسم الاعلانات) الموضوع:دورة الإتجاهات المعاصرة في إدارة الموارد البشريه تعقد في اسطنبول كوالالمبور جورجيا بواسطة: (مركز تدريب)


راديو القرآن

المواضيع المثبته: (منتدى برمجة الألعاب) الموضوع:استراتيجية انتاج و تسويق الالعاب بواسطة: (مصطفي البارودي) :: (قسم أوفيس 2007) الموضوع:هذا القسم ارشيف المشاركات في منتدي الاكسس بواسطة: (startnet) :: (منتدى برمجة الشبكات في بيئة الدوت نت) الموضوع:Dot Net Networks & TCP/IP Programming بواسطة: (fmo_82) :: (منتدى مبرمجي ASP) الموضوع:برنامج مكتبة إلكترونية بواسطة: (عبدالله جابر شقليه) :: (منتدى برمجة التقارير) الموضوع:شرح طريقة اضافة تقرير Crystal Reports في الـ ASP.NET بواسطة: (FunctionSys) :: (منتدى مبرمجي Microsoft Visual VB.NET) الموضوع:ارشيف جميع البرامج التى صنعها اعضاء قسم الدوت نت بواسطة: (alaa gomaa) :: (لغة PHP) الموضوع:مجموعة اكواد رائعة بواسطة: (محمد جمعة) :: (منتدى مبرمجي ASP.NET) الموضوع:كيفية ربط الأوراكل مع asp.net بواسطة: (عبدالله جابر شقليه) :: (كتب عن VB.NET) الموضوع:كتب VB.NET عربي بواسطة: (عبد الرحمن) :: (قسم التعاميم والشكاوي) الموضوع:هنيئا للشعب المصري بواسطة: (صهيب جاويش) :: (القسم المفتوح) الموضوع:إلا رسول الله صلى الله عليه وسلم بواسطة: (alanees) :: (منتدى مبرمجي ASP.NET) الموضوع:كيفية قرائة الصحف الإلكترونية والكتب والمجلات عبر الانترنت بواسطة: (عبدالله جابر شقليه) :: (منتدى الأكسس) الموضوع:الوصل الي المساعده بشكل سريع وتحميل المرفقات الى المنتدي بواسطة: (startnet) :: (منتدى الوورد والباور بوينت) الموضوع:مكتبة الوورد بواسطة: (ramies) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:E-Business Suite بواسطة: (وليد القدسي) :: (منتدى Microsoft Excel) الموضوع:شرح الفيجوال بيزيك للمتوسطين vba بواسطة: (hs889) :: (منتدى مبرمجي Microsoft Visual VB.NET) الموضوع:الادوات الجديده Controls فى الدوت نت بواسطة: (alaa gomaa) :: (منتدى Microsoft Visual Basic) الموضوع:الدليل الأسرع لأبرز المواضيع بواسطة: (HnHn) :: (منتدى Microsoft Excel) الموضوع:معلومات سريعة من برنامج اكسل بواسطة: (junkbki) :: (منتدى Microsoft Visual Basic) الموضوع:دورة التعامل مع Data Report باستخدام ADODC ( شرح بالصور ) بواسطة: (Max Bayne)

عدد الصفحات : 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ك ) عدد مرات التنزيل: 5095


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالثلاثاء,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ك ) عدد مرات التنزيل: 4170


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,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ك ) عدد مرات التنزيل: 3558


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

    

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

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



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

Powered By arabmoheet v3.1

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