تستخدم هذه المقالة أمثلة لوصف طريقة استخدام دلفي لتحقيق تأثير الكرة، على غرار تأثير الكرة والدبابيس. انقر فوق الزر "ابدأ"، وستستمر الكرة الخضراء في النموذج في الضرب والتحرك يسارًا ويمينًا، وسيظل حجمها يتغير. انقر فوق الزر "إيقاف" لإيقاف الكرة. استخدم الفأرة لسحب عنصر التحكم في الضبط في أسفل اليمين لضبط سرعة الكرة.
هنا نستخدم بشكل أساسي التحكم في المؤقت والتحكم في اللوحة والتحكم في TrackBar والتحكم في SpinEdit والتحكم في الشكل والتحكم في الزر لتحقيق ذلك. ينصب التركيز على التحكم في مؤقت دلفي. أثناء تشغيل البرنامج، لا يكون عنصر التحكم مرئيًا ولا يمكن معالجته مباشرة. يقوم عنصر التحكم Timer تلقائيًا بتشغيل الحدث OnTimer() على فترات زمنية منتظمة. يستخدمه هذا المثال لبدء حدث حركة الكرة.
فكرة التصميم: المشكلة الرئيسية التي يجب أن يحلها هذا البرنامج هي كيفية التحكم في حركة الكرة وسرعة الكرة وحجمها أثناء الحركة. استخدم حدث OnTimer() لعنصر التحكم Timer للتحكم في حركة الكرة؛ واستخدم عنصر التحكم TrackBar وعنصر التحكم SpinEdit لضبط سرعة حركة الكرة. يتم إنشاء الكرة عن طريق التحكم في الشكل.
واحد. البناء الجديد:
(1) ابدأ تشغيل برنامج دلفي 6.0. حدد الأمر "جديد" ضمن القائمة "ملف"، وحدد خيار التطبيق من القائمة الفرعية المنبثقة، وستظهر نافذة Form1 للمشروع الجديد.
(2) حدد الأمر "حفظ المشروع باسم" ضمن قائمة "ملف" ليظهر مربع الحوار "حفظ الوحدة1 باسم". في مربع القائمة "حفظ في"، حدد اسم الدليل الذي سيتم تخزين ملف النافذة فيه؛ ثم املأ اسم الملف في مربع التحرير "اسم الملف"، ثم املأ "الوحدة 1" هنا، ثم انقر فوق الزر "حفظ". لحفظ الخيارات المذكورة أعلاه.
(3) بعد تنفيذ الخطوة السابقة، سينبثق مربع الحوار "حفظ المشروع باسم". في مربع القائمة "حفظ في"، حدد اسم الدليل الذي سيتم تخزين المشروع فيه، ومن الأفضل تحديد نفس الدليل كما في الخطوة (2)؛ في مربع التحرير "اسم الملف"، قم بملء اسم الملف لحفظ الكود المصدري للمشروع. املأ "Project1" هنا وانقر فوق الزر "حفظ" لحفظ الخيارات المذكورة أعلاه.
اثنين. بعض إعدادات المعلمة:
(1) قم بتنشيط نافذة Unit1، وقم بتعيين خاصية التسمية التوضيحية للنموذج على "Moving Sphere" وخاصية اللون على "clMoneyGreen" في لوحة "الخصائص".
(2) حدد خيار اللوحة في الصفحة "قياسي"، وأضف عنصر تحكم اللوحة في النموذج، واضبط حجمه وموضعه المناسب، وقم بتعيين خاصية اسم عنصر التحكم في لوحة "الخصائص" على "Panel1" وBevelInner إلى "bvLowered" "، وتم تعيين BevelOuter على "blNone"، وتم تعيين BorderStyle على "bsSingle"، وتم تعيين خاصية اللون على "clSkyBlue".
(3) حدد خيار Timer في صفحة "النظام"، وأضف عنصر تحكم Timer إلى النموذج، وقم بتعيين خاصية الفاصل الزمني الخاصة به على 1 وخاصية الاسم على "Timer1" في لوحة Object Inspector.
(4) حدد خيار الشكل في الصفحة "الإضافية"، وأضف عنصر تحكم الشكل على اللوحة 1 في النموذج، واضبط خاصية إظهار التلميح على "صحيح" وخاصية التلميح على "المجال الرياضي" في لوحة "الخصائص". خاصية Brush.Color هي ClLime وتم تعيين خاصية الشكل الخاصة بها على "slCircle".
(5) حدد خيار الزر في الصفحة "قياسي"، وأضف ثلاثة عناصر تحكم في الأزرار إلى النموذج، واضبط حجمها وموضعها المناسب. قم بتعيين خصائص التسمية التوضيحية الخاصة بها في لوحة "الخصائص" على "ابدأ" و"إيقاف" و"خروج" على التوالي.
(6) حدد خيار TrackBar في صفحة Win 32، وأضف عنصر تحكم TrackBar إلى النموذج، واضبط حجمه وموضعه المناسبين. قم بتعيين خصائصه المناسبة في لوحة الخصائص.
(7) حدد خيار SpinEdit في Samples، وأضف عنصر التحكم SpinEdit إلى النموذج، واضبط حجمه وموضعه المناسبين. قم بتعيين خصائصه المناسبة في لوحة الخصائص.
3. تحليل الكود:
(1) من أجل تحقيق وظيفة الكرة التي تتحرك ذهابًا وإيابًا، يجب تعيين متغير عالمي، وهو العدد الصحيح I. القيمة الأولية لـ I هي 1. عندما I = 1، تتحرك الكرة إلى اليسار، وعندما تصطدم بالجدار الأيسر للوحة، تصبح قيمة I 2. في هذا الوقت، تتحرك الكرة إلى اليمين، وعندما تضرب الجدار الأيمن للوحة ، تصبح قيمة I 1 مرة أخرى. بهذه الطريقة، من خلال تغيير قيمة I، تتحقق حركة الكرة ذهابًا وإيابًا. هذا الجزء من الكود موجود في حدث OnTimer:
الإجراء TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; // اضبط الفاصل الزمني للتشغيل لعنصر التحكم في المؤقت إذا كان i = 1 ثم // تتحرك الكرة إلى اليسار beginif Shape1.left>0 ثمbeginshape1; .left: =shape1.left-10; // تغيير موضع الكرة Shape1.Width:=(shape1.Width+1)mod 70; // تغيير عرض المستطيل الذي تقع فيه الكرة Shape1.Height:=(shape1.Height+1)mod 70; // تغيير ارتفاع المستطيل الذي تقع فيه الكرة endelsei:=2; الكرة إلى الطرف الأيمن؛ إذا كنت = 2، فابدأ إذا شكل 1. يسار <(panel1.Width-shape1.Width-5) ثم ابدأ الشكل 1.left:=shape1.left+10; // تغيير موضع الكرة Shape1.Width:=(shape1.Width+1)mod 70;// تغيير عرض المستطيل الذي تقع فيه الكرة Shape1.Height:=(shape1.Height+1)mod 70 ;/ / تغيير ارتفاع المستطيل الذي تقع فيه الكرةendelsei:=1;end;end;
(2) يتحكم زرا "البدء" و"الإيقاف" في تحرك الكرة، وفي الواقع، يتحكمان في عمل المؤقت:
الإجراء TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; // تعيين الفاصل الزمني لبدء التحكم في المؤقت Timer1.Enabled:=true; // تبدأ الكرة في التحرك;procedure TForm1.Button2Click(Sender : TObject);beginTimer1.Enabled:=False;
(3) يتحكم عنصرا التحكم TrackBar وSpinEdit في سرعة حركة الكرة، والرموز المقابلة هي كما يلي:
الإجراء TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; // تغيير سرعة الحركة; الإجراء TForm1.TrackBar1Change(Sender: TObject);beginspinEdit1.value:=trackbar1.Position; قيمة إخطار عنصر التحكم SpinEdit بالتغييرات؛
4. الكود الكامل لـ Delphi pinball هو كما يلي:
وحدة Unit1؛ واجهات تستخدم Windows، رسائل، SysUtils، فئات، رسومات، عناصر تحكم، نماذج، مربعات حوار، ExtCtrls، ComCtrls، StdCtrls، Spin؛ : TTimer;الشكل1: TShape;SpinEdit1: TSpinEdit;Button3: TButton;مؤقت الإجراء1Timer(المرسل: TObject);إجراء Button1Click(Sender: TObject);إجراء Button2Click(Sender: TObject);إجراء SpinEdit1Change(Sender: TObject);إجراء TrackBar1Change(Sender: TObject); الإجراء Button3 انقر (المرسل: TObject);private{ إعلانات خاصة }عامة{ إعلانات عامة }end;varForm1: TForm1;i:integer;implementation{$R *.DFM} الإجراء TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; // اضبط الفاصل الزمني للتشغيل لعنصر التحكم المؤقت إذا كان i = 1 ثم // تتحرك الكرة إلى اليسار beginif Shape1.left>0 ثمbeginshape1.left:=shape1.left-10; // تغيير موضع الكرة Shape1.Width:=(shape1.Width+1)mod 70;// تغيير عرض المستطيل حيث تقع الكرة Shape1.Height := (shape1.Height+1)mod 70;// تغيير ارتفاع المستطيل الذي تقع فيه الكرةendelsei:=2; // تتحرك الكرة إلى الطرف الأيمن;if i=2 ثمbeginif Shape1.left<(panel1.Width-shape1.Width-5)thenbeginshape1.left:=shape1.left+10; // تغيير موضع الكرة Shape1.Width:=(shape1.Width+1)mod 70; / تغيير عرض المستطيل الذي تقع فيه الكرة Shape1.Height:=(shape1.Height+1)mod 70;// تغيير ارتفاع المستطيل الذي تقع فيه الكرةendelsei:=1;end;end;procedure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; // تعيين الفاصل الزمني للتشغيل of التحكم في المؤقت Timer1 .Enabled:=true; // تبدأ الكرة في التحرك؛ الإجراء TForm1.Button2Click(Sender: TObject);beginTimer1.Enabled:=False; // تتوقف الكرة عن الحركة; الإجراء TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; // تغيير سرعة الحركة; الإجراء TForm1.TrackBar1Change(Sender : TObject);beginspinEdit1.value:=trackbar1.Position; // قم بإخطار عنصر التحكم SpinEdit بالتغييرات في قيمة شريط التتبع؛ الإجراء TForm1.Button3Click(Sender: TObject);begin Close; //Exitend;initializationi:=1;end.