نظرة حول لفظ RAD في الدلفي دورة حياة الـ Form الجزء 1
#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 أو كما في الصورة 
[صورة: attachment.php?aid=4007]
محتويات الملف 

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
و السلام عليكم و رحمة الله و بركاته


الملفات المرفقة
.png   1.png (الحجم : 18.26 ك ب / التحميلات : 99)
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
[-] كل من 5 users say قال شكرا ل S.FATEH على المشاركة المفيدة
  • محمد عبد العزيز, أبو معاذ, ELARAPY, bassem_43, Delphi4Us
الرد
#2

السلام عليكم
بارك الله فيك اخي فاتح،
المنتدى بحاجة لمثل هذه المواضيع.
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
[-] كل من 2 users say قال شكرا ل محمد عبد العزيز على المشاركة المفيدة
  • S.FATEH, أبو معاذ
الرد
#3
السلام عليكم
و فيك بارك في حالة وجود تفاعل من طرف الأعضاء سأستمر ان شاء الله
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#4
(27-06-2019, 02:14 PM)S.FATEH كتب : السلام عليكم
و فيك بارك في حالة وجود تفاعل من طرف الأعضاء سأستمر ان  شاء الله

وعليكم السلام ورحمة الله وبركاته ،
بل استمر أخي فاتح ،
وبعد مدة شاهد عدد الذين استفادوا من مواضيعك ،
ستحمد الله على ذلك.
بيض الله وجهك.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
[-] كل من 1 user says قال شكرا ل أبو معاذ على المشاركة المفيدة
  • S.FATEH
الرد
#5
السلام عليكم

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


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


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