ماهي طريقة انشاء TabSheet برمجياً ؟
#1
السلآم عليكم ورحمة الله وبركاته ...

أخوتي الاعزاء ..

كيف يمكنني انشاء TabSheet برمجياً بداخله Button منسوخ و WebBrowser مع تحديد اسمائهم ايضاً برمجياً

جزاكم الله كل خير

اللهمّ إنّي ظلمت نفسي ظلماً كثيراً ولا يغفر الذّنوب إلا أنت

فاغفر لي مغفرة من عندك وارحمني إنّك أنت الغفور الرّحيم
الرد
#2
السلام عليكم...

إضافة TabSheet (إلى المكون PageControl) أمر سهل:

كود :
procedure ... var ANewSheet: TTabSheet; begin ANewSheet := TTabSheet.Create(Self); ANewSheet.Caption := 'Page ' + TimeToStr(Time); // عنوان الصفحة الجديدة ANewSheet.PageControl := PageControl1; end;

لكن بالتأكيد ستحتوي هذه الصفحة على مكونات، و بعض هذه المكونات سيكون مرتبطاً بكود سيتم تنفيذه أثناء التشغيل (كالزر Button الذي ذكرته في سؤالك).

بما أن كل الصفحات ستكون متطابقة من ناحية التركيب و الأداء فإن أفضل طريقة لإنجاز ذلك هي الحل العبقري الذي تقدمه دلفي (دائماً أقول أن مصممي و مطوري دلفي ينظرون للأمر من وجهة نظر المبرمج Wink) أقصد استعمال إطار (Frame):

* الشرح التالي حسب دلفي 2010 لكنه ينطبق على كل النسخ السابقة، ربما مع اختلاف مكان وجود أوامر القوائم:

1. من القائمة File اختر الأمر New. و من القائمة الفرعية للأمر New إذا وجدت الأمر Frame فانقر عليه و إلا فاختر الأمر Other.
2. إذا اخترت الأمر Other فانقر في نافذة New Items على البند Delphi Files. و في القسم الأخر من النافذة اختر البند Frame ثم انقر OK.

في كل الأحوال سيُضاف إلى مشروعك إطار (Frame) جديد. آه! إنه يشبه النافذة تماماً، لكنه ليس نافذة. هذا هو القالب الذي سيمثل محتويات كل صفحة (TabSheet) سنضيفها.

قم بضبط حجمه كما تشاء أو كما يتناسب مع حجم الـ PageControl الذي لديك، و ضع عليه المكونات التي تريدها (التي ستظهر على الـ TabSheet) و اكتب الأكواد التي تلزمك لكل مكون.

* ملاحظ جانبية:
بعد تصميم الـ Frame، إذا أردت إدراج نسخة منه أثناء التصميم فانقر على الرمز Frames في الصفحة Standard في صندوق المكونات (Component Palette). ستعرض عليك دلفي قائمة بالـ Frames التي قمت بتصميمها لتضيف واحداً منها.

أما أثناء التنفيذ فيكون الأمر كالتالي: نضيف الـ TabSheet (كما سبق) ثم نضيف إليها نسخة من الـ Frame (الجاهز بمكوناته و كوده):

1. أضف اسم الـ Unit الخاصة بالـ Frame إلى جملة uses في الـ Form حيث ستستعمله.
2. قم بتعريف متغير عام كعداد (في القسم interface أو implementation):
كود :
var FrammeIdx: Integer;

ثم يأتي كود الإضافة:
كود :
procedure ... var ANewSheet: TTabSheet; ANewFrame: TFrame1; begin // إنشاء صفحة جديدة ANewSheet := TTabSheet.Create(Self); ANewSheet.Caption := 'Page Caption'; ANewSheet.PageControl := PageControl1; // زيادة العداد FrammeIdx := FrammeIdx + 1; // إنشاء الإطار ANewFrame := TFrame1.Create(Self); // من المهم أن تعطي لكل إطار اسماً مختلفاً ANewFrame.Name := 'Frame' + IntToStr(FrammeIdx); // إإظهار الإطار على الصفحة الجديدة ANewFrame.Parent := ANewSheet; end;


* هناك ملاحظات سأضيفها في مشاركة قادمة إن شاء الله تعالى، أما الآن فقد تأخر الوقت.
نرجو الاستفادة و السلام.
الرد


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


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