اخي الكريم قبل ان تقرا هذا الموضوع انصحك بقراءة كتاب البرمجة الموجهة في دلفي في مكتبة الكتب
محاولة بسيطة لتوضيح الموضوع وارجو ان تعدلوا اخطائي فانا جديد على الموضوع
اخي الكريم قبل ان تقرا هذا الموضوع انصحك بقراءة كتاب البرمجة الموجهة في دلفي في مكتبة الكتب
محاولة بسيطة لتوضيح الموضوع وارجو ان تعدلوا اخطائي فانا جديد على الموضوع
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
السلام عليكم ورحمة الله وبركاته
مشكور اخي romanof بارك الله بيك
انظر الى بقية الموضوع من هنا
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
يعطيك العافية
بصراحة معلومات من ذهب
عندي أسئلة لعند ما وصلت
التعبير inherited create(Aowner);
قصدك فيه منادات الباني تبع TEdit
التعبير override
يقصد فيه التطوير المستقبلي للمكون
ليه الصفات من النوع boolean ذات اسم
و الصفات يلي في Object Inspector بإسم أخر
التعبير TNotifyEvent شو بيعمل بالضبط .
اقتباسif assigned(Fclear) thenOnclear(self); // OnClear // البرنامج ينفذ ما كتبته داخل الحدث //
أول شي assigned ما عم يقدر يلاقيها
الغرض من هل التحقق هاذ لحتى تعرف إذا المستخدم كتب شي
في المنهج OnClear و بالتالي بالتنفذه بالأول .
بصراحة أنا لما شفت في طريقة تانية للمناهج يلي بأكثر من برامتر توقفت
أنا بشتغل على بلدر سي ++
شاكر ردك
اقتباسالتعبير inherited create(Aowner);قصدك فيه منادات الباني تبع TEdit
نعم
اقتباسالتعبير overrideيقصد فيه التطوير المستقبلي للمكون
هناك قاعدة عند بناء المكون لابد من إعادة تعريف الباني المورث
اقتباسليه الصفات من النوع boolean ذات اسمو الصفات يلي في Object Inspector بإسم أخر
في الحقيقة بما أنهما صفتان فلابد ان اسميهما مختلفان
لاحظ ان الصفات في المجموعة الاولى تقع في القسم private وبالتالي لايمكن الوصول اليها مباشرة يدويا
لذلك قمنا بإنشاء صفة في القسم published لتكون واجهة اثناء العمل يدويا لاحظ ان الصفات التي Object Inspector
تستدعي الدالة Set عند منحها قيمة وهذا يحدث تلقائيا حتى عند العمل يدويا
قد تسال لماذا لم نضع الصفات التي في القسم private في القسم published وتعمل دالتين Set و Get
وخلاص في الحقيقة هذا ممكن ولكن لا أحد يفعل هذا هناك بعض التقاليد المتبعة بين مبرمجي دلفي عند بناء المكونات
في الملف المرفق مشاركة كنت نشرتها في موقع الاستاذ العزيز عروة جاولت فيها توضيح اسس التعامل مع الخواص
كنت قد توقفت عن مواصلته لكن الان ساعود
اقتباسالتعبير TNotifyEvent
معناه ان الحدث من النوع الافتراضي ذو بارامتر وحيد
اقتباسأول شي assigned ما عم يقدر يلاقيهاالغرض من هل التحقق هاذ لحتى تعرف إذا المستخدم كتب شي
في المنهج OnClear و بالتالي بالتنفذه بالأول
نعم
اقتباسأنا بشتغل على بلدر سي ++ :wacko: :wacko:
حول على الدلفي احسن لك :lol: :lol:
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
اقتباسلكن أنا مافي اترك السي لأني سأعتبر ناكر للجميل :lol: :lol:
على راحتك اخي العزيز
لكن تذكر اخي العزيز وقتما تفكر تنكر الجميل :wacko: معشر الشباب الدلفاوية جاهز لمنحك هذا اللقب :lol: :lol:
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
ربما لاداعي لترك السي ++ ..
بل زيادة الإضطلاع على دلفي .. وبرأيي يمكن التعامل مع لغتين معا , ولو كان الواحد يحب لغة اكثر ويتعامل معها اكثر ..
أنا مثلا أعمل كذلك على C# ولكني أحب دلفي أكثر , ومعظم شغلي أقوم به على الدلفي ... ولذلك تراني أفكر بطريقة دلفي وليس طريقة C# .. ولكن رغم ذلك أظن أن الانسان يستطيع إتقان لغتين معا , ولو كان ذلك سيبب البطيء في كل منهما ...
بس مشان ضمان المستقبل يضع الواحد اكثر من بضاعة في سلته بحيث إذا فسدت بضاعة يلحق حالة ويبيع البضاعة الثانية .. (آسف للتشبيه)
----
التعبير inherited create(Aowner);
قصدك فيه منادات الباني تبع TEdit
دائما inherited المقصود فيها شيء واحد .. أننا عندما نورث أبن من أب .. يمكننا استخدام هذه ال inherited لاستخدام تابع الأب من أجل الأبن .. وبإمكاننا إضافة بعدها أو قبلها شفرةخاصة فيها , وهذا عادة ما يحدث ..
مثلا inhereted ستقوم باستدعاء create الأب , وتقوم بكل ماعليها من وظائف حجز ذاكره وتهيئة .. ثم نحن نقوم إذا أردنا بوضع وظائف جديدة بعدها من اجل تهيئة الأبن بشكل كامل
التعبير override
يقصد فيه التطوير المستقبلي للمكون
المقصود فيه .. ان تابع ما يكون خاص بالأب , ونريد تعريفة من جديد من أجل الأبن (أي لانريد توريثة كما هو .. بل نريد بناءة من جديد ) لذلك نعيد تعريفة باستخدام override مما يسمح لنا ببناءة حسب ما يناسب الأبن
ليه الصفات من النوع boolean ذات اسم
و الصفات يلي في Object Inspector بإسم أخر
فعليا كل خاصة (الخصائص أو properity هي فقط التي تظهر في ضابط الكائنات) يكون لكل خاصة جزأين , قراءة وكتابة , بالإضافة إلى متحول محلي (أي متحول معرف ضمن Private) يقوم بحفظ قيمة الخاصة ... وبالتالي أكتملت الحلقة , فالخاصة هي تعبير افتراضي له دالة قراءة ودالة كتابة وهاتان الدالتان تتعامل مع متحول محلي يحفظ القيمة , لذلك يجب أن يكون اسم المتحول المحلي (الضروري حتما) مختلف عن اسم الخاصة لكي لايحدث تضارب ..
ملاحظة , يمكن الاستغناء عن دالتي القراءة والكتابة , أو واحد منهما , ولكن المتحول مطلوب عادة ..
التعبير TNotifyEvent شو بيعمل بالضبط .
المقصود فيه حسب توقعي هو الترويسة القياسية من الشكل :
procedure (Sender: TObject);
أي عندما نريد وضع أحداث للمكون مثل OnClick وغيرها , فإذا كانت قياسية (لاتحتاج برامترات سوى Sender) فلا داعي لتعريفها , بل مباشرة نقول انها من النوع TNotifyEvent , وهو يبلغ عن المكون الذي سبب الحدث عن طريق المتحول Sender
if assigned(Fclear) then
Onclear(self); // OnClear // البرنامج ينفذ ما كتبته داخل الحدث //
أول شي assigned ما عم يقدر يلاقيها
الغرض من هل التحقق هاذ لحتى تعرف إذا المستخدم كتب شي
في المنهج OnClear و بالتالي بالتنفذه بالأول .
assigned تساوي العبارة التالية
if Fclear <> nil then
بالسي نكتب null بدل nil
صحيح , يعني هل يوجد حدث وضعه المستخدم حتى نذهب وننفذة , ولا نتابع
أنا بشتغل على بلدر سي ++
C++ Builder محرر ممتاز , ومهم , وسيتم تضمينه مع Delphi 2006 Studio (لاحظ ان أسم delphi هو اسم الاستوديو , مثلا مثل MS Visual Studio يحوي عدة لغات)
تم تعديل هذه المشاركة بواسطة ORWA في 2 يوليو 2005 في 14:38
آخ يا عروة يا ديبلوماسي!! B)
:lol:
انا متفق استاذي
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
يعطيكم العافية
بس حتى إفهم شو عم يصير
فتحت TEdit ووجدت التالي
اقتباسvirtual void __fastcall KeyPress ( char & Key ) ;
بالسي كلمة virtual تعني التطوير المستقبلي
__fastcall لتسريع مناداة الإجراء
& نتعامل مع المحرف بالمرجع
يعني غير قية الـ Key تتغير الأساسية .
اقتباس__property OnKeyPress ;
السطر السابق يدل على الخاصية OnKeyPress
عندي سؤالين الآن
بدى إلغي أحد الخواص للكائن الإبن القادمة من الأب
و لتكن OnChange و إعطاءة حدث من TLable وهو
OnMouseLeave
في هيك شي
ثاني سؤال :
مترجم اللغة عم يعطيني خطأ إنه في تشابه و تكرار في توابع الأحداث
virtual void __fastcall KeyPress ( char & Key );
مع إنه كلمة virtual مكتوبة
إن شالله ما يطولوا بالسي بلدر لإنه نزلت عدة نسخ من ديلفي
و نحنا عم ننتظر تنزل بلدر تدعم الدت نت و تكون مثل ديلفي 8
سلام
اقتباسو لتكن OnChange و إعطاءة حدث من TLable وهوOnMouseLeave
في هيك شي
اعتقد ان الابن لا يستطيع الغاء حدث من الاب ولكن تستطيع التحكم في عرض و اخفاء الصفات التي ورثتها من الاب
وذلك بالوراثة مش من الاب وانما مباشرة من الجد :lol:
TCustomEdit
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
صحيح , وهذا اقتباس من Delphi component writers guide
so if an existing component class contains properties that you do not want to include in yours, you should derive from that component’s ancestor.
, ودلفي تقوم آليا بتزويدما بجد قابل للتوريث المريح ,, مثال
بدلا من Tedit ورث من TcustomEdit , وفقط حدد الخصائص التي تريد إظهارها , والتي لن تضعها لن تظهر ...
الأصناف التي لها Custom وجدت خصيصا لهذه الغاية, ويفضل التعامل معها دوما
up
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
مثال لبناء مكون جديد (مكون input box كمثال), وهو مبسط ومع الصور على شكل pdf صغير :
http://iss.almoja.net/documents/Create_new_component.pdf
المصدر :
http://iss.almoja.net/article.php?id_art=1
الكاتب : عصام علي
اقتباسلقد كان هذا مثالا بسيطا عن التعامل مع الاحداث ولكن ماذا لوكان الحدث يستقبل أكثر من بارامترفي الحلقة القادمة سوف نتعرف على كيفية القيام بذلك مع السلامة ...
لحظة انا امزح معكم ... لكي تقوم بذلك سوف نحتاج الى تعريف نوع جديد من الاحداث يعنى قبل تعريف المكون نفسه
TClearFunc=procedure (Sender:Tobject;var CanClear:Boolean) of object;
هذه النقطة لم افهمها بشكل جيد كيف نعرف نمط هو اجرائية
و ماذا يسمى هذا في اللغة ارجوا التوضيح
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
مرحبا
يدعى نمط مؤشر إلى منهج
يستخدم هذا النوع عندما نريد تعريف
أحداث تحتوي على بارامترات غير البارامترSender
إننا محكومون بالأمل وما يحدث الآن ليس نهاية العالم
عفوا على التاخر في الرد
بالفعل اجابة الاخ M_Asize صحيحة
أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
شكراً على الموضوع الرااااااااااااااااائع والمعلومات القيمة
ودلفي وبسسسسسسسسسسسسسسسسسس
هذا الموضوع مغلق.