23-02-2011, 11:55 AM
( Win الصفحة 32 ) : PageControl العنصر
يقوم هذا العنصر بإظهار صفحات مستقلة وللتعرف على هذا العنصر سنبدأ بمثال :
مثال :
اضغط على العنصر ،Win من الصفحة 32 PageControl ابدأ مشروعًا جديدًا وأضف إليه عنصر الصفحات
أعد الخطوة ، Tabsheet عندها ستظهر صفحة جديدة باسم 1 New Page بزر الفأرة اليميني وأختر من القائمة
. TabSheet و 3 TabSheet الأخيرة مرتين لإظهار 2
التاريخ " وأضف في داخلها العنصر " Caption وأعطها الخاصة Tabsheet اختر الصفحة الأولى 1
. MonthCalendar
الوقت " وأضف إليها العنصر " Caption وأعطها الخاصة TabSheet اختر الصفحة الثانية 2
ولا تنس إضافة مؤقت لتحديث الوقت... dtkTime القيمة Kind وأعطه الخاصة DateTimePicker
التاريخ والوقت " وأضف إليها عنصرين " Caption وأعطها الخاصة TabSheet اختر الصفحة الثالثة 3
.... dtkTime القيمة Kind أعط إحداهما الخاصة DateTimePicker
نفذ البرنامج ولاحظ كيفية الانتقال بين الصفحات ..
من ESC يمكن الانتقال من عنصر ابن إلى عنصر أب بالضغط على المفتاح ) PageControl اختر العنصر
عندها سيأخذ العنصر حجم النموذج بالكامل . alClient القيمة Align لوحة المفاتيح ) وأعطه الخاصة
Add واضغط علية مرتين يظهر صندوق حوار اختر منه Win من الصفحة 32 ImageList أضف العنصر
وأعط الخاصة PageControl عد بعدها إلى العنصر ،Ok لإضافة مجموعة من الصور، اضغط بعدها على
وعندها ستظهر الصور بجانب عنوانين الصفحات، نستطيع اختيار صور محددة ImageList القيمة 1 Images
... ImageIndex ثم كتابة رقم الصورة المطلوبة في الخاصة tabSheet لصفحة ما باختيار الصفحة
حيث يمكن أن تكون في الأسفل أو TapPosition يمكن تحويل موضع اختيار الصفحات عن طريق الخاصة
على اليمين أو على اليسار
بإعطائها القيمة PageControl للعنصر Style يمكن تحويل شكل الصفحات إلى أزرار عن طريق الخاصة
tpTop تساوي TapPosition لا تعمل هذه الخاصة إلا إذا كانت قيمة الخاصة ) tsFlatButtons أو tsButtons
. (
تحدد الصفحة الفعالة عند تنفيذ البرنامج . ActivePage الخاصة
يتحول لون خط عنوان الصفحة إلى اللون الأزرق True عند إعطاء هذه الخاصة القيمة : HotTrack الخاصة
عند مرور الفأرة فوقه ( في وقت التنفيذ ) .
( Win الصفحة 32 ) : TabControl العنصر
ويختلف عنه بكونه لا يعطي صفحات مستقلة حيث أنه مكون من PageControl يشبه هذا العنصر العنصر
صفحة واحدة ( أي أن العناصر توضع في صفحة واحدة ويتم تطبيق تغيرات على هذه العناصر عندما يضغط
المستخدم على أزرار الصفحات :
. مثال : سنقوم بكتابة برنامج يعطي جدول ضرب العدد 5
أكتب القيم 1,2,3,4,5,6,7,8,9 كل Tabs في الخاصة ، TabControl ابدأ مشروعًا جديدًا وأضف إليه العنصر
منها في سطر
. TabControl داخل العنصر Label أضف عنصري
أكتب التعليمات التالية : OnChange مستقل وفي الحدث
var i :integer;
begin
i := strtoint(tabcontrol1.Tabs[tabcontrol1.tabindex] );
label1.Caption := inttostr(i) + ' * 5 = ';
label2.Caption := inttostr(i * 5);
تعيد رقم الصفحة التي ضغط المستخدم عليها . TabControl1.TabIndex حيث
تعيد عنوان الصفحة التي يوجد رقمها بين القوسين [ ] . Tabcontrol1.Tabs[ ] و
نفذ البرنامج واضغط على الصفحات ولاحظ النتائج ...
بالنسبة لباقي الخصائص فهي مشابهة تمامًا لخصائص العنصر السابق .
( Win الصفحة 32 ) : UpDown العنصر
واعط الخاصة UpDown إلى مشروع جديد ، حدد العنصر 1 Edit وعنصر UpDown أضف عنصر
Edit ولاحظ تغير الرقم داخل UpDown نفذ البرنامج واضغط على أسهم العنصر ، Edit القيمة 1 Associate
. Edit للعنصر تحدد مقدار الزيادة أو النقصان في العدد داخل ال Increment الخاصة
. Edit تحددان القيمة الدنيا والعليا للعدد داخل Max و Min الخاصتان
تحدد القيمة الابتدائية للعنصر . Position الخاصة
تحدد اتجاه الأسهم ( عامودي أو أفقي ) . Orientation الخاصة
يتحول العدد من القيمة السفلى إلى العليا عند الضغط على True عند إعطاء هذه الخاصة القيمة : Warp الخاصة
. Up بعكس عند الضغط على الزر Down الزر
الذين يشبهان عمل هذا العنصر SpinButton و SpinEdit العنصرين Sample ملاحظة : يوجد في الصفحة
إلى حد ما .
التعامل مع السلاسل النصية :
: Concat 1 التابع
Concat ( s1, [s2..sn])
tring
مع بعضها S1..Sn يقوم هذا التابع بوصل السلاسل
مثال :
أكتب التعليمات التالية في حدث الضغط على زر :
var s1,s2,s3 : string;
begin
s1:= 'abc';
s2 := 'efg';
s3:= 'hij';
form1.caption:=concat(s1,s2,s3)
يشبه هذا التابع عملية جمع السلاسل النصية أي أن النتيجة ستكون مشابه لو كانت التعليمة الأخيرة
Form1.Caption := s1+s2+s3;
: Copy 2 التابع
Copy ( S
tring , Index,Count :Integer ) :String
. Count وبطول Index تبدأ من الحرف الذي ترتبه S يعيد هذا التابع سلسلة رمزية جزئية من السلسة
... Copy ( 'Hello All',5,1) = o ; Copy ( 'Hello All',2,6) = ello A : مثال
: Delete 3 الإجراء
Delete ( Var S
tring ,Index,Count ) ;
وبطول Index قيمة نفس السلسلة بعد حذف الرموز ابتداء من الرمز الذي ترتيبه S يعيد هذا الإجراء في المتحول
Count
مثال :
اكتب في حدث الضغط على زر التعليمات التالية :
var s1 : String;
Begin
s1:= 'Hello All' ;
Delete (s1,1,3);
Form1.Caption := s1;
ستكون Delete ( S وإذا غيرنا وسطاء الإجراء إلى الشكل ( 1,4,3 ، lo All ستكون نتيجة تنفيذ البرنامج القيمة
. HelAll النتيجة
: DupeString 4 التابع
DupeString ( S: String ,Count :Integer) :String;
مرة Count مكررة S يعيد هذا التابع القيمة
DupeString( 'Ha ',5) = Ha Ha Ha Ha Ha : مثال
StrUtils ملاحظة لتنفيذ هذا التابع نحتاج لاستدعاء الوحدة
: Insert 5 الأجراء
Insert ( S1:String , var S
tring ; Index :Integer ) ;
. S ويعيد النتيجة في S في السلسة Index ابتداء من الرمز S في السلسة S يقوم هذا الإجراء بحشر السلسة 1
مثال : تكتب التعليمات التالية في حدث الضغط على زر :
var s : string;
begin
s:= 'Hello Friends' ;
insert ( 'All ' ,s,7);
form1.Caption := s;
: StuffString التابع
StuffString( s
tring , start, length :integer , S1
tring )
tring;
مع حذف عدد من Start ابتداء من الرمز الذي ترتيبه S في قيمة السلسلة S يقوم هذا التابع بحشر السلسة قيمة 1
: Length بطول S الرموز من قيمة
قام التابع بحذف ستة أحرف ابتداء من الحرف stuffstring('Hello Friend',7,6,'all') = 'Hello all' : مثال
. Insert في حال تغير الرقم 6 إلى 0 سيعمل التابع عمل الإجراء ، all السابع وحشر السلسة
يختلف هذا التابع عن سابقة ب :
1 التابع يقوم بحذف قسم من السلسة وإدراج غيره .
يعيد السلسة StuffString ستعاد قيمة التابع فيه بينما التابع S بحاجة إلى متحول Insert 2 الإجراء
النتيجة بدون التأثير على وسطاءه ) .
StrUtils ملاحظة لتنفيذ هذا التابع نحتاج لاستدعاء الوحدة
: LeftStr التابع
LeftStr(S:String ,Count : integer)
tring
: Count وبطول S يعيد هذا التابع سلسلة نصية تبدأ من يسار السلسلة
. LeftStr( 'Good Morning,4 ) = Good ، LeftStr( 'Hello Frind',6) = Hello : مثال
يشبه التابع السابق ولكنه يعيد ابتداء من نهاية السلسة : : RightStr التابع
Rightstr( 'Hello Friend',6)=Friend : مثال
: LowerCase التابع
بعد تحويل جميع حروفها إلى حروف صغيرة ( الأحرف اللاتينية ) . S يعيد هذا التابع السلسلة
LowerCase(Hello Friend) = hello friend : مثال
: UpperCase التابع
UpperCase (' Hello Friend') = HELLO FRIEND عكس التابع السابق ،مثال
: Trim التابع
S يقوم هذا التابع بحذف الفراغات من بداية ونهاية السلسة
مثال :
إلى برنامج جديد وفي حدث الضغط على الزر اكتب التعليمات التالية : Edit أضف زر وعنصر
edit1.Text:= Trim(edit1.Text );
واضغط ' Hello All ' وحاول ترك فراغات في بداية هذه النص أو آخرة Edit أكتب نصًا ما في العنصر 1
. 'Hello All' على الزر فيقوم التابع بحذف الفراغات وإعادة القيمة
لهما نفس التأثير غير أنهما يحذفان الفراغات من بداية السلسة أو نهايتها على TrimRight و TrimLeft التابعين
التوالي .
: Format التابع
Format ( S :String ; A:array of const ) ;
يعيد هذا التابع السلسلة S بعد إدراج القيم في A... داخلها وفقًا لبعض المعايير
يقوم هذا العنصر بإظهار صفحات مستقلة وللتعرف على هذا العنصر سنبدأ بمثال :
مثال :
اضغط على العنصر ،Win من الصفحة 32 PageControl ابدأ مشروعًا جديدًا وأضف إليه عنصر الصفحات
أعد الخطوة ، Tabsheet عندها ستظهر صفحة جديدة باسم 1 New Page بزر الفأرة اليميني وأختر من القائمة
. TabSheet و 3 TabSheet الأخيرة مرتين لإظهار 2
التاريخ " وأضف في داخلها العنصر " Caption وأعطها الخاصة Tabsheet اختر الصفحة الأولى 1
. MonthCalendar
الوقت " وأضف إليها العنصر " Caption وأعطها الخاصة TabSheet اختر الصفحة الثانية 2
ولا تنس إضافة مؤقت لتحديث الوقت... dtkTime القيمة Kind وأعطه الخاصة DateTimePicker
التاريخ والوقت " وأضف إليها عنصرين " Caption وأعطها الخاصة TabSheet اختر الصفحة الثالثة 3
.... dtkTime القيمة Kind أعط إحداهما الخاصة DateTimePicker
نفذ البرنامج ولاحظ كيفية الانتقال بين الصفحات ..
من ESC يمكن الانتقال من عنصر ابن إلى عنصر أب بالضغط على المفتاح ) PageControl اختر العنصر
عندها سيأخذ العنصر حجم النموذج بالكامل . alClient القيمة Align لوحة المفاتيح ) وأعطه الخاصة
Add واضغط علية مرتين يظهر صندوق حوار اختر منه Win من الصفحة 32 ImageList أضف العنصر
وأعط الخاصة PageControl عد بعدها إلى العنصر ،Ok لإضافة مجموعة من الصور، اضغط بعدها على
وعندها ستظهر الصور بجانب عنوانين الصفحات، نستطيع اختيار صور محددة ImageList القيمة 1 Images
... ImageIndex ثم كتابة رقم الصورة المطلوبة في الخاصة tabSheet لصفحة ما باختيار الصفحة
حيث يمكن أن تكون في الأسفل أو TapPosition يمكن تحويل موضع اختيار الصفحات عن طريق الخاصة
على اليمين أو على اليسار
بإعطائها القيمة PageControl للعنصر Style يمكن تحويل شكل الصفحات إلى أزرار عن طريق الخاصة
tpTop تساوي TapPosition لا تعمل هذه الخاصة إلا إذا كانت قيمة الخاصة ) tsFlatButtons أو tsButtons
. (
تحدد الصفحة الفعالة عند تنفيذ البرنامج . ActivePage الخاصة
يتحول لون خط عنوان الصفحة إلى اللون الأزرق True عند إعطاء هذه الخاصة القيمة : HotTrack الخاصة
عند مرور الفأرة فوقه ( في وقت التنفيذ ) .
( Win الصفحة 32 ) : TabControl العنصر
ويختلف عنه بكونه لا يعطي صفحات مستقلة حيث أنه مكون من PageControl يشبه هذا العنصر العنصر
صفحة واحدة ( أي أن العناصر توضع في صفحة واحدة ويتم تطبيق تغيرات على هذه العناصر عندما يضغط
المستخدم على أزرار الصفحات :
. مثال : سنقوم بكتابة برنامج يعطي جدول ضرب العدد 5
أكتب القيم 1,2,3,4,5,6,7,8,9 كل Tabs في الخاصة ، TabControl ابدأ مشروعًا جديدًا وأضف إليه العنصر
منها في سطر
. TabControl داخل العنصر Label أضف عنصري
أكتب التعليمات التالية : OnChange مستقل وفي الحدث
var i :integer;
begin
i := strtoint(tabcontrol1.Tabs[tabcontrol1.tabindex] );
label1.Caption := inttostr(i) + ' * 5 = ';
label2.Caption := inttostr(i * 5);
تعيد رقم الصفحة التي ضغط المستخدم عليها . TabControl1.TabIndex حيث
تعيد عنوان الصفحة التي يوجد رقمها بين القوسين [ ] . Tabcontrol1.Tabs[ ] و
نفذ البرنامج واضغط على الصفحات ولاحظ النتائج ...
بالنسبة لباقي الخصائص فهي مشابهة تمامًا لخصائص العنصر السابق .
( Win الصفحة 32 ) : UpDown العنصر
واعط الخاصة UpDown إلى مشروع جديد ، حدد العنصر 1 Edit وعنصر UpDown أضف عنصر
Edit ولاحظ تغير الرقم داخل UpDown نفذ البرنامج واضغط على أسهم العنصر ، Edit القيمة 1 Associate
. Edit للعنصر تحدد مقدار الزيادة أو النقصان في العدد داخل ال Increment الخاصة
. Edit تحددان القيمة الدنيا والعليا للعدد داخل Max و Min الخاصتان
تحدد القيمة الابتدائية للعنصر . Position الخاصة
تحدد اتجاه الأسهم ( عامودي أو أفقي ) . Orientation الخاصة
يتحول العدد من القيمة السفلى إلى العليا عند الضغط على True عند إعطاء هذه الخاصة القيمة : Warp الخاصة
. Up بعكس عند الضغط على الزر Down الزر
الذين يشبهان عمل هذا العنصر SpinButton و SpinEdit العنصرين Sample ملاحظة : يوجد في الصفحة
إلى حد ما .
التعامل مع السلاسل النصية :
: Concat 1 التابع
Concat ( s1, [s2..sn])
tringمع بعضها S1..Sn يقوم هذا التابع بوصل السلاسل
مثال :
أكتب التعليمات التالية في حدث الضغط على زر :
var s1,s2,s3 : string;
begin
s1:= 'abc';
s2 := 'efg';
s3:= 'hij';
form1.caption:=concat(s1,s2,s3)
يشبه هذا التابع عملية جمع السلاسل النصية أي أن النتيجة ستكون مشابه لو كانت التعليمة الأخيرة
Form1.Caption := s1+s2+s3;
: Copy 2 التابع
Copy ( S
tring , Index,Count :Integer ) :String. Count وبطول Index تبدأ من الحرف الذي ترتبه S يعيد هذا التابع سلسلة رمزية جزئية من السلسة
... Copy ( 'Hello All',5,1) = o ; Copy ( 'Hello All',2,6) = ello A : مثال
: Delete 3 الإجراء
Delete ( Var S
tring ,Index,Count ) ;وبطول Index قيمة نفس السلسلة بعد حذف الرموز ابتداء من الرمز الذي ترتيبه S يعيد هذا الإجراء في المتحول
Count
مثال :
اكتب في حدث الضغط على زر التعليمات التالية :
var s1 : String;
Begin
s1:= 'Hello All' ;
Delete (s1,1,3);
Form1.Caption := s1;
ستكون Delete ( S وإذا غيرنا وسطاء الإجراء إلى الشكل ( 1,4,3 ، lo All ستكون نتيجة تنفيذ البرنامج القيمة
. HelAll النتيجة
: DupeString 4 التابع
DupeString ( S: String ,Count :Integer) :String;
مرة Count مكررة S يعيد هذا التابع القيمة
DupeString( 'Ha ',5) = Ha Ha Ha Ha Ha : مثال
StrUtils ملاحظة لتنفيذ هذا التابع نحتاج لاستدعاء الوحدة
: Insert 5 الأجراء
Insert ( S1:String , var S
tring ; Index :Integer ) ;. S ويعيد النتيجة في S في السلسة Index ابتداء من الرمز S في السلسة S يقوم هذا الإجراء بحشر السلسة 1
مثال : تكتب التعليمات التالية في حدث الضغط على زر :
var s : string;
begin
s:= 'Hello Friends' ;
insert ( 'All ' ,s,7);
form1.Caption := s;
: StuffString التابع
StuffString( s
tring , start, length :integer , S1
tring )
tring;مع حذف عدد من Start ابتداء من الرمز الذي ترتيبه S في قيمة السلسلة S يقوم هذا التابع بحشر السلسة قيمة 1
: Length بطول S الرموز من قيمة
قام التابع بحذف ستة أحرف ابتداء من الحرف stuffstring('Hello Friend',7,6,'all') = 'Hello all' : مثال
. Insert في حال تغير الرقم 6 إلى 0 سيعمل التابع عمل الإجراء ، all السابع وحشر السلسة
يختلف هذا التابع عن سابقة ب :
1 التابع يقوم بحذف قسم من السلسة وإدراج غيره .
يعيد السلسة StuffString ستعاد قيمة التابع فيه بينما التابع S بحاجة إلى متحول Insert 2 الإجراء
النتيجة بدون التأثير على وسطاءه ) .
StrUtils ملاحظة لتنفيذ هذا التابع نحتاج لاستدعاء الوحدة
: LeftStr التابع
LeftStr(S:String ,Count : integer)
tring: Count وبطول S يعيد هذا التابع سلسلة نصية تبدأ من يسار السلسلة
. LeftStr( 'Good Morning,4 ) = Good ، LeftStr( 'Hello Frind',6) = Hello : مثال
يشبه التابع السابق ولكنه يعيد ابتداء من نهاية السلسة : : RightStr التابع
Rightstr( 'Hello Friend',6)=Friend : مثال
: LowerCase التابع
بعد تحويل جميع حروفها إلى حروف صغيرة ( الأحرف اللاتينية ) . S يعيد هذا التابع السلسلة
LowerCase(Hello Friend) = hello friend : مثال
: UpperCase التابع
UpperCase (' Hello Friend') = HELLO FRIEND عكس التابع السابق ،مثال
: Trim التابع
S يقوم هذا التابع بحذف الفراغات من بداية ونهاية السلسة
مثال :
إلى برنامج جديد وفي حدث الضغط على الزر اكتب التعليمات التالية : Edit أضف زر وعنصر
edit1.Text:= Trim(edit1.Text );
واضغط ' Hello All ' وحاول ترك فراغات في بداية هذه النص أو آخرة Edit أكتب نصًا ما في العنصر 1
. 'Hello All' على الزر فيقوم التابع بحذف الفراغات وإعادة القيمة
لهما نفس التأثير غير أنهما يحذفان الفراغات من بداية السلسة أو نهايتها على TrimRight و TrimLeft التابعين
التوالي .
: Format التابع
Format ( S :String ; A:array of const ) ;
يعيد هذا التابع السلسلة S بعد إدراج القيم في A... داخلها وفقًا لبعض المعايير

