المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: مشكلة إنشاء مكون رسومي يقوم بالتعرف على الاوامر البرمجية ويقوم باضافة السمات لها
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي Borland Delphi
Framework2

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




منذ فترة بعيدة استخدمت بعض ادوات Activex والتي تقوم على التعرف على الاوامر البرمجة وتقوم باضافة بعض السمات لها
يعني عندما تكتب بلغة الدلفي مثلا في الاداة والتي هي عبارة ربما عن الاداة RithTextBox
ولا اعرف ما تتبع في الدلفي ربما TRithText
المهم ان الاداة تبحث عن الاوامر التي تحتاج الى ان يكون لونها ازرق مثلا وتجعل لونها ازرق
والتعليقات تجعلها خضراء أي بمعنى اي سطر يبداء بالحروف //
مثلا
قمت ببرمجة اداة في الفجوال وعملت بنسبة نجاح حوالي 80%
ولكن كان لها عيب كبير وهو انها تاخذ وقتا في هذه العملية
والادوات الاحترافية التي رأيتها لا تأخذ الا اجزاء من الثانية
أي انها لا تستخدم أي عمليات بحث تقليدية.
وخمنت انها تقوم بتغيير النص ليس بعملية التضليل واضافة اللون المطلوب.
وانما تاخذ النص وتضيف له السمات الخاصة بالاداة Rithtext
تم تعاود اسناده الى الاداة من جديد.

طبعا النص بحاله العادية لا سمات له ولكن اذا كان له سمات وما تشير له الاداة بالـ Rtf
وهو التنسيق المسئول عن اضافة النص بالالوان واحجام مختلفة وغيرها.

بمعنى اخر
اذا كتبت في الاداة كلمة Begin
من لعبث ان اضللها تم اسند لها لون معين لان الاداة سيكون ادائها بطئ.
ولكن ماذا اذا اضفت لها السمة التالية مثلا.
/C1/ Begin/
أي كل كلمة مثلها اضيف لها هذه السمة والتي تعني اللون الازرق.
وطبعا من الممكن ان تتغير على حسب تعريفنا لهذا المتغير C1

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

بصراحة لا اعرف انا مبتدئ لغة دلفي
وافكر في برمجة برنامج لحفظ شيفرات الدلفي بالدلفي ومنها اتعلم ومنها احفظ الشيفرات التي اتحصل عليها منكم فيه ومنها نعطيه للاخرين ليستفيدوا منه

هذا كل ما في الموضوع
وشكرا
محمد نسمان
استخدم SynEdit بها كل الذي تريده جاهز ودعم لحوالي نصوص 40 لغة برمجة أو اكثر
Framework2


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




ماشاء الله عليك يا اخ محمد وما شاء الله على الدلفي

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

الله يرحمك يا فجوال بيسك 6

Delphawi
إقتباس
الله يرحمك يا فجوال بيسك 6

لا زال هناك الكثير يستعملونه ... regular_smile.gif
محمد نسمان
بالنسبة لي واحد من أفضل القرارات التى اخذتها في تاريخي التقني هوا الانتقال من فيجوال بيسيك الى دلفي ;-)، وكان ذلك قبل ان تقوم ميكروسوفت بتجاهلها وتجاهل جميع مبرمجيه
Framework2
السلام عليكــم ورحمـة الله وبركاتــه


الاخوة الاعزاء
لا يستخدم الميت الا ميت
بمعنى لا يستخدم برنامج ميت الا مبرمج طموحه البرمجي ميت

انا كنت مبرمج فجوال بيسك 6 منذ زمن بعيد
ويا لخسارة الايام والليالي التي قضيتها ادرسه وامحصه.
احيانا ابقى حتى شروق الشمس

الى درجة جعلتني متمكننا فيه كثيرا
وانشاءت مكتباتي الخاصة وادواتي الخاصة

وكان هناك شيئا لا يريحني فيه.
فازيد من البحث والدراسة
وكلما ازددت معرفة كلما ازداد شكي فيه انه برنامج ينفع للهو اكثر من نفعه لانشاء برامج جدية

مشاكل لاحدود لها ورسائل اخطاء كثيرة
ويا للروعة لانشاء برامج جدية تحتاج الى استخدام مكتبات وادوات خارجية
واستعد للمشاكل.

أعجبتني فكرة الملف التنفيدي الواحد في الدلفي قبل ان انتقل الى الفجوال نت
الفجوال نت احياء المبرمجين الفجوالليين
وانا واحد منهم بعد اكثر من خمس سنوات دراسة متواصلة للفجوال 6 قررت الانتقال الى لغة برمجة اخرى وظهر الفجوال نت

وكان هو بالضبط ما احتاجه
ولكن ظهرت عيوب جديدة
بطئ
اعتماده على الفرامم وورك
عدم استقلاليته عن نظام التشغيل
وغيرها

احب تلك النوافذ التي تقفز بسرعة الى الشاشة عند تنفيذ المشروع
او التعبئة السريعة للبيانات في الادوات

الدلفي مثال جيد للاستقلالية والجدية
حتى وان كان به شئ من التعقيد
وهو ربما لتعودنا نحن على لاسهولة في الفجوال بيسك
فمثلا عند كتابتك
Text1.Visbale=
بمجرد كتابة =
يظهر لك التركيب ويحتوي على
True and False
وهو ما ليس موجودا بالدلفي
أي يجب كتابتك لذلك يدوياً
كما ان الدلفي له عيوب في IDE
فهو غير مرتب ونوافذة موجودة بشكل مزعج
وقد صححت الشركة ذلك في اصداراتها الاخيرة ورأيت عملها الجيد

المهم ان الشركة تتابع برنامجها وتطوره افضل من برنامج لا أمل في تطور يحدث له

وكذلك يوجد بعض التعقيد في الدلفي من ناحية تعريف المتغيرات العامة او الخاصة على مستوى الوحدة
وحتى الان لا زلت احاول انشاء وحدة جديدة بها متغيرات عامة وخاصة ولم افلح
كما بالشكل التالي
كود
unit Unit2;

interface

  
uses
  Windows, Messages, SysUtils,Classes, Controls;

  type

  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

end.


من القائمة ملف جديد اخترت Unit
ولكن الدلفي يعترض
أعلم ان الامر سهل كثيرا ولكن لي كمبتدئ صعب

لاي لغة برمجة تنسيق في مواقع وجود الاوامر والتعريفات وغيرها
وهناك هنا ترتيب لا اعرفه

اذا احد من الاخوة وضح لنا هنا بالتفصيل ما الذي يحدث وما يجب ان يكون وما يجب ان لا يكون وله جزيل الشكر

وهذا موجز بسيط لنتيجة ما لاحظته
وإن شاء الله مبرمجي الفجوال 6 يهجرون البرنامج العديم الفائدة المسمى Visual Basic 6

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


Delphawi
إقتباس
حتى وان كان به شئ من التعقيد

البداية فقط ... فترة الانتقال الاولى إلى دلفي تظهر انها معقدة , وهذا طبعاً لانه مرنة , وهذا ما لم تعتد أنت عليه ...

عادي , Relax biggrin.gif
محمد نسمان
إقتباس
الدلفي مثال جيد للاستقلالية والجدية
حتى وان كان به شئ من التعقيد
وهو ربما لتعودنا نحن على لاسهولة في الفجوال بيسك


أعتقد أن هذه فكرة خاطئة، انا كنت مبرمج VB سابق ومدرب معتمد من ميكروسوفت في VB ودوت نت أيضاً

مشكلة VB أنه يعودك على الأشياء بشكل سهل ولكن بشكل غير منطقي كمبرمج، باسكال اللغة الأم لدلفي صممت أصلاً لتعليم اللبرمجة بشكلك صحيح، وهنا أقتبس مقولة من ويكيبيديا

إقتباس
Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.


الصعوبة التى يواجهها الكثيرين عند الانتقال لدلفي هي محاولة تطبيق فهمهم للغة السابقة على دلفي، وهذا يسبب اللبس، فمثلاً هذه الجملة صحيحة في VB

كود
x = 5
Text1 = x


لكنها لن تعمل في أي لغة برمجة أخرى حتى فيجوال بيسيك دوت نت، الكثير كان يعتبر استخدام المتغيرات دون تعريف عبارة عن مرونة، وايضاً اسناد متغيرات والتحويل الضمني، لكن نجد اللغات الجديدة كلها اعتمدت منهج لغة باسكال وهو لابد من التحويل الصريح

وايضا جملة مثل
كود
dim x,y,z as integer


أي مبرمج من أي لغة أخرى (وكثير من مبرمجي فيجوال بيسيك) سوف يتصور أنها تعرف المتغيرات من integer ولكن المتغير الوحيد من نوع Integer هنا هو z والباقي سوف يكون من نوع variant لذا فالجملة التالية صحيحة في نظر VB ولكن لا تصلح لاي لغة اخرى

كود
Dim x, y, z As Integer
x = "Hello World"


اما بالنسبة لدلفي وباسكال فمن البداية يجبر المبرمج على أن يكون كل شيء معرف وبشكل صحيح والاسناد لابد أن يتم بشكل صحيح أيضاً لذا فهي أقل لغة برمجة نحصل على أخطاء بها في وقت عمل البرنامج حيث ان المترجم سوف يرفض الكثير من الجمل ان لم تكون صحيحة ومنطقية في وقت التصميم
najy_zl
السلام عليكم...

ربما تكون هذه المشاركة غير متعلقة بعنوان الموضوع، لكنها إجابة على تساؤل الأخ Framework2:

إقتباس
احاول انشاء وحدة جديدة بها متغيرات عامة وخاصة ولم افلح


بالنسبة إلى تحديد المتغيرات و الثوابت و الإجراءات و الدوال الخاصة (Private) و العامة (Public) في دلفي فالأمر سهل:
* كل ما هو مصرح عنه في القسم interface فهو عام، أي يمكنك الوصول إليه من وحدات برمجية أخرى بشرط تضمين الوحدة البرمجية الحالية في تلك الوحدة البرمجية الأخرى باستعمال جملة uses.
* كل ما هو مصرح عنه في القسم implementation فهو خاص بتلك الوحدة فقط.

ملاحظة: بالنسبة إلى الإجراءات (Procedures) و الدوال (Functions) فإنه لا يمكن كتابة التعريف (Definition)، أي جسم الإجراء أو الدالة الذي يحتوي على التعليمات المطلوب تنفيذها، إلا ضمن القسم implementation، و لكي نجعل الإجراء أو الدالة عامة (Public) فإننا نضع تصريحاً لها (Declaration) في القسم interface. و التصريح عبارة عن رأس الإجراء أو الدالة فقط.

انسخ الكود
  1. //...
  2.  
  3. interface // كل ما يكتب تحت هذا القسم فهو عام
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
  7.  
  8. type // Public types here:
  9.  
  10. TDataOperation = (doAddNew, doModify, doDelete); // public enumeration.
  11.  
  12. TEmplyeeInf = record // public record type
  13. ID: Integer;
  14. Name: string;
  15. BDate: TDate;
  16. end;
  17.  
  18. TForm1 = class(TForm) // public class
  19.  
  20. private
  21. // private members of the class
  22. public
  23. //public members of the class
  24. end;
  25.  
  26. const // public constants:
  27. PI = 3.141592;
  28. MyDbName = 'EmpData.mdb';
  29.  
  30. var // public variables:
  31. Form1: TForm1;
  32.  
  33. StepCounter: Integer;
  34. EmpInfo: TEmplyeeInf;
  35. FileSaved: Boolean;
  36.  
  37. function CircleArea(Radius: Real): Real; // تصريح مسبق عن دالة معرفة فيما بعد - و بالتالي فه
    ي عامة
  38.  
  39. implementation // كل ما يكتب تحت هذا القسم فهو خاص
  40.  
  41. {$R *.dfm}
  42.  
  43. type // private types:
  44. TEngNums = (enOne, enTwo, enThree, enFour);
  45. TByteBits: 0..7;
  46. TSomeArabs = set of (Libya, Tunisia, Algeria, Morocco);
  47.  
  48. const // private constants:
  49. SECONDS_IN_HOUR = 3600;
  50.  
  51. var // private variables:
  52. LastIndex: Integer;
  53.  
  54. procedure ShowMe(); // private procedure
  55. begin
  56. // ...
  57. // ...
  58. end;
  59.  
  60. function CircleArea(Radius: Real): Real; // public function because it is declared in the in
    terface section
  61. begin
  62. Result := PI * Radius * Radius;
  63. end;
  64.  
  65. // ...
  66. // ...
  67.  
  68. end.
  69.  

أما الكلمتين Private و Public (بالإضافة إلى Protected و Published) فتستخدم ضمن تعريف الـ Class لتحديد الأعضاء الخاصة (Private Members) و الأعضاء العامة (Public Members) للكائنات (Objects) المشتقة من تلك الـ Class. طبعاً الأعضاء الـ Public و الـ Published تشكل الخصائص (Properties) و المناهج (Methods) و الأحداث (Events) المتعلقة بتلك الـ Class.

نرجو الاستفادة و السلام.

Framework2



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




الاخوة الاعزاء

لا تتحاملوا علي كثيرا لذكر بعض العيوب الصغيرة او البسيطة مقارنة بالخدمات التي يقدمها الدلفي.
كما يفعل مبرمجي الفجوال عندما اذكر لهم عيوب برنامجهم مادحا الدلفي.

كما قال خبير دلفي عن المتغيرات صحيح فانا لم اعيب الدلفي كلغة
والمتغيرات تلك ستكون من النوع Object على ما اعتقد
ولكنني عبت مثلا عدم تكملته للكود بالتركيب المناسب للخاصية
واعيب فيه كثرة استعمال
Begin

end;

كما ان الواجهة ليست مريحة كثيرا في العمل.
ولكن كل هذا ليس مهما احيانا مقابل الخدمات التي يقدمها
وقريبا جدا سانتقل الى الدلفي 2007 فلابد وان هناك تطويرات كثيرة بالواجهة وغيرها

وانا من البداية قلت ان الدلفي افصضل من الفجوال بيسك
هذا لا يختلف عليه أثنان مدركين جيدا للغتين.


اما بخصوص رد الاخ خبير ديلفي
واجابته عن التسأل
فشكرا كثيرا يا خبير ديلفي
اجابتك فيها بعض المطلوب
ولكن ياليت تخبرني ما الخطاء في الـ Unit التي كتبتها
اي بخصوص انشاء Unit جديدة
عندما احاول تعريف متغيرات عامة او خاصة فيها احصل على خطاء

وايضا لي سؤال اخر
عندي نموذجين النموذج الاول به زر والنموذج الثاني عليه مؤقت قيمة الخاصية Enabled=false;
عندما اشغل البرنامج اجد ان المؤقت يعمل مع ان النموذج الرئيسي للبرنامج هو النموذج الاول.

والسؤال الثاني
لماذا لا يضيف الدلفي اداة Activex الى المشروع ويضيفه كمشروع مستقل
وهل الاداة Frame تعتبر بديل له للاستخدامات بداخل المشروع

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

ولاحضوا جملة ليس عندي وقت
يعني من المهم ان اجيد الدلفي في شهر واحد على الاقل

وشكرا جزيلا لكم مرة أخرى
والله الموفق





najy_zl
السلام عليكم...

إقتباس
ولكن ياليت تخبرني ما الخطاء في الـ Unit التي كتبتها
اي بخصوص انشاء Unit جديدة
عندما احاول تعريف متغيرات عامة او خاصة فيها احصل على خطاء


إذا كنت تقصد الكود المرفق في المشاركة رقم 6 فالتوضيح هو:

الخطأ هو استعمال كلمتي Private و Public كجمل مستقلة. هاتان الكلمتان تستعملان فقط ضمن تعريف الـ Class و التي يمكنها أن تضم 4 أنواع من المحددات (Private و Protected و Public و Published) كما في الشكل التالي (دون توسع في الشرح):
انسخ الكود
  1. type
  2.  
  3. TMyNewClass = class(T...) // بداية تعريف الصنف
  4. private
  5. // المتغيرات و الإجراءات و الدوال الخاصة
  6. protected
  7. // المتغيرات و الإجراءات و الدوال المحمية
  8. public
  9. // المتغيرات و الإجراءات و الدوال العامة
  10. published
  11. // المتغيرات و الإجراءات و الدوال المنشورة - و هي التي تظهر في نافذة الخصائص أثناء
    التصميم
  12. end; // نهاية تعريف الصنف
  13.  

لاحظ أن تلك الكلمات الأربع جاءت ضمن كتلة تعريف الصنف (Class) أي بين السطر TMyNewClass = class و كلمة end في النهاية.

أعتقد أن ما يسبب اللخبطة للبعض هو السؤال التالي:
إذا قلنا أن المتغيرات المصرح عنها في القسم interface (كمتغيرات مستقلة لوحدها) هي متغيرات عامة (Public) فما الفرق بينها و بين المتغيرات المعرفة في القسم Public ضمن تعريف الـ Class؟

المتغيرات المعرفة ضمن القسم interface هي متغيرات مستقلة، أي غير مرتبطة بكائن، و بالتالي يمكنني الوصول إليها مباشرة من أي مكان في الكود بشكل مباشر بمجرد ذكر اسم المتغير، أما المتغيرات المصرح عنها في القسم public التابع للـ Class فإنه يمكن الوصول إليها مقترنة باسم الكائن المشتق من تلك الـ Class. و هي في الواقع تمثل خصائص (Properties) لذلك الكائن.

مثلاً:
انسخ الكود
  1. //...
  2. interface
  3. // ....
  4. type
  5. TMyNewClass = class(Tobject)
  6. private
  7. //
  8. public
  9. MyID: Integer;
  10. MyName: string;
  11. end; // نهاية تعريف الصنف
  12.  
  13. var
  14. MyID: Integer;
  15. MyName: string;
  16.  
  17. MyNewObject: TMyNewClass;
  18.  
  19. implementation
  20. // ....
  21.  
  22. end.
  23.  

لاحظ أننا عرفنا كائن باسم MyNewObject مشتق من الصنف TMyNewClass.
لو أخذنا MyID كمثال. لدينا نسختان منه: الأول هو المصرح عنه ضمن تعريف الصنف TMyNewClass، و لذلك فهو يسمى عضو عام (Public Member) في ذلك الصنف، و بالتالي فهو عضو عام في الكائن MyNewObject المشتق من الصنف TMyNewClass.
الثاني مصرح عنه كمتغير مستقل في القسم interface.

أيضاً ما الفرق؟
المتغير المستقل نصل إليه بذكر اسمه لوحده كما يلي:
انسخ الكود
  1. MyID := 100; // تخزين قيمة في المتغير
  2. // أو
  3. Edit1.Text := IntToStr(MyID); // قراءة قيمة المتغير
  4.  

أما المصرح عنه ضمن القسم public التابع للـ Class فلابد من اقترانه باسم كائن مشتق من تلك الـ Class، مثلا:
انسخ الكود
  1. MyNewObject.MyID := 100; // تخزين قيمة في المتغير
  2. // أو
  3. Edit1.Text := IntToStr(MyNewObject.MyID); // قراءة قيمة المتغير
  4.  

في الحالة الثانية (المصرح عنه ضمن القسم public التابع للـ Class) أنت في الواقع تتعامل مع خاصية (Property) تابعة لكائن (Object) و إن كانت هذه الطريقة ليست هي الطريقة المفضلة لإنشاء خصائص للكائنات.

أرجو أن تكون تلك النقطة قد أصبحت واضحة.
==============================

إقتباس
عندي نموذجين النموذج الاول به زر والنموذج الثاني عليه مؤقت قيمة الخاصية Enabled=false;
عندما اشغل البرنامج اجد ان المؤقت يعمل مع ان النموذج الرئيسي للبرنامج هو النموذج الاول.


ذلك يعود لطريقة دلفي الافتراضية في إنشاء النوافذ أثناء التشغيل! حيث أن كل نافذة تضيفها إلى مشروعك يتم إنشاؤها تلقائياً بمجرد تشغيل البرنامج إلا أنها تظل مخفية حتى يتم عرضها بواسطة Show أو ShowModal. و مع ذلك فهي موجودة في الذاكرة و يمكنك الوصول إليها بالكود و الوصول إلى مكوناتها. مثلاً يمكن كتابة السطر التالي في الـ Form1
انسخ الكود
  1. X := Form2.Edit1.Text;
  2.  

مع أن Form2 لا تظهر على الشاشة و لم تطلب أنت أصلاً عرضها... إنها موجودة في الذاكرة و يمكن الوصول إليهأ، ينقصها فقط أن تصبح مرئية.
و بالتالي إن الإجابة على سؤالك هي: الـ Form2 موجودة في الذاكرة و بالتالي فإن الـ Timer يعمل!

مسألة إلغاء الإنشاء التلقائي (Auto-Create) للنوافذ مسألة مهمة إذا كان المشروع يتكون من العديد من النوافذ و خاصة عند التعامل مع قواعد البيانات. إذا كان العديد من النوافذ يحتوي على عدة جداول أو استعلامات، و يتم فتحها جميعاً معاً عند تشغيل البرنامج فإن ذلك قد يستهلك الكثير من الذاكرة أو ازدحام الشبكة و قد يؤدي إلى توقف البرنامج.

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

للقيام بذلك اتبع الخطوات التالية:
1. من القائمة Project اختر الأمر Options
2. في نافذة الخيارات تأكد من اختيار الصفحة Forms
3. ستجد لديك في الأسفل قائمتين: القائمة اليسرى تسمي Auto-create forms و القائمة اليمينى تسمى Available forms
4. في القائمة اليسرى حدد اسم الـ Form التي تريد نقلها ثم انقر زر السهم لنقاها إلى القائمة اليمنى.
5. انقر الزر OK

بهذا الشكل لن يتم إنشاء الـ Form التي تم نقلها إلى اليمين. لكن كيف يمكن إنشاؤها عند الحاجة إليها؟

نفرض أن لدينا الزر Botton1 في الـ Form1 و عند النقر عليه نريد عرض الـ Form2. بدلاً من استخدام سطر واحد للعرض: Form2.Show نحتاج إلى كود كالتالي:
انسخ الكود
  1. procedure TFRtlForm1.Button1Click(Sender: TObject);
  2. begin
  3. // إنشاء النافذة إذا لم تكن كذلك
  4. if not Assigned(Form2) then Form2 := TForm2.Create(Application);
  5. // عرض النافذة
  6. Form2.Show; // OR Form2.ShowModal;
  7. end;
  8.  

السطر الأول يتأكد مما إذا كان المتغير Form2 الذي يمثل النافذة فارغاً (nil) أم لا ، و إذا كان nil فإنه يقوم بإنشاء النافذة باستخدام اسم الـ Class الذي تنتمي إليه النافذة (TForm2). ثم يتم عرض النافذة بالسطر الثاني.
و لكن ما زالت هناك خدعة في دلفي!! و هي أنه عند إغلاق النافذة فإنها تختفي من على الشاشة لكنها تبقى في الذاكرة شغالة! هذا هو السلوك الافتراضي في نوافذ دلفي.
لكي يتم فعلاً إغلاق النافذة و إزالتها من الذاكرة نستعمل معالج الحدث OnClose للـ Form

انسخ الكود
  1.  
  2. procedure TFRtlForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  3. begin
  4. Action := caFree; // تغيير السلوك الافتراضي للإغلاق
  5. Form2 := nil; // ضبط المتغير على لا شيء
  6. end;
  7.  


نرجو الاستفادة و السلام.
Framework2




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




جميل
و
رائع

هذا هو

بدأت افهمك يادلفي


ولكن هل من يخبرنا كيف نقوم بوراثة المكونات واضافة الخصائص الجديدة لها او التعديل في خاصية موجودة

وكيف يمكننا اضافة مكون من نوع Activex او شبيه له للمشروع واستخدامه
ولاحظ انني اقصد مكون انا ابرمجه واستخدمه من داخل مشروعي ولا استعين به من الخارج

وهل Fream هل الحل الوحيد
وهل يمكن اضافة واسقاطه على النموذج بزمن التصميم

وشكرا لكم كثيرا

هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.