تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
نظرة حول لفظ RAD في الدلفي دورة حياة الـ Form
#1
السلام عليكم و رحمة الله و بركاته

لماذا يطلق على دلفي لفظة RAD Rapid Application Development

الذي سنفعله اننا سنقوم بإنشاء مشروع جديد و نلاحظ فقط ما يفعله دلفي

قم بانشاء مجلد سمه كما شئت 

File -> New -> Windows VCL Application - Delphi

أول ما يظهر هو فورم فارغ نقوم بحفظ المشروع داخل المجلد الذي أنشئته سابقا عن طريق

File -> Save All 

أولا سيطلب منا حفظ الوحدة إحفظها باسم Unit1.pas.
ثانيا سيطلب منا حفظ المشروع إحفظه باسم Project1.dproj في النسخ الأقدم ستكون اللاحقة dpr بدلا من dproj.

تصفحه الملفات الموجودة داخل المجلد الملفات تختلف حسب نسخة دلفي المنصبة لديك الذي يهمنا هي الملفات الرئيسية التالية و التي لا يمكن عمل Compile للمشروع بدونها
  1. Project1.dpr
  2. Unit1.pas
  3. Unit1.dfm

Project1.dpr اختصارا لـ Delphi Project لمشاهدة محتويات الملف 

Project -> View Source


PHP كود :
program Project1;

uses
  Vcl
.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{
$R *.res}

begin
  Application
.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1Form1);
  Application.Run;
end

Unit1.pas ملف الكود للفورم الذي يظهر أمامك pas إختصارا للـ Pascal


PHP كود :
unit Unit1;

interface

uses
  Winapi
.WindowsWinapi.MessagesSystem.SysUtilsSystem.VariantsSystem.ClassesVcl.Graphics,
  Vcl.ControlsVcl.FormsVcl.Dialogs;

type
  TForm1 
= class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1TForm1;

implementation

{$R *.dfm}

end

و أخيرا ملف Unit1.dfm إختصارا لـ Delphi Form الملف يحتوي على خصائص المكونات الموجودة على الفورم للوصول إليه يمكنك الضغظ على alt + F12 عندما تكون في الوضع Design و للعودة كذلك alt + F12 أو كما في الصورة 



محتويات الملف 

PHP كود :
object Form1TForm1
  Left 
0
  Top 
0
  Caption 
'Form1'
  ClientHeight 202
  ClientWidth 
447
  Color 
clBtnFace
  Font
.Charset DEFAULT_CHARSET
  Font
.Color clWindowText
  Font
.Height = -11
  Font
.Name 'Tahoma'
  Font.Style = []
  OldCreateOrder False
  PixelsPerInch 
96
  TextHeight 
13
end 
لنبدأ بملف الـ Pas 
PHP كود :
TForm1 = class(TForm
دلفي كخواصه RAD قام بتعريف Class جديد تحت الإسم الإفتراضي TForm1 مورث من TForm أولا الحرف T ليست ضرورية و لكنها أسلوب متعارف عليه بين جميع مبرمجي دلفي حيث يتم تسبيق الـ Type بحرف T لتفريق بينه و بين الأغراض Objetcs 

PHP كود :
var
  Form1TForm1
دلفي قام بتعريف متغير عام Global Variable تحت الإسم Form1 من النمط TForm1 كما تعلم في الدلفي الأغراظ لا يمكن إستخدامها الى في حالة حجز ذاكرة لها عن طريق إستدعاء الباني Create أين يقوم دلفي بذلك سنعلم بعد حين
PHP كود :
{$R *.dfm
ملاحظة هذا ليس تعليق Comments  و انما هو توجيه للـ Compiler يقول له أن يظمن ملف dfm حيث رمز الإفتتاج هنا هو {$ و ليس { اذن ربطنا ملف الـ dfm مع ملف pas

نذهب الآن لملف dpr لنلاحظ ماذا يفعله دلفي و قد قلنا كيف نطع عليه
PHP كود :
program Project1;

uses
  Vcl
.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{
$R *.res}

begin
  Application
.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1Form1);
  Application.Run;
end

السطر التالي 
PHP كود :
  Unit1 in 'Unit1.pas' {Form1}; 
دلفي يحدد مكان تواجد الـ Unit بما انها موجود مع ملف dpr يذكر فقط اسمها في حالة كانت موجود داخل مجلد اخر يتم تحديد المسار 
PHP كود :
{$R *.res
توجيه للـ Compiler لتضمين ملفات الـ Resources 
أهم سطر هو التالي 
PHP كود :
  Application.CreateForm(TForm1Form1); 
دلفي يقوم بإنشاء الغرض Form1 و حجز الذاكرة له عن طريق إستدعاء CreateForm تذكر جيدا أن دلفي قام من قبل بتعريف المتغير Form1 و قام بتعريف النمط TForm1 في دلفي الطريقة الكلاسيكية لدلفي هي تعريف النمط تعريف الغرض حجز الذاكرة للغرض ثم تحرير الغرض من الذاكرة عند الإنتهاء منه 
PHP كود :
var
  Form1TForm1;
begin
  Form1 
:= TForm1.Create(nil);
  try

  finally
    Form1.Free;
  end;
end
CreateForm تقوم بحجز الذاكرة للغرض و تقوم بدور آخر هنا مهم جدا و هو تحديد الفورم الرئيسي للبرنامج في حالة كان لدينا العديد من الفورمات الفورم الرئيسي للبرنامج هو أول فورم نقوم بإنشاء عن طريق Application.CreateForm


السلام عليكم و رحمة الله و بركاته 
في هذا الجزء سنستمر في التعرف على طريقة دلفي في البرمجة ظمن لفظة الـ RAD

يمكنك الإطلاع على الجزء الأول هنا

File -> New -> Windows VCL Form Application - Delphi

الذي سنقوم بفعله سنظيف زر الى الفورم Button من لوحة المكونات أضف زر و نلاحظ ماذا يفعله دلفي 

ملف الوحدة pas

PHP كود :
type
  TForm1 
= class(TForm)
    Button1TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end
دلفي قام بتعريف Button1 مشتق من الصنف TButton 
ملف dfm

PHP كود :
object Form1TForm1
  Left 
0
  Top 
0
  Caption 
'Form1'
  ClientHeight 202
  ClientWidth 
447
  Color 
clBtnFace
  Font
.Charset DEFAULT_CHARSET
  Font
.Color clWindowText
  Font
.Height = -11
  Font
.Name 'Tahoma'
  Font.Style = []
  OldCreateOrder False
  PixelsPerInch 
96
  TextHeight 
13
  object Button1
TButton
    Left 
192
    Top 
112
    Width 
75
    Height 
25
    Caption 
'Button1'
    TabOrder 0
  end
end 
ملف الـ dfm دلفي قام بحفظ خصائص الـ Button كما قلنا سابقا ملف dfm يحتوي على خصائص جميع المكونات الموجودة على الفورم أي خاصية تغيرها سيتم حفظها في ملف الـ dfm
لنعد الى ملف الوحدة pas و نرى ماذا يوجد هناك
PHP كود :
  TForm1 = class(TForm)
    Button1TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end
اول ما تلاحظه private و public تذكرهم 
{ Private declarations } و  { Public declarations } عبارة عن تعليقات Comments يمكنك حذفهم 
private و public يحددان نطاق المتغيرات و الإجراءات لنسميها محددات الوصول لكن هناك محدد آخر لا يظهر و هو published لماذا لا يظهر دلفي يعتبره إفتراظي لذلك نقوم بكتابته للتتضح الصورة أكثر
لتصبح لدينا الوحدة كاتالي 
PHP كود :
type
  TForm1 
= class(TForm)
  published
    Button1
TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end
لدينا الآن ثلاثة محددات published و private و public
published و public لمهما نفس النطاق لماذا دلفي قام بإظافة الزر تحت published و ليس public اذا كان لهما نفس النطاق السبب أن published يوفر معلومات للـ Object Inspector عكس الـ Public
الذي إعتدت على فعله في دلفي تقوم بسحب زر من لوحة المكونات و تظغط عليه مرتين في الـ Design Mode و تكتب الكود ضمن جسم الإجراء الذي سنقوم بفعله لتوضيح الفرق بين public و published هو التالي لا تقم بالظغط على الزر كما اعتدت على فعله و انما قم بكتابة الـ procedure التالي يدويا ضمن المحدد published
PHP كود :
procedure DoClick(SenderTObject); 

سيصبح لدينا التالي
PHP كود :
type
  TForm1 
= class(TForm)
  published
    Button1
TButton;
    procedure DoClick(SenderTObject); 
حدد الزر في الـ Design Mode اذهب الى Object Inspector ثم Events ثم OnClick تصفح القائمة ستجد الـ procedure الذي كتبناه يدويا
قم بنقل الـ procedure الى public 

PHP كود :
type
  TForm1 
= class(TForm)
  published
    Button1
TButton;
  private
    { Private declarations }
  public
    procedure DoClick(SenderTObject);
  end


حدد الزر في Design Mode اذهب الى Object Inspector ثم Events ثم OnClick تصفح القائمة لا يوجد شيئ

و السلام عليكم و رحمة الله و بركاته 





 للامانة الفكرية تم نقل الموضوع من منتدى دلفي للعرب
الرد }}}
تم الشكر بواسطة: sendbad100 , حريف برمجة , العيد1403



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم