۱۲-بهمن-۱۳۸۶, ۰۱:۲۷:۰۷
آموزش دلفي مقدماتي ( بحث تا معرفي تابع ها )
جلسه اول
دلفي چيست ؟
دلفي منبع عظيمي از توانائي و ابزارهاي برنامه نويسي تحت ويندوز است. همه نقطه ضعفهاي موجود در زبانهاي برنامه نويسي تحت ويندوز، در دلفي پوشانده شده است. دلفي مجموعه قدرتمندي از تسهيلات طراحي و ايجاد برنامه بهمراه سرعت بالا ارائه مي دهد.ا
وقتي از ديد خاصي به زبانهاي برنامه نويسي مي نگريم، ملاحظه مي كنيم دو نوع از اين زبانها وجود دارد.ا
يك نوع ابزارهاي خاص را براي توسعه سريع سيستمها فراهم كرده اند و نوع ديگر به شما اجازه مي دهد به هر چيزي روي ماشين دسترسي داشته باشيد.ا
Paradox, Visual Basic, PowerBuilder, Visual Foxpro, Smalltalk نمونه اي از نوع اول هستند.
C++, Turbo Pascal, Delphi مثالهائي از نوع دوم هستند.
نكته قابل توجه اينكه دلفي علاوه بر اينكه در دسته دوم قرار دارد از مزاياي دسته اول نيز برخوردار است. يعني دلفي شامل تمام ابزارهاي لازم براي توسعه سريع سيستمهاي كاربردي است.
راستش من علاوه بر دلفي به سي هم علاقه دارم كه هركدام مزايايي براي خود دارند.
كاربرد دلفي خيلي ساده است.
با دلفي مي توانيد به سرعت برنامه كاربردي ايجاد كنيد.
با بكارگيري عبارات و دستورات دلفي به سادگي خواندن و نوشتن متون انگليسي است.
اما مزاياي سي
فوق العاده انعطاف پذير است.
تقريبا كنترل خوبي بر تمام جنبه هاي محيط برنامه نويسي دارد.
پتانسيل خوبي براي كار روي زير ساختهاي گوناگون دارد.
هسته اصلي روشهاي برنامه نويسي شي گرا در دلفي نهفته است. من معتقدم كه مفهوم شي گرا، در دلفي كاملتر از سي است.
زبان دلفي آنقدر ساده است كه مي توان اصول آنرا در عرض چند ساعت فرا گرفت، چند هفته براي ياد گرفتن كليات اين زبان كافي است و زمان سه ماه براي فراگرفتن اكثر مهارتهاجهت ايجاد برنامه هاي كاربردي كافي است. متخصص و متبحر شدن در دلفي مثل زبانهاي ديگر به زمان و تجربه زيادي نياز دارد و شايد صرف دو سال وقت نياز باشد.
رقابت بيشتر دلفي با نرم افزارهاي توليدي شركت مايكروسافت كه تحت عنوان Visual Studio به بازار عرضه ميشود ، مي باشد و اين به خاطر آن است كه اين نرم افزارها اصولا با ويندوز شركت مايكرو سافت ارتباط و هماهنگي زيادي دارند. اما دلفي نشان داده است كه نه تنها ارتباط آن با ويندوز مشكل نيست ، بلكه خيلي راحت تر ميتوان با ويندوز ارتباط برقرار كرد و برنامه هاي خود را با سازگاري بيشتري با ويندوز ، بنويسيم.
برنامه نويسي با دلفي :
برنامه نويسي با دلفي همانند برنامه نويسي با ساير نرم افزارها مي باشد با اين تفاوت كه نوع توابع و عناصر و نحوه ي كاربرد آنها در دلفي متفاوت است. يك برنامه ي دلفي تشكيل شده است از :
قطعات ويژوال : دلفي كتابخانه اي از قطعات ويژوال دارد. برنامه نويس مي تواند قطعاتي را ايجاد كند و به اين كتابخانه بيافزايد كه اين يكي از امكانات بالقوه ي دلفي ميباشد. برنامه هاي دلفي مجموعه اي از اين قطعات مي باشند.
فرم ها : فرم (Form) اساس تمام برنامه هاي دلفي مي باشد.فرم همانند پنجره در محيط ويندوز است. تمام قطعات برنامه در فرم قرار مي گيرد و در واقع صفحه ي طراحي برنامه است.
انواع داده ها : از جنبه هاي مهم هر زبان برنامه نويسي كه بايد مورد بررسي قرار بگيرد ، انواع داده ها در آن مي باشد كه مطابق با دا ده ها و اطلاعات مورد نياز ما باشد. ( در ادامه به طور مفصل توضيح خواهيم داد)
تابع ها و دستورالعملها : هر زبان برنامه نويسي تابعها و دستورالعملهاي مخصوص به خود را دارد ولي اصول كار بيشتر آنها و هدف استفاده از آنها در واقع يكي است.
يك نكته ي كليدي : « بهترين برنامه نويس كسي است كه پايه ي خود را در طراحي الگوريتم قوي سازد. »
جلسه دوم
انواع داده ها در دلفي :
انواع صحيح : اعدادي بدون نقطه و اعشار را شامل ميشوند.
انواع حقيقي: ميتواند اعداد با نقطه و اعشار را شامل باشد.
انواع بولي : انواع بولي بسيار ساده ولي پركاربرد است. اينها مقادير درست(true) و نادرست (false) را بيان ميكنند.
انواع كاراكتري براي ذخيره كاراكترهايي مثل 'A' و 'B' و '*' و 'x' و غيره به كار ميروند.
نوع رشته اي: براي ذخيره ي رشته ها مثل اسامي و... به كار مي روند. رشته ها مي توانند تا 255 كاراكتر را در خود ذخيره كنند ولي چنانچه در ابتداي برنامه از راهنماي { +H $ } استفاده شود ، طول رشته مي تواند بسيار زياد تا حدود 3 گيگا بايت باشد.
جلسه سوم
متغيرها:
متغيرها نامهايي براي كلمات حافظه اند و محتويات آنها ممكن است در طول اجراي برنامه تغيير كند. براي نامگذاري متغيرها ، تركيبي از حروف A تا Z , ارقام و خط ربط (-) استفاده مي شود.
* نكته : دقت داشته باشيد در نامگذاري متغيرها ، تفاوتي بين حروف كوچك و بزرگ نيست.
تعريف متغيرها :
منظور از تعريف متغيرها ، انتخاب نام و تعيين نوع آنهاست. در تعريف متغيرها از كلمه ي كليدي Var استفاده مي شود.
Var
;نوع آن : نام متغير
مثال :
Var x: integer ch : char; f : real; st: string;j
ما در اين مثال چهار متغير را هم زمان تعريف كرده ايم.
در مثال بالا ، متغير x از نوع صحيح ، ch از نوع كاراكتر ، f از نوع حقيقي و st از نوع رشته اي تعريف شده است.
مقدار دادن به متغيرها :
به دو صورت مي توان به متغيرها مقدار داد :
u استفاده از دستور انتساب كه با =: انجام مي شود.
v با استفاده از دستورات ورودي.
مثال : براي متغيرهايي كه در مثال بالا تعريف كرديم :
x:15 ; ch:='a'; f:= 15.51; st:= ' Ali';
ثوابت :
ثوابت مقاديري هستند كه در برنامه وجود دارند و در طول برنامه تغيير نمي كنند . براي تعريف ثوابت از كلمه كليدي Const استفاده مي شود :
Const
مقدار = نام ثابت ;
عملگرها :
عملگر (Operator) نمادي است كه عمل خاصي را انجام مي دهد .
1 ) محاسباتي : (+ , - , * , / , div , mod) .
2 ) منطقي : (not , and , or , xor) .
*** عملگر not ارزش عملوندش را نقيض مي كند . حاصل كار and وقتي ارزش درستي دارد كه هر دو عملوند ارزش درستي داشته باشند. حاصل كار or وقتي نادرست است كه هر دو عملوند ارزش نادرست داشته باشند و در بقيه حالات ارزش درستي دارد وحاصل xor وقتي ارزش نادرستي دارد كه هردو عملوند يا ارزش درستي داشته باشند و يا ارزش نادرستي .
3) بيتي : [(not=نقيض) ، (and=و) ، (or=يا) ، (xor=ياي انحصاري) ، (shl=شيفت به چپ) ، (shr=شيفت به راست) ]
اين عملگرها بيت به بيت بر روي عملوندهايشان عمل مي كنند . بيت صفر داراي ارزش نادرستي و بيت يك داراي ارزش درستي است .
4 ) رابطه اي : (< , => , > , =< , = , <> , (in=عضويت : در مجموعه ها تشريح مي شود)).
توابع TypeCasting (تبديل نوع) است. TypeCasting يعني تبديل يك نوع داده به نوع ديگر.
شما هر نوع داده اي را ميتوانيد به نوع دلخواه تبديل كنيد به شرطي كه نوع داده مبدا با داده مقصد سازگاري داشته باشد.
در اينجا تعدادي از توابع TypeCasting مهم شرح داده ميشوند.
String TypeCasting :
: شرح
يك رشته را دريافت ميكند و به يك مقدار عددي صحيح تبديل ميكند StrToInt()
يك مقدار رشته اي را به مقدار منطقي تبديل ميكند StrToBool()
تبديل مي كند BCD يك مقدار رشته اي را به كد پيچ StrToBCD()
تبديل مي كند Currency يك مقدار رشته اي را به StrToCurr()
يك مقدار رشته اي را به تاريخ تبديل ميكند StrToDate()
يك مقدار رشته اي را به مقدار عددي اعشاري تبديل ميكند StrToFloat()
يك مقدار رشته اي را به مقدار عددي صحيح بلند تبديل ميكند StrToInt()
يك مقدار رشته اي را به زمان تبديل ميكند StrToTime()
Float TypeCasting :
شرح:
تبديل مي كند Currency يك مقدار عدد اعشاري را به FloatToCurr()
يك مقدار عددي صحيح را به رشته تبديل ميكند FloatToStr()
Integer TypeCasting :
شرح :
يك مقدار عددي صحيح را دريافت ميكند و به يك رشته تبديل ميكند IntToStr()
يك مقدار يك عددي صحيح را به مقدار مبناي 16 تبديل ميكند IntToHex()
Other TypeCastings :
يك مقدار تاريخ را به رشته تبديل ميكند DateToStr()
يك مقدار زمان را به رشته تبديل ميكند TimeToStr()
جلسه چهارم
كامپوننت (كنترل) چيست ؟
كد نويسي هنر يك برنامه نويس است. ولي گاهي اوقات انجام يك پروژه بزرگ نياز به كدنويسي زياد و غالبا تكراري دارد كه اينجا ديگه هنر برنامه نويس اين است كه بتواند از كدهاي از پيش نوشته خود كمال استفاده را ببرد.
برنامه نويسان بزرگ براي اين كه كار ديگر برنامه نويسان را از بابت كدنويسي هاي زياد و تكراري راحت كنند ،اقدام به جمع آوري تمام كدهاي مربوطه براي انجام يك كار ، مي كنند كه در اصطلاح برنامه نويسي به اين مجموعه ها كامپوننت گفته ميشود.
طريقه نصب كامپوننت :
در دلفي امكان نصب چهار نوع كامپوننت مي باشد ، كه به قرار زير هستند :
1- نصب و كامپايل فايلهائي كه از نوع pas. هستند. براي نصب اين نوع كامپوننت بايد اين مسير رو دنبال كنيد:
Component-> Install Component
2 - نصب فايل ocx. (تمامي اين فايلها خاصيت نصب رو دارند) و برخي از فايلهاي dll. كه به روشي خاص كامپايل شده اند. براي نصب اين نوع كامپوننت اين مسير رو دنبال كنيد:
Component-> Import AxtiveX Control
3 - نصب فايل bpl. ، كه براي نصب اين نوع كامپوننت بايد اين مسير رو دنبال كنيد:
Componet-> Install Packages
4- اجراي فايل باپسوند DPK.
هر يك از كنترل ها داراي ويژگي هايي است كه مشتمل بر [خواص ، متدها و رويدادها] مي باشد .
- خواص مربوط به تنظيمات ظاهري و اجرايي هر كنترل مي باشد .
- متدها دستوراتي است كه بوسيله آن عملياتي بر روي كنترل ها و برنامه اجرايي اعمال مي شود .
- رويدادها دستوراتي است كه در نتيجه تغييرات بر روي كنترل فراخواني و انجام مي شود .
** قبل از هر چيز به خواص و متدها و رويدادهاي يك فرم مي پردازيم :
ActiveControl = اين خاصيت تعيين مي كند كه با فعال شدن فرم كدام كنترل بر روي فرم داراي فوكوس باشد .
Align = موقعيت و اندازه فرم را در هنگام نمايش دادن فرم نشان مي دهد .[اگر اين خاصيت بر روي alTop تنظيم شود در هنگام اجرا فرم در قسمت بالاي صفحه نمايش و عرض آن تمام عرض صفحه را مي پوشاند .]
AutoScroll = اين خاصيت ميله هاي مرورگر بر روي فرم را كنترل مي كند .[در صورتي كه اين خاصيت بر روي True تنظيم شود در صورتي كه اندازه فرم براي نمايش همه كنترل ها كوچك باشد ميله هاي مرورگر بطور اتوماتيك نمايش داده مي شوند .]
AutoSize = اين خاصيت بيشتر در موقع طراحي برنامه عمل مي كند به صورتي كه طول و عرض فرم را به وسيله كنترل هاي موجود بر روي فرم تنظيم مي كند .
BiDiMode = اين خاصيت براي ترازبندي كنترل ها و متن و خاصيت كپشن فرم به كار مي رود .[در صورتي كه بر روي bdLeftToRight تنظيم شود ترازبندي از طرف چپ به راست فرم انجام مي شود .]
BorderIcon = اين خاصيت تعيين مي كند كه در زمان اجرا كدام دكمه هاي سيستم روي فرم ظاهر شوند .[اين گزينه ها شامل منوي سيستم ، دكمه به حداقل رساندن ، دكمه به حداكثر رساندن و دكمه راهنما مي باشد .]
BorderStyle = اين خاصيت نوع لبه فرم را نشان مي دهد . مقدار پيش فرض bsSizeable است كه پنجره با قابليت تغيير اندازه مي باشد و مقادير bsDialog و bsNone مربوط به پنجره هايي است كه نمي توان اندازه آنها را تغيير داد .
BorderWidth = پهناي لبه هاي فرم را بر حسب پيكسل مشخص مي كند .
Caption = متن عنوان فرم را مشخص مي كند . اين خاصيت در موقع تغيير آن عمل مي كند و عنوان فرم را با متن جديد نشان مي دهد .
ClientWidth و ClientHeight = با استفاده از اين دو خاصيت مي توان طول و عرض ناحيه كاري را مشخص نمود(منظور از ناحيه كاري فرم ، ناحيهاي داخل كادر است كه زير نوار منو قرار دارد) تنظيم اين دو خاصيت منجر به تغيير اتوماتيك خواص Width و Height مي گردد .
Color = رنگ سطح روي فرم را مشخص مي كند . مقدار پيش فرض clBtnFace مي باشد كه رنگ سطح فرم را مطابق با رنگ تنظيمي پنجره هاي ويندوز مشخص مي كند .
Constraints = اين خاصيت براي تعيين حداكثر و حداقل طول و عرض فرم به كار مي رود . با مقدار دادن به هر يك از خواص زير مجموعه اين خاصيت [MaxHeight , MinHeight , MaxWidth , MinWidth] اندازه فرم به اين مقادير محدود مي شود .
Cursor = شكل اشاره گر ماوس را هنگامي كه ماوس بر روي فرم حركت مي كند مشخص مي كند .
DefaultMonitor = اين خاصيت در يك محيط با چند مانيتور مثل ويندوز 98 تعيين مي كند كه فرم روي كدام مانيتور نمايش داده شود .
DockSite = اين خاصيت مشخص مي كند كه فرم به صورت يك ظرف براي كنترل هاي جمع شدني عمل كند .
Enabled = اين فرم مشخص مي كند كه فرم در هنگام اجرا فعال باشد يا خير .
Font = اين خاصيت، فونت استفاده شده در فرم را تعيين مي كند . مورد مهمي كه بايد به آن توجه كرد اين است كه كنترل- هاي روي فرم ، فونت آن را به ارث مي برد .
FormStyle = اين خاصيت وضعيت و نوع فرم را مشخص مي كند . مقدار پيش فرض آن fsNormal است كه فرم حالت عادي خود را دارد . با مقدار fsStayOnTop فرم هميشه روي صفحه قرار مي گيرد .فرم هاي MDI بايد روي fsMDIForm و فرم هاي فرزند MDI روي fsMDIChild تنظيم شوند .
Height = اندازه ارتفاع و عرض فرم را تنظيم مي كند .
Hint = متن اشاره كوتاه (ToolTip) را مشخص مي كند .
HorzScrollBar و VertScrollBar = اين خواص مقادير خاص خودشان را براي كنترل عمليات ميله مرور تنظيم مي كند .
Icon = وقتي فرم در زمان اجرا نمايش داده شود و نيز وقتي كه فرم به حداقل اندازه برسد شمايلي روي نوار عنوان مشخص مي شود كه اين شمايل با اين خاصيت مشخص مي گردد .
جلسه پنجم
ادامه خواص فرم :
KeyPerview : اگر مقدار اين خاصيت برابر True باشد از آن پس اكثر ضربه هاي كليد به جاي آنكه ابتدا توسط عنصري كه فوكوس روي آن است پردازش شود توسط رويدادهاي مربوط به كليدهاي فرم پردازش مي شود .
Left : اين خاصيت مقدار تو رفتگي از سمت چپ صفحه نمايش را براي فرم تنظيم مي كند .
Menu : اين خاصيت وقتي به كار مي رود كه يك نوار منو در بالاي فرم خود ايجاد كنيد و با استفاده از تنظيم خواص موجود در آن تنظيمات مربوط به منو انجام مي گيرد . در ضمن در هنگامي كه يك منو ايجاد شود به صورت اتوماتيك اين خاصيت با نام منو تنظيم مي شود . همچنين با استفاده از اين خاصيت مي توان مشخص كرد در موقعي كه چند منو در فرم موجود است كدام نمايش داده شوند .
Name : با استفاده از اين خاصيت مي توان نامي براي فرم براي كار بر روي آن و دسترسي به آن در كدهاي برنامه در نظر گرفت
ObjectMenuItem : اين خاصيت ليستي از آيتم هاي موجود در منوي بالاي فرم را نمايش مي دهد .
ParentFont : اين خاصيت تعيين مي كند ، خاصيت رنگ فرم ، از رنگ تعريف شده در خاصيت رنگ خودش استفاده كند يا از همان رنگي كه دلفي براي آن تعريف كرده (Parent) .
PixelsPerInch : اين خاصيت مشخص مي كند هر اينچ از فرم از چند پيكسل تشكيل شده است .
PopupMenu : اين خاصيت براي تعيين منوي شناور (PopupMenu) استفاده مي گردد كه در فرم ظاهر مي شود .
Position : اين خاصيت راهي آسان براي تنظيم موقعيت مكاني فرم به دست مي دهد .(poDesigned = فرم را در همان مكاني كه در زمان طراحي مشخص ساخته ايد قرار مي دهد -- poScreenCenter = فرم را در مركز صفحه نمايش كاربر قرار مي دهد -- poDefaultPosOnly = باعث ميشود كه ابعاد فرم همان ابعادي باشد كه تنظيم شده است ولي محل آن را دلفي تعيين مي كند -- poDefaultSizeOnly = باعث مي شود كه مكان فرم همان جايي باشد كه در موقع طراحي مشخص گرديده اما دلفي ابعاد آن را تغيير مي دهد )
PrintScale : اين خاصيت عمل چاپ اطلاعات روي يك فرم را آسان ميسازد .(poNone = هيچگونه بزرگنمايي صورت نخواهد پذيرفت -- poPropotional = دلفي فرم به گونهاي مقياس بندي كرده تا اطلاعات چاپ شده و اطلاعاتي كه ديده ميشود ابعاد يكساني داشته باشند --- poPrintToFit =مقياسبندي طوري انجام مي شود كه فرم با اندازه صفحه چاپ هماهنگ باشد )
Scaled : اگر مقدار اين خاصيت True باشد خاصيت PixelsPerInch عمل مي نمايد .
ShowHint : اين خاصيت براي فعال كردن خاصيت Hint به كار مي رود . اگر مقدار خاصيت برابر True باشد خاصيت Hint فعال است .
Tag : از اين خاصيت براي نگهداري عددي صحيح استفاده مي شود كه اطلاعاتي راجع به آن فرم است .
Top : اين خاصيت فاصله فرم با بالاي صفحه نمايش را به پيكسل تعيين مي كند .
VertScrollBar : اين خاصيت براي تعيين نوع ScrollBar عمودي استفاده مي شود .
|
|__ ButtonSize : اين خاصيت اندازه كليد را تعيين مي كند .
|__ Increment : اين خاصيت مشخص مي كند كه اگر كاربر ScrollBar را كليك كند مكان نماي ماوس چقدر حركت كند .
|__ Margin : فاصله ScrollBar را با عناصر فرم به پيكسل مشخص مي كند .
|__ Psition : تعيين مي كند شيء ScrollBar در كجا نمايش داده شود .
|__ Range : تعيين مي كند نوار جابجايي (ScrollBar) در كجا نمايش داده شود .
|__ Visible : اين خاصيت براي قابل رؤيت بودن نوار جابجايي استفاده مي شود .
Visible : اگر مقدار اين خاصيت True باشد فرم قابل رؤيت است در غير اينصورت فرم غيرقابل رؤيت است .
Width : اين خاصيت عرض فرم را با حاشيه آن به پيكسل مشخص مي كند .
WindowState : اين خاصيت اندازه فرم را مشخص مي كند .(wsNormal=در اين حالت فرم به صورت حداقل و حداكثر نمي باشد -- wsMaximized , wsMinimized= به ترتيب مشخص مي كنند كه فرم به صورت حداقل و حداكثر نمايش داده شود)
*** كليه خواص را مي توان در حين اجراي برنامه نيز تنظيم كرد :
Form1.Caption := 'My Program' ;
Form1.Width := 150 ;
Form1.Visible := False ;
Form1.Position := wsMaximized ;
Form1.BorderIcons.biMaximize := False ;
* توجه داشته باشيد كه براي مقدار دادن به خواص با استفاده از كد بايد بعد از نام فرم يا عنصر از يك نقطه و نام خاصيت موردنظر سپس علامت =: و در نهايت مقدار خاصيت را با توجه به نوع آن نوشته مي شود .
* براي مقادير رشتها بايد از يك جفت '' استفاده كرد .
جلسه ششم
در اين جلسه به بررسي رويدادهاي مربوط به يك فرم ميپردازيم :
براي انتخاب يك رويداد از پنجره Object Inspector قسمت Events را انتخاب كنيد تا ليستي از رويدادها ظاهر شوند .
OnActivate : زماني كه مكان نما به فرم منتقل مي شود اين رويداد فراخواني مي گردد .(زماني كه فرم فعال مي شود)
OnClick : هنگامي كه كاربر ناحيه خالي فرم را با ماوس كليك مي كند فراخواني مي شود .
OnCloseQuery : در موقعي كه كاربر سعي بر بستن فرم را داشته باشد اين رويداد فراخواني مي شود . [با استفاده از اين رويداد مي توان از بستن فرم جلوگيري كرد]
OnClose : اين رويداد پس از رويداد OnCloseQuery فراخواني شده و هنوز مي توان با استفاده از اين رويداد از بستن فرم جلوگيري كرد .
OnCreate : اين رويداد در زمان ايجاد شدن فرم فراخواني مي گردد . با استفاده از اين رويداد مي توان خواص اوليه فرم و عناصر بر روي آن را تنظيم كرد .
OnDblClick : هنگامي كه كاربر در ناحيه خالي فرم ماوس را دو بار كليك كند ، اين رويداد فراخواني مي شود .
OnDeactivate : موقعي كه كاربر به يك برنامه ديگر يا فرمي ديگر سوئيچ كند اين رويداد فراخواني مي شود .[زماني كه فرم غيرفعال مي شود]
OnDestroy : اين رويداد زمان حذف فرم فراخواني مي شود . پس از فراخواني اين رويداد تمام منابع اشغال شده توسط دلفي آزاد مي شود .
OnDragDrop : زماني كه يك عنصر با ماوس در فرم قرار مي گيرد اين رويداد فراخواني مي شود .
OnDragOver : موقعي كه عنصر روي فرم حركت كند اين رويداد فراخواني مي شود .
OnHide : اين رويداد در زمان مخفي شدن فرم اتفاق مي افتد .
OnKeyDown : زماني كه كاربر يكي از كليدهاي صفحه كليد (به جز Alt,Shift,Insert) را پايين نگه دارد ، اين رويداد فراخواني مي شود .
OnKeyPress : موقعي كه كه كليدي از صفحه كليد فشرده شود فراخواني مي شود . اين رويداد شامل كليدهاي Alt,Shift,Insert نمي باشد .
OnKeyUp : اين رويداد هنگام رهاشدن كليدِ فشرده شده فراخواني مي شود .
OnMouseDown : وقتي يكي از كليدهاي ماوس فشار داده شود اين رويداد فراخواني مي شود .
OnMouseMove : هنگامي كه اشارهگر ماوس روي فرم حركت مي كند ، اين رويداد فراخواني مي گردد .
OnMouseUp : زماني كه كاربر كليد فشرده شدة ماوس را رها مي كند اين رويداد فراخواني مي شود .
OnPaint : اگر در زمان بازيابي مجدد فرم ، اطلاعات آن پاك شده باشد ،اين رويداد فراخواني مي گردد .
OnResize : وقتي كاربر اندازه فرم را تغيير مي دهد اين رويداد فراخواني مي گردد . مي توان در روال پاسخگويي اين رويداد ، كدي قرار داد تا عناصر روي فرم تغيير اندازه يا تغيير محل بدهند .
OnShow : اين رويداد قبل از ظاهر شدن فرم فراخواني مي شود .
* مثال :
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption := 'My Program With Delphi ... ' ;
Form1.Width := 150 ;
Form1.Top := 250 ;
end;
**>> اين مثال رويداد OnCreate فرم را فراخواني كرده و زماني كه فرم ايجاد مي شود خواص مربوط به آن را تنظيم مي كند .
** توجه داشته باشيد كه انتهاي هر خط از برنامه بايد از ; استفاده كرد و روالهايي با بيش از يك خط كد را بايد درون يك بلوك Begin و ;End قرار داد .
* مثال :
procedure TForm1.FormResize(Sender: TObject);
begin
label1.Left := Label1.Left + 50 ;
Label1.Caption := 'Form Resizing Now ...' ;
end;
**>> اين مثال در موقع تغيير اندازه فرم فرم مقدار خاصيت Left عنصر Label1 را به مقدار 50 افزايش مي دهد . سپس خاصيت Caption آن را با مقدار مورد نظر تنظيم مي كند .
جلسه هفتم
در اين جلسه به بررسي برخي از متدهاي يك فرم و كاربرد آنها مي پردازيم :
متد :
متدها عملياتي هستند كه به صورت زير برنامه نوشته مي شوند و براي كنترل اشياء مورد استفاده قرار مي گيرند .
كاربرد متدها به صورت زير است :
نام متد . نام عنصر
**********
Create : با استفاده از اين متد مي توان ، در زمان اجرا عنصري را ايجاد كرد .
Show : اين متد عنصر پنهان شده را قابل رؤيت مي كند . به عنوان مثال Form1.Show عنصر Form1 را از حالت پنهان خارج مي كند .
Hide : با استفاده از اين عنصر مي توان عنصري را غيرقابل رؤيت نمود .
Focused : اين متد يك مقدار بولي(True,False) را بر ميگرداند كه مشخص مي كند محتويات درون عنصر انتخاب شده (فوكوس) است يا خير .
SetFocus : از اين متد براي انتخاب محتويات داخل يك عنصر استفاده مي شود . به عنوان مثال Edit1.SetFocus متن داخل عنصر Edit1 را انتخاب مي كند .
Destroy : با استفاده از اين متد مي توان يك عنصر را در حين اجراي برنامه از بين برد .
Clear : اين متد براي عناصري كه در مورد متن كار ميكنند به كار مي رود و باعث پاك شدن محتويات متن عنصر مي شود .
ScaleBy : با استفاده از اين متد مي توان ابعاد عناصر را تغيير داد :
Button1.ScaleBy(4,2) ;
==> اين دستور عنصر Button1 را دو برابر مي كند.(در اين متد عدد اول صورت كسر بزرگنمايي و عدد دوم مخرج كسر را مشخص مي كند)
Terminate : اين متد موجب خاتمه دادن به اجراي برنامه مي شود . دستور Application.Terminate اجراي برنامه جاري را خاتمه مي دهد .
Refresh : اين متد هر تصويري كه روي صفحه نمايش باشد آنها را پاك كرده و دوباره عناصر را رسم مي كند .
*در مورد بقيه متدها در جاي خود توضيح داده مي شود .*
در اين قسمت به بررسي خواص و رويدادهاي برخي عناصر پر كاربرد مي پردازيم :
ابتدا به عناصر موجود در صفحه Standard پرداخته مي شود :
عنصر TLabel (برچسب) :
اين عنصر براي نمايش متن روي فرم يا عناصر ديگر به كار مي رود . اين متن را كاربر نمي تواند تغيير دهد .
خواص ==>>
Align : اين خاصيت براي تراز بندي عنصر بر روي فرم و نحوه قرارگيري آن به كار مي رود .( alClient= موجب مي شود عنصر تمام سطح روي فرم را دربرگيرد -- alButtom = عنصر را به همان ارتفاع تنظيمي ولي در قسمت پايين فرم و با هم عرض فرم قرار مي دهد -- alLeft = عنصر را با عرض تنظيمي در قسمت چپ فرم هم ارتفاع فرم قرار مي دهد و ...)
Alignment : اين خاصيت براي تراز متن درون برچسب به كار مي رود .(taCenter = متن را در وسط قرار مي دهد -- taLeftJustfy = متن را در سمت چپ قرار مي دهد -- taRightJustfy = متن را در سمت راست برچسب قرار مي دهد )
جلسه هشتم
ادامه خواص شيء TLabel(برچسب) :
AutoSize : اين خاصيت در موقع تغيير كپشن برچسب عمل مي كند و موجب مي شود كه برچسب به اندازه مورد نياز براي متن تغيير اندازه دهد .
Caption : اين خاصيت مقدار متن نمايشي توسط برچسب را تنظيم مي كند .
Enabled : اين خاصيت براي فعال و غيرفعال كردن برچسب مي باشد .
Layout : از اين خاصيت براي ترازبندي عمودي متن موجود در خاصيت كپشن استفاده مي شود . [به عنوان مثال اگر بر روي tlCenter تنظيم شود متن در ميان قرار مي گيرد.]
ParentBiDiMode : اين خاصيت مشخص مي كند كه آيا برچسب خاصيت ترازبندي خود را از شيء پدر (فرم) به ارث ببرد يا خير .
ParentColor , ParentFont , ParentShowHint : اين خواص نيز مقدار رنگ و فونت و خاصيت ShowHint برچسب را با توجه به شيء پدر (فرم) تنظيم مي كند .
Transparnet : اگر مقدار اين خاصيت True باشد ، در مواقعي كه كارهاي گرافيكي انجام مي دهيم مي توان تصوير را در زير برچسب قرار دهيم .
WordWrap : اين خاصيت در موقع True بودن موجب مي شود كه در انتهاي هر خط برچسب به جاي اينكه متن به طور افقي گسترش يابد به خط بعدي انتقال يابد .
---------------------------
عنصر TEdit :
با استفاده از اين عنصر مي توان متن را از ورودي خواند يا در خروجي چاپ كرد .
خواص ==>>
AutoSelect : اين خاصيت موجب مي شود هرگاه مكاننما در عنصر TEdit قرار گيرد متن موجود در آن به طور خودكار انتخاب گردد .
BevelEdges , BevelInner , BevelKind , BevelOuter : اين خواص مربوط به تنظيمات شكل و قيافه عنصر TEdit مي باشد . با تغيير اين خواص در شكل لبه ها و تورفتگي هاي و ... عنصر تغييراتي اعمال مي شود .
BorderStyle : از اين خاصيت براي تنظيم نوع لبه هاي عنصر استفاده مي شود . [لبه دار باشد يا خير]
CharCase : با تنظيم اين خاصيت مي توان به كاربر اجازه ورود حروف كوچك [ecLowerCase] ، حروف بزرگ [ecUpperCase] و تركيبي از حروف بزرگ و كوچك [ecNormal] را بدهيد .
Ctl3D : اين خاصيت مشخص مي كند كه آيا عنصر به صورت سه بعدي نمايش داده شود يا خير .
MaxLength : اين خاصيت براي تعيين حداكثر طول متني كه كاربر مي تواند وارد نمايد به كار مي رود .
PasswordChar : از اين خاصيت براي رمزدار كردن نمايش كاراكترهاي ورودي استفاده مي شود . اگر مقدار آن غير از كاراكتر 0# باشد كاراكترهاي وارد شده توسط كاربر پنهان شده و همان كاراكتري را كه در اين خاصي قرار داده شده نمايش داده مي شود .
ReadOnly : اين خاصيت براي تعيين اينكه آيا متن موجود در عنصر قابل ويرايش باشد يا خير استفاده مي شود .
TabOrder : اين خاصيت تعيين مي كند كه با چندمين فشردن كليد tab مكان نما به اين عنصر انتقال يابد .
Text : مقدار اين خاصيت متن داخل عنصر TEdit را مشخص مي كند .
رويدادهاي شيء TEdit ==>>
OnChange : اين رويداد در موقع تغيير متن داخل عنصر فراخواني مي شود .[در موقعي كه كاربر سعي در تغيير متن باشد]
OnEnter : در موقعي كه فوكوس به عنصر TEdit منتقل و يا عنصر فعال مي شود اين رويداد فراخواني مي شود .
OnExit : اين رويداد در موقعي كه مكاننما از شيء به شيء ديگر و يا فوكوس از اين شيء به شيء ديگر انتقال داده شود فراخواني مي شود .
----------------------------
چند مثال از موارد بالا :
** استفاده از رويداد OnChange شيء TEdit :
procedure TForm1.Edit1Change(Sender: TObject);
begin
Label1.Caption := Edit1.Text ;
Form1.Caption := Edit1.Text ;
end;
== در اين مثال با تغيير متن داخل عنصر Edit1 خواص Caption فرم و عنصر Label1 با توجه به متن موجود در عنصر Edit1 تنظيم مي شود .
** استفاده از رويداد OnEnter و OnExit :
procedure TForm1.Edit1Enter(Sender: TObject);
begin
ShowMessage('You Enter To [' + Edit1.Name + ']') ;
end;
== اين دستور موجب مي شود وقتي مكان نما به عنصر منتقل مي شود پيغامي مبني بر اينكه شيء داراي فوكوس شده نمايش داده مي شود .
procedure TForm1.Edit1Exit(Sender: TObject);
begin
ShowMessage('You Exit From [' + Edit1.Name + ']') ;
end;
== با اين دستور در موقعي كه فوكوس از عنصر برداشته مي شود پيغامي ظاهر مي شود .
**** توضيح تابع ShowMessage :
ShowMessage (Const Msg : String) ;
-- اين تابع براي نمايش يك پنجره پيغام به كار مي رود . آرگومان Msg كه از نوع رشته اي تعريف شده متني است كه بايد در پنجره پيغام نمايش داده شود كه مي تواند يك رشته در داخل يك جفت '' باشد يا متغيرهايي كه از نوع String باشند .
جلسه نهم
عنصر TMemo :
با استفاده از اين عنصر مي توان ميتوان چند خطي را وارد و يا ويرايش كرد .
* براي عنصر TMemo محدوديتي براي تعداد خطوط نمي باشد و تعداد آن به ظرفيت ديسك سخت بستگي دارد .
خواص ==>
Lines : اين خاصيت كه بيشتر در موقع طراحي مورد استفاده قرار مي گيرد براي كنترل محتويات و يا وارد كردن متن استفاده كرد .
ScrollBars : اين خاصيت براي نمايش نوارهاي پيمايش عمودي و افقي در عنصر TMemo به كار مي رود .
WantReturns : با استفاده از اين خاصيت مي توان مشخص كرد كه كاربر براي جداكردن خطوط از كليد Enter بايد استفاده كند يا از كليدهاي Ctrl+Enter . [اگر مقدار آن True تنظيم شود براي جدا كردن خطوط از كليد Enter استفاده مي شود]
WantTabs : اين خاصيت مشخص مي كند كه كاربر با كليد Tab بين عناصر حركت كند يا با كليد Ctrl+Tab .[در صورت True بودن با كليد Tab بين عناصر حركت مي شود]
برخي از توابع و متدهاي كاربردي عنصر TMemo ==>
Clear : اين متد براي پاك كردن محتويات داخل عنصر به كار مي رود .
ClearSelection : از اين متد براي پاك كردن محتويات انتخاب شده عنصر استفاده مي شود .
ClearUndo : آخرين مقاديري را كه از عنصر پاك شده است را بازمي گرداند .
SelectAll : تمام متن موجود در عنصر را انتخاب مي كند .
Undo : آخرين تغييرات اعمال شده بر روي متن موجود در عنصر را بازيابي مي كند .
CanUndo : اين متد مشخص مي كند كه آيا خاصيت Undo (برگردان) فعال باشد يا خير . [از خاصيت نيز مي توان براي فهميدن فعال و يا غيرفعال بودن خاصيت Undo نيز استفاده كرد]
Modified : اين تابع مشخص مي كند كه آيا محتويات عنصر تغيير يافته است و يا خير . [از اين تابع مي توان در موقع ذخيره كردن محتويات عنصر براي فهميدن اينكه آيا محتويات تغيير يافته است يا خير استفاده كرد]
Text : تمام متن داخل عنصر را مشخص مي كند .
SelLength : با استفاده از اين متد مي توان تعداد كاراكترهاي انتخاب شده عنصر را بدست آورد .
SelStart : اين خاصيت شماره انديس اولين كاراكتر انتخاب شده از كاراكترهاي انتخابي را به ما مي دهد .
SelText : اين تابع متن انتخاب شده درون عنصر را براي ما بر مي گرداند .
GetTextLen : با استفاده از اين تابع مي توان تعداد كل كاراكترهاي موجود در عنصر را تعيين كرد .
Hide : از اين تابع براي مخفي ساختن عنصر استفاده مي شود .
Show : براي ظاهر ساختن عنصر از اين تابع استفاده مي شود .
-- چند متد براي كپي كردن و چسبانيدن محتويات عنصر TMemo با استفاده از حافظه ClipBoard :
CopyToClipBoard : اين متد متن انتخاب شده درون عنصر را داخل حافظه ClipBoard كپي مي كند .
CutToClipBoard : اين متد متن انتخاب شده درون عنصر را داخل حافظه ClipBoard منتقل مي كند .
PastFromClipBoard : با استفاده از اين متد مي توان اطلاعات موجود در ClipBoard را در جايي كه در آن مكان نما قرار دارد ، كپي كرد .
-- چند متد براي ذخيره و بازيابي اطلاعات عنصر TMemo درون فايل :
LoadFromFile : با استفاده از اين متد مي توان متني را درون عنصر قرار داد . [توجه داشته باشيد از اين متد براي عناصري كه ليستي از رشته ها را دارا هستند ، نيز به كار مي رود]
SaveToFile : از اين متد براي ذخيره كردن محتويات عنصر درون يك فايل متني استفاده مي شود .
== كاربرد اين دو متد براي عنصر TMemo به صورت زير مي باشد :
TMemoنام عنصر.Lines.LoadFromFile('نام و مسير فايل مورد نظر ') ;
TMemoنام عنصر.Lines.SaveToFile('نام و مسير فايل مورد نظر ') ;
جلسه دهم
عنصر TButton :
اين عنصر يك كليد فرمان بر روي فرم ايجاد مي كند كه با كليك كردن بر روي آن كد مربوط به رويداد OnClick آن اجرا مي شود .
برخي خواص ==>
Cancel : اين خاصيت تعيين مي كند ، در صورتي كه كاربر كليد ESC را فشار دهد آيا رويدادي رخ دهد يا خير . در صورتي كه مقدار آن True تنظيم شود با فشار دادن كليد ESC رويداد OnClick مربوط به عنصر اجرا مي شود .
Caption : متن داخل عنصر را مشخص مي كند .
Default : از اين خاصيت براي مشخص كردن يك دكمه پيش فرض استفاده مي شود . در صورتي كه مقدار آن بر روي True تنظيم شود در صورتي كه كاربر كليد Enter را فشار دهد كد مربوط به رويداد OnClick عنصر مربوطه اجرا مي شود .
ModalResult : اين خاصيت براي مواقعي به كار مي رود كه بخواهيم با ايجاد يك جعبه پيغام از كاربر براي انجام كاري خاص تأييد بگيريم . اين خاصيت مشخص مي كند كه موقعي كه كاربر اين دكمه را كليك كرد چه مقدار را برگرداند . [به عنوان مثال اگر مقدار اين خاصيت بر روي mrOK تنظيم شود ، وقتي كاربر اين دكمه را كليك كرد مقدار بازگشتي آن مشخص مي كند كه كاربر موافق با انجام عمليات مورد نظر است]
** مثالي براي استفاده از عنصر TButton و خاصيت ModalResult **
در اين مثال طرز ايجاد يك جعبه پيغام را آموزش مي دهيم .
ابتدا يك پروژه جديد ايجاد كنيد و يك عنصر TLabel بر روي فرم قرار دهيد .
=> در رويداد OnCreate فرم كدهاي زير وارد نمائيد :
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption := 'This is my program' ;
Form1.Width := 300 ;
Form1.Height := 200 ;
Form1.BorderIcons := [biMinimize,biSystemMenu] ;
Form1.Position := poDesktopCenter ;
Label1.Left := Form1.Width - 240 ;
Label1.Top := Form1.Height - 125 ;
Label1.Caption := 'For Exit Press Close SystemMenu Button.' ;
end;
توضيحات==>
اين كدها تنظيمات اوليه را انجام مي دهد . 5 خط اول تنظيماتي براي فرم مي باشد كه مقادير خاصيتهايCaption , Width Height و نمايش دكمه هاي سيستمي و مكان فرم را در صفحه نمايش تنظيم مي كند . سه خط بعد تنظيماتي در مورد عنصر TLabel انجام مي دهد .[هدف اصلي اين كدها در واقع يادگيري تنظيم خاصيتها با استفاده از كد برنامه مي باشد و چگونگي مقدار گيري هر خاصيت در كد برنامه .]
=> كدهاي زير را در رويداد OnCloseQuery فرم وارد كنيد :
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Form2.ShowModal = mrYes then
Application.Terminate
else
CanClose := False ;
end;
توضيحات==>
اين دستورات Form2 را با استفاده از متد ShowModal به صورت مقيد نشان مي دهد و چك مي كند كه مقدار ModalResult بازگشتي فرم كه توسط دكمههاي موجود بر روي فرم مقدار گرفته برابر mrYes (يعني دكمه Yes كليك شده است) است يا خير . در صورت برابري به اجراي برنامه خاتمه مي دهد .
نكات :
1- استفاده از دستور Application.Terminate به اجراي برنامه خاتمه مي دهد .
2- رويداد OnCloseQuery داراي پارامتر CanClose مي باشد كه از نوع بوليين مي باشد . اين پارامتر يك مقدار بازگشتي به برنامه است كه مشخص مي كند آيا برنامه بسته شود (True) يا خير (False) . در صورتي كه در كد مربوط به رويداد ، مقدار اين پارامتر برابر با False قرار گيرد از بستن فرم جلوگيري مي شود .
=> ايجاد Form2 :
*براي ايجاد فرم از منوي File گزينه New سپس گزينه Form را انتخاب كنيد تا فرم جديدي ايجاد شود .
خواص فرم را به صورت زير تنظيم كنيد :
Caption = 'Message'
BorderIcons = []
BorderStyle = bsDialog
Height = 118 ;
Position = poMainFormCenter
Width = 270
يك برچسب در وسط فرم قرار دهيد و خاصيت Caption آن را با مقدار '? Are you sure to want exit program' تنظيم كنيد .
يك دكمه بر روي فرم قرار دهيد و خواص آن را به صورت زير تنظيم كنيد :
Caption = 'Yes'
Height = 25
ModalResult = mrOk
Left = 40
Top = 56
Width = 65
دكمه ديگري ايجاد كنيد و خواص آن را به صورت زير تنظيم كنيد :
Caption = 'No'
Height = 25
ModalResult = mrNo
Left = 152
Top = 56
Width = 65
=> توجه :
براي اينكه بتوان Form2 را از درون Form1 فراخواني كرد بايد Form2 را به Form1 پيوند دهيم براي اين كار Form1 را فعال كرده سپس از منوي File گزينه ...Use Unit را انتخاب كرده و از ليست مربوطه Unit2 را انتخاب كنيد تا Form2 به Form1 پيوند داده شود . حال برنامه را اجرا كرده و سپس دكمه Close فرم را كليك كنيد .
جلسه يازدهم
دستورات در دلفي :
- در جلسه قبل يك نمونه دستور شرطي را توضيح داديم ، در اين جلسه به دستورات در دلفي مي پردازيم .
به طور كلي در دلفي سه نوع دستور وجود دارد :
شرطي
تكرار
كنترل
1- دستورات شرطي :
اين دستورات با توجه به برقرار بودن و يا عدم برقراري يك شرط منطقي كاري را انجام مي دهد . اين دستورات شامل :
* if then ... else كه در جلسه قبل به طور كامل بحث شد .
* دستور case of كه فرم كلي آن به صورت زير مي باشد :
case عبارت of
دستور 1 : مقادير1 ;
دستور 2 : مقادير2 ;
.
.
.
n دستور : n مقادير ;
else
دستور
end ;
* اين دستور عبارت مورد نظر را چك مي كند با كداميك از مقادير 1 تا n برابري دارد و با توجه به آن دستور مورد نظر را انجام مي دهد در غير اينصورت دستور قسمت else را انجام مي دهد .
* اين دستور در مواقعي كه بخواهيم با توجه به مقدار يك عبارت تنها يك عمل انجام شود به كار مي رود و بهترين جايگزين براي if هاي تودرتو مي باشد .
** نكات :
1- دستور case مي تواند بودن قسمت else نيز باشد كه در اينصورت شكل كلي به صورت زير مي باشد :
case عبارت of
دستور 1 : مقادير1 ;
دستور 2 : مقادير2 ;
.
.
.
n دستور : n مقادير ;
end ;
2- عبارت ارزيابي شونده بايد از نوع مقادير ترتيبي باشند به عبارت ديگر نمي توان از مقادير اعشاري ، رشته ها و امثالي نظير اينها استفاده كرد . مقادير ترتيبي مورد استفاده مي تواند از نوع صحيح و يا از نوع بولين باشد .
3- در صورتي كه بخواهيم بيش از يك دستور در هر يك از مقادير 1 تا n اجرا شوند بايد از بلوك begin و ;end استفاده شود .
============================
2- دستورات تكرار :
هرگاه بخواهيم عمل و يا عملياتي به تكرار در برنامه اجرا شوند از اين دستورات استفاده مي كنيم .
* for do : اين دستور به دو صورت به كار مي رود -» افزايشي ، كاهشي .
افزايشي : فرم كلي آن به صورت زير مي باشد :
for مقدار اوليه =: شمارنده to مقدار نهايي do
دستور ;
== اين دستور با توجه به مقدار اوليه شمارنده و مقدار نهايي شمارنده دستورات را انجام مي دهد . در هر بار اجراي حلقه يك واحد به شمارنده اضافه مي شود و سپس براي اجراي بعدي چك مي شود كه آيا از مقدار نهايي كوچكتر مساوي هست يا خير . در صورتي كه مقدار شمارنده از مقدار نهايي بيشتر شود اجراي حلقه خاتمه پيدا مي كند .
*** نكات :
1- نوع شمارنده بايد از نوع صحيح باشد .
2- مقدار اوليه باسد از مقدار نهايي كوچكتر يا مساوي باشد در غير اينصورت حلقه تكرار نمي شود .
3- بايد توجه داشت كه مقدار شمارنده نبايد در بدنه حلقه تغيير يابد .
4- در صورتي كه مقادير اوليه و نهايي با يك متغير مشخص مي شود مي توان آنها را در بدنه حلقه تغيير داد براي اينكه فقط مقاديرفقط يكبار ارزيابي مي شوند .
5- پس از خروج از حلقه مقدار شمارنده همان مقدار نهايي مي باشد .
6- در صورتي كه بخواهيم بيش از يك دستور اجرا شود از بلوك ;begin ... end استفاده مي كنيم .
كاهشي : فرم كلي آن به صورت زير مي باشد :
for مقدار اوليه =: شمارنده downto مقدار نهايي do
دستور ;
== اين دستور در هر بار اجرا يك واحد از شمارنده كم مي كند و سپس ارزيابي مي كند كه آيا از مقدار نهايي بزرگتر يا مساوي هست يا خير .
نكته :
مقدار اوليه شمارنده بايد از مقدار نهايي بزرگتر يا مساوي باشد در غير اينصورت حلقه تكرار نمي شود .
For تودرتو : در اين دستور از دو يا چند حلقه for به صورت تودرتو استفاده مي شود :
مثال :
for i := 1 to 10 do
begin
for j := 1 to 10 do
begin
.
.
end ;
.
.
end ;
*در اين مثال از دو حلقه به صورت تودرتو استفاده شده است كه نحوه اجراي آن به اين صورت مي باشد كه در هر بار اجراي حلقه بيروني حلقه داخلي يكبار به طور كامل اجرا مي شود .
*شمارنده حلقه ها نبايد همنام باشند .
*توجه داشته باشيد كه اگر تعداد حلقه ها بيش از 2 باشد حلقه بيروني تا اجراي كامل اولين حلقه داخلي منتظر مي ماند .
مثال :
فرض كنيد حلقه هاي ما به صورت زير باشند :
1. for i := 1 to 3 do
2. for j := 1 to 3 do
3. for m := 1 to 3 do
دستور ;
== براي اينكه حلقه شماره 1 يكبار اجرا شود بايد حلقه شماره 2 يكبار به طور كامل اجرا شود و اين در صورتي است كه در هر بار اجراي حلقه 2 حلقه 3 يكبار به طور كامل اجرا شود . در اينصورت اجراي دستور به تعداد 3×3×3 مي باشد .
حلقه تكرار while : فرم كلي آن به صورت زير مي باشد :
while شرط do
begin
.
.
end ;
== در اين دستور ابتدا شرط بررسي مي شود و در صورت صحّت شرط بدنه حلقه اجرا مي شود .
نكات :
* اجراي حلقه while تا موقعي انجام مي شود كه شرط حلقه برقرار باشد .
* بايد توجه داشت كه در داخل بدنه حلقه شرط نقض شود در غير اينصورت حلقه بينهايت اجرا مي شود .
* از اين دستور در مواقعي استفاده مي كنيم كه تعداد دفعات تكرار دستورات براي ما مشخص نباشد و يا بخواهيم دستورات با توجه به شرطي خاص انجام شوند .
حلقه تكرار repeat : فرم كلي آن به صورت زير مي باشد :
repeat
دستورات
until شرط ;
== هنگامي كه كنترل اجراي برنامه به repeat مي رسد دستورات يكبار به طور كامل اجرا مي شوند و با رسيدن به until شرط تست مي شود و در صورت نادرستي شرط اجراي دستورات تكرار مي شود .
نكات :
* در اين دستور ابتدا دستورات يكبار به طور كامل اجرا مي شوند و سپس شرط حلقه بررسي مي شود .
* تكرار حلقه در صورتي است كه شرط بعد از until ارزش نادرستي داشته باشد .
* در اين حلقه براي دستورات بيش از يكي نياز به بلوك ; begin ... end نمي باشد .
3- دستورات كنترلي :
اين دستورات براي مواقعي كه بخواهيم كنترل اجراي برنامه را به جايي ديگر از برنامه و يا اجراي برنامه را متوقف كنيم مورد استفاده قرار مي گيرد .
Break : كاربرد اين دستور در حلقه هاست در صورتي كه بخواهيم به ادامه اجراي دستورات حلقه خاتمه دهيم .
Continue : اين دستور در حلقه ها موجب مي شود كه كنترل اجراي برنامه در هر جاي حلقه به انتهاي حلقه منتقل شود ، به عبارت ديگر از اجراي دستورات بعدي حلقه صرف نظر كرده و كنترل برنامه به تكرار بعد منتقل مي شود .
exit : اين دستور در توابع و يا رويدادها موجب مي شود كه كنترل برنامه از تابع خارج شود . (موجب خروج از توابع و يا رويدادها مي شود)
جلسه دوازدهم
عنصر TRadioButton :
- در موقعي كه بخواهيم با توجه به انتخاب كاربر عملي و يا عملياتي انجام شود از مجموعه اي از اين عنصر استفاده مي كنيم كه در اين صورت كاربر مجاز به انتخاب يكي از اين مجموعه مي باشد . مورد استفاده از اين عنصر همراه با استفاده از دستور شرطي if مي باشد - مهمترين خاصيت آن Checked مي باشد كه مشخص كننده انتخاب عنصر مي باشد .
مثال :
سه عنصر RadioButton را بر روي فرم قرار دهيد و خواص زير را تنظيم كنيد :
RadioButton1.Caption := 'Select First'
RadioButton2.Caption := 'Select Second'
RadioButton3.Caption := 'Select Third'
يك عنصر TButton را بر وري فرم قرار دهيد و در رويداد OnClick آن كدهاي زير را وارد نمائيد :
procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked then
ShowMessage(RadioButton1.Caption)
else if RadioButton2.Checked then
ShowMessage(RadioButton2.Caption)
else if RadioButton3.Checked then
ShowMessage(RadioButton3.Caption) ;
end;
** البته مي توانيد به جاي استفاده از if تودرتو از if ساده نيز استفاده كنيد .
------------------------
عنصر TListBox :
- اين عنصر محلي را ايجاد مي كند كه در آن مي توان ليستي از اسامي فايلها يا اسامي اشخاص و ديگر موارد را در آن قرار داد . عناصر موجود در آن را مي توان انتخاب كرد و كارهايي را با توجه به آنها انجام داد . توجه داشته باشيد عناصر موجود در ListBox از نوع رشته مي باشند .
خواص ==>
Columns : اين خاصيت مشخص مي كند كه عناصر موجود در ليست در چند ستون نمايش داده شوند . مقدار پيش فرض 0 مي باشد كه تنها يك ليست يك ستون دارد .
MultiSelect : در صورتي كه بخواهيم از ليست بيش از يك گزينه را انتخاب كنيم مقدار اين خاصيت بايد True تنظيم شود .
ExtendedSelect : هنگامي كه مقدار اين خاصي و خاصيت MultiSelect برابر tRUE باشد مي توان با استفاده از كليد Shift يگ گروه مجاور را باهم انتخاب كرد و همچنين با استفاده از كليد Ctrl چند گزينه غير مجاور هم را انتخاب كرد .
Items : با انتخاب اين خاصيت پنجره اي نمايش داده مي شود كه مي توان گزينه هاي موجد در ليست را كه مي خواهيم نمايش داده شوند را تايپ كرد . توجه داشته باشيد كه در اين پنجره هر خط به منزله يك گزينه مي باشد .
Sorted : با استفاده از اين خاصيت مي توان مشخص كرد كه آيا گزينه ها به صورت مرتب نمايش داده شوند يا خير .
Style : اين خاصيت براي تعيين نوع ListBox استفاده مي شود :
lbStandard : عنصر ListBox به صورت استاندارد نمايش يابد .
lbOwnerDrawVariable و lbOwnerDrawFixed : اين امكان را مي دهند كه بتوان در گزينه ها متن و گرافيك را باهم داشت .
*** اضافه كردن گزينه در ListBox در موقع اجرا با استفاده از كد برنامه :
در اين مورد از خاصيت Items و استفاده از متد Add آن به صورت زير استفاده مي كنيم :
ListBox1.Items.Add(رشته مورد نظر) ;
** پاك كردن گزينه نيز با استفاده از متد Delete از خاصيت Items استفاده مي شود :
ListBox1.Items.Delete(شماره انديس آيتم مورد نظر) ;
== مثال -»
يك عنصر TListBox و دو گزينه TButton و يك گزينه TEdit بر روي فرم قرار دهيد و خواص زير را تنظيم كنيد :
Edit1.Text := '' ;
Button1.Caption := 'Add' ;
Button2.Caption := 'Delete' ;
- در رويداد OnClick عنصر button1 كدهاي زير را وارد نمائيد :
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Add(Edit1.Text)
end;
- در رويداد OnClick عنصر button2 كدهاي زير را وارد نمائيد :
procedure TForm1.Button2Click(Sender: TObject);
var
i : Integer ;
begin
i := StrToInt(InputBox('Delete Item' , 'Enter your index that you want to delete it :','0')) ;
ListBox1.Items.Delete(i);
end;
== توضيحات :
تابع InputBox : اين تابع پنجره را نمايش مي دهد كه مي توان در آن از كاربر اطلاعاتي را دريافت كرد كه شكل كلي آن به صورت زير مي باشد :
متغير رشته اي := InputBox(Const ACaption : String ; Const APrompt : String ; Const ADefault : String) : String ;
= اين تابع سه آرگومان را از نوع رشته دريافت مي كند و مقدار بازگشتي آن نيز از نوع رشته اي است .
ACaption : اين آرگومان متن عنوان (Title) پنجره را مشخص مي كند .
APrompt : اين آرگومان متن پيغام را در پنجره تنظيم مي كند .
ADefault : مقدار پيش فرض مقدار قرار گيري در پنجره را مشخص مي كند .
استفاده از دستور StrToInt براي اين است كه مقدار بازگشتي از تابع InputBox را كه از نوع رشته مي باشد را به نوع Integer تبديل نمايد .
جل
جلسه اول
دلفي چيست ؟
دلفي منبع عظيمي از توانائي و ابزارهاي برنامه نويسي تحت ويندوز است. همه نقطه ضعفهاي موجود در زبانهاي برنامه نويسي تحت ويندوز، در دلفي پوشانده شده است. دلفي مجموعه قدرتمندي از تسهيلات طراحي و ايجاد برنامه بهمراه سرعت بالا ارائه مي دهد.ا
وقتي از ديد خاصي به زبانهاي برنامه نويسي مي نگريم، ملاحظه مي كنيم دو نوع از اين زبانها وجود دارد.ا
يك نوع ابزارهاي خاص را براي توسعه سريع سيستمها فراهم كرده اند و نوع ديگر به شما اجازه مي دهد به هر چيزي روي ماشين دسترسي داشته باشيد.ا
Paradox, Visual Basic, PowerBuilder, Visual Foxpro, Smalltalk نمونه اي از نوع اول هستند.
C++, Turbo Pascal, Delphi مثالهائي از نوع دوم هستند.
نكته قابل توجه اينكه دلفي علاوه بر اينكه در دسته دوم قرار دارد از مزاياي دسته اول نيز برخوردار است. يعني دلفي شامل تمام ابزارهاي لازم براي توسعه سريع سيستمهاي كاربردي است.
راستش من علاوه بر دلفي به سي هم علاقه دارم كه هركدام مزايايي براي خود دارند.
كاربرد دلفي خيلي ساده است.
با دلفي مي توانيد به سرعت برنامه كاربردي ايجاد كنيد.
با بكارگيري عبارات و دستورات دلفي به سادگي خواندن و نوشتن متون انگليسي است.
اما مزاياي سي
فوق العاده انعطاف پذير است.
تقريبا كنترل خوبي بر تمام جنبه هاي محيط برنامه نويسي دارد.
پتانسيل خوبي براي كار روي زير ساختهاي گوناگون دارد.
هسته اصلي روشهاي برنامه نويسي شي گرا در دلفي نهفته است. من معتقدم كه مفهوم شي گرا، در دلفي كاملتر از سي است.
زبان دلفي آنقدر ساده است كه مي توان اصول آنرا در عرض چند ساعت فرا گرفت، چند هفته براي ياد گرفتن كليات اين زبان كافي است و زمان سه ماه براي فراگرفتن اكثر مهارتهاجهت ايجاد برنامه هاي كاربردي كافي است. متخصص و متبحر شدن در دلفي مثل زبانهاي ديگر به زمان و تجربه زيادي نياز دارد و شايد صرف دو سال وقت نياز باشد.
رقابت بيشتر دلفي با نرم افزارهاي توليدي شركت مايكروسافت كه تحت عنوان Visual Studio به بازار عرضه ميشود ، مي باشد و اين به خاطر آن است كه اين نرم افزارها اصولا با ويندوز شركت مايكرو سافت ارتباط و هماهنگي زيادي دارند. اما دلفي نشان داده است كه نه تنها ارتباط آن با ويندوز مشكل نيست ، بلكه خيلي راحت تر ميتوان با ويندوز ارتباط برقرار كرد و برنامه هاي خود را با سازگاري بيشتري با ويندوز ، بنويسيم.
برنامه نويسي با دلفي :
برنامه نويسي با دلفي همانند برنامه نويسي با ساير نرم افزارها مي باشد با اين تفاوت كه نوع توابع و عناصر و نحوه ي كاربرد آنها در دلفي متفاوت است. يك برنامه ي دلفي تشكيل شده است از :
قطعات ويژوال : دلفي كتابخانه اي از قطعات ويژوال دارد. برنامه نويس مي تواند قطعاتي را ايجاد كند و به اين كتابخانه بيافزايد كه اين يكي از امكانات بالقوه ي دلفي ميباشد. برنامه هاي دلفي مجموعه اي از اين قطعات مي باشند.
فرم ها : فرم (Form) اساس تمام برنامه هاي دلفي مي باشد.فرم همانند پنجره در محيط ويندوز است. تمام قطعات برنامه در فرم قرار مي گيرد و در واقع صفحه ي طراحي برنامه است.
انواع داده ها : از جنبه هاي مهم هر زبان برنامه نويسي كه بايد مورد بررسي قرار بگيرد ، انواع داده ها در آن مي باشد كه مطابق با دا ده ها و اطلاعات مورد نياز ما باشد. ( در ادامه به طور مفصل توضيح خواهيم داد)
تابع ها و دستورالعملها : هر زبان برنامه نويسي تابعها و دستورالعملهاي مخصوص به خود را دارد ولي اصول كار بيشتر آنها و هدف استفاده از آنها در واقع يكي است.
يك نكته ي كليدي : « بهترين برنامه نويس كسي است كه پايه ي خود را در طراحي الگوريتم قوي سازد. »
جلسه دوم
انواع داده ها در دلفي :
انواع صحيح : اعدادي بدون نقطه و اعشار را شامل ميشوند.
انواع حقيقي: ميتواند اعداد با نقطه و اعشار را شامل باشد.
انواع بولي : انواع بولي بسيار ساده ولي پركاربرد است. اينها مقادير درست(true) و نادرست (false) را بيان ميكنند.
انواع كاراكتري براي ذخيره كاراكترهايي مثل 'A' و 'B' و '*' و 'x' و غيره به كار ميروند.
نوع رشته اي: براي ذخيره ي رشته ها مثل اسامي و... به كار مي روند. رشته ها مي توانند تا 255 كاراكتر را در خود ذخيره كنند ولي چنانچه در ابتداي برنامه از راهنماي { +H $ } استفاده شود ، طول رشته مي تواند بسيار زياد تا حدود 3 گيگا بايت باشد.
جلسه سوم
متغيرها:
متغيرها نامهايي براي كلمات حافظه اند و محتويات آنها ممكن است در طول اجراي برنامه تغيير كند. براي نامگذاري متغيرها ، تركيبي از حروف A تا Z , ارقام و خط ربط (-) استفاده مي شود.
* نكته : دقت داشته باشيد در نامگذاري متغيرها ، تفاوتي بين حروف كوچك و بزرگ نيست.
تعريف متغيرها :
منظور از تعريف متغيرها ، انتخاب نام و تعيين نوع آنهاست. در تعريف متغيرها از كلمه ي كليدي Var استفاده مي شود.
Var
;نوع آن : نام متغير
مثال :
Var x: integer ch : char; f : real; st: string;j
ما در اين مثال چهار متغير را هم زمان تعريف كرده ايم.
در مثال بالا ، متغير x از نوع صحيح ، ch از نوع كاراكتر ، f از نوع حقيقي و st از نوع رشته اي تعريف شده است.
مقدار دادن به متغيرها :
به دو صورت مي توان به متغيرها مقدار داد :
u استفاده از دستور انتساب كه با =: انجام مي شود.
v با استفاده از دستورات ورودي.
مثال : براي متغيرهايي كه در مثال بالا تعريف كرديم :
x:15 ; ch:='a'; f:= 15.51; st:= ' Ali';
ثوابت :
ثوابت مقاديري هستند كه در برنامه وجود دارند و در طول برنامه تغيير نمي كنند . براي تعريف ثوابت از كلمه كليدي Const استفاده مي شود :
Const
مقدار = نام ثابت ;
عملگرها :
عملگر (Operator) نمادي است كه عمل خاصي را انجام مي دهد .
1 ) محاسباتي : (+ , - , * , / , div , mod) .
2 ) منطقي : (not , and , or , xor) .
*** عملگر not ارزش عملوندش را نقيض مي كند . حاصل كار and وقتي ارزش درستي دارد كه هر دو عملوند ارزش درستي داشته باشند. حاصل كار or وقتي نادرست است كه هر دو عملوند ارزش نادرست داشته باشند و در بقيه حالات ارزش درستي دارد وحاصل xor وقتي ارزش نادرستي دارد كه هردو عملوند يا ارزش درستي داشته باشند و يا ارزش نادرستي .
3) بيتي : [(not=نقيض) ، (and=و) ، (or=يا) ، (xor=ياي انحصاري) ، (shl=شيفت به چپ) ، (shr=شيفت به راست) ]
اين عملگرها بيت به بيت بر روي عملوندهايشان عمل مي كنند . بيت صفر داراي ارزش نادرستي و بيت يك داراي ارزش درستي است .
4 ) رابطه اي : (< , => , > , =< , = , <> , (in=عضويت : در مجموعه ها تشريح مي شود)).
توابع TypeCasting (تبديل نوع) است. TypeCasting يعني تبديل يك نوع داده به نوع ديگر.
شما هر نوع داده اي را ميتوانيد به نوع دلخواه تبديل كنيد به شرطي كه نوع داده مبدا با داده مقصد سازگاري داشته باشد.
در اينجا تعدادي از توابع TypeCasting مهم شرح داده ميشوند.
String TypeCasting :
: شرح
يك رشته را دريافت ميكند و به يك مقدار عددي صحيح تبديل ميكند StrToInt()
يك مقدار رشته اي را به مقدار منطقي تبديل ميكند StrToBool()
تبديل مي كند BCD يك مقدار رشته اي را به كد پيچ StrToBCD()
تبديل مي كند Currency يك مقدار رشته اي را به StrToCurr()
يك مقدار رشته اي را به تاريخ تبديل ميكند StrToDate()
يك مقدار رشته اي را به مقدار عددي اعشاري تبديل ميكند StrToFloat()
يك مقدار رشته اي را به مقدار عددي صحيح بلند تبديل ميكند StrToInt()
يك مقدار رشته اي را به زمان تبديل ميكند StrToTime()
Float TypeCasting :
شرح:
تبديل مي كند Currency يك مقدار عدد اعشاري را به FloatToCurr()
يك مقدار عددي صحيح را به رشته تبديل ميكند FloatToStr()
Integer TypeCasting :
شرح :
يك مقدار عددي صحيح را دريافت ميكند و به يك رشته تبديل ميكند IntToStr()
يك مقدار يك عددي صحيح را به مقدار مبناي 16 تبديل ميكند IntToHex()
Other TypeCastings :
يك مقدار تاريخ را به رشته تبديل ميكند DateToStr()
يك مقدار زمان را به رشته تبديل ميكند TimeToStr()
جلسه چهارم
كامپوننت (كنترل) چيست ؟
كد نويسي هنر يك برنامه نويس است. ولي گاهي اوقات انجام يك پروژه بزرگ نياز به كدنويسي زياد و غالبا تكراري دارد كه اينجا ديگه هنر برنامه نويس اين است كه بتواند از كدهاي از پيش نوشته خود كمال استفاده را ببرد.
برنامه نويسان بزرگ براي اين كه كار ديگر برنامه نويسان را از بابت كدنويسي هاي زياد و تكراري راحت كنند ،اقدام به جمع آوري تمام كدهاي مربوطه براي انجام يك كار ، مي كنند كه در اصطلاح برنامه نويسي به اين مجموعه ها كامپوننت گفته ميشود.
طريقه نصب كامپوننت :
در دلفي امكان نصب چهار نوع كامپوننت مي باشد ، كه به قرار زير هستند :
1- نصب و كامپايل فايلهائي كه از نوع pas. هستند. براي نصب اين نوع كامپوننت بايد اين مسير رو دنبال كنيد:
Component-> Install Component
2 - نصب فايل ocx. (تمامي اين فايلها خاصيت نصب رو دارند) و برخي از فايلهاي dll. كه به روشي خاص كامپايل شده اند. براي نصب اين نوع كامپوننت اين مسير رو دنبال كنيد:
Component-> Import AxtiveX Control
3 - نصب فايل bpl. ، كه براي نصب اين نوع كامپوننت بايد اين مسير رو دنبال كنيد:
Componet-> Install Packages
4- اجراي فايل باپسوند DPK.
هر يك از كنترل ها داراي ويژگي هايي است كه مشتمل بر [خواص ، متدها و رويدادها] مي باشد .
- خواص مربوط به تنظيمات ظاهري و اجرايي هر كنترل مي باشد .
- متدها دستوراتي است كه بوسيله آن عملياتي بر روي كنترل ها و برنامه اجرايي اعمال مي شود .
- رويدادها دستوراتي است كه در نتيجه تغييرات بر روي كنترل فراخواني و انجام مي شود .
** قبل از هر چيز به خواص و متدها و رويدادهاي يك فرم مي پردازيم :
ActiveControl = اين خاصيت تعيين مي كند كه با فعال شدن فرم كدام كنترل بر روي فرم داراي فوكوس باشد .
Align = موقعيت و اندازه فرم را در هنگام نمايش دادن فرم نشان مي دهد .[اگر اين خاصيت بر روي alTop تنظيم شود در هنگام اجرا فرم در قسمت بالاي صفحه نمايش و عرض آن تمام عرض صفحه را مي پوشاند .]
AutoScroll = اين خاصيت ميله هاي مرورگر بر روي فرم را كنترل مي كند .[در صورتي كه اين خاصيت بر روي True تنظيم شود در صورتي كه اندازه فرم براي نمايش همه كنترل ها كوچك باشد ميله هاي مرورگر بطور اتوماتيك نمايش داده مي شوند .]
AutoSize = اين خاصيت بيشتر در موقع طراحي برنامه عمل مي كند به صورتي كه طول و عرض فرم را به وسيله كنترل هاي موجود بر روي فرم تنظيم مي كند .
BiDiMode = اين خاصيت براي ترازبندي كنترل ها و متن و خاصيت كپشن فرم به كار مي رود .[در صورتي كه بر روي bdLeftToRight تنظيم شود ترازبندي از طرف چپ به راست فرم انجام مي شود .]
BorderIcon = اين خاصيت تعيين مي كند كه در زمان اجرا كدام دكمه هاي سيستم روي فرم ظاهر شوند .[اين گزينه ها شامل منوي سيستم ، دكمه به حداقل رساندن ، دكمه به حداكثر رساندن و دكمه راهنما مي باشد .]
BorderStyle = اين خاصيت نوع لبه فرم را نشان مي دهد . مقدار پيش فرض bsSizeable است كه پنجره با قابليت تغيير اندازه مي باشد و مقادير bsDialog و bsNone مربوط به پنجره هايي است كه نمي توان اندازه آنها را تغيير داد .
BorderWidth = پهناي لبه هاي فرم را بر حسب پيكسل مشخص مي كند .
Caption = متن عنوان فرم را مشخص مي كند . اين خاصيت در موقع تغيير آن عمل مي كند و عنوان فرم را با متن جديد نشان مي دهد .
ClientWidth و ClientHeight = با استفاده از اين دو خاصيت مي توان طول و عرض ناحيه كاري را مشخص نمود(منظور از ناحيه كاري فرم ، ناحيهاي داخل كادر است كه زير نوار منو قرار دارد) تنظيم اين دو خاصيت منجر به تغيير اتوماتيك خواص Width و Height مي گردد .
Color = رنگ سطح روي فرم را مشخص مي كند . مقدار پيش فرض clBtnFace مي باشد كه رنگ سطح فرم را مطابق با رنگ تنظيمي پنجره هاي ويندوز مشخص مي كند .
Constraints = اين خاصيت براي تعيين حداكثر و حداقل طول و عرض فرم به كار مي رود . با مقدار دادن به هر يك از خواص زير مجموعه اين خاصيت [MaxHeight , MinHeight , MaxWidth , MinWidth] اندازه فرم به اين مقادير محدود مي شود .
Cursor = شكل اشاره گر ماوس را هنگامي كه ماوس بر روي فرم حركت مي كند مشخص مي كند .
DefaultMonitor = اين خاصيت در يك محيط با چند مانيتور مثل ويندوز 98 تعيين مي كند كه فرم روي كدام مانيتور نمايش داده شود .
DockSite = اين خاصيت مشخص مي كند كه فرم به صورت يك ظرف براي كنترل هاي جمع شدني عمل كند .
Enabled = اين فرم مشخص مي كند كه فرم در هنگام اجرا فعال باشد يا خير .
Font = اين خاصيت، فونت استفاده شده در فرم را تعيين مي كند . مورد مهمي كه بايد به آن توجه كرد اين است كه كنترل- هاي روي فرم ، فونت آن را به ارث مي برد .
FormStyle = اين خاصيت وضعيت و نوع فرم را مشخص مي كند . مقدار پيش فرض آن fsNormal است كه فرم حالت عادي خود را دارد . با مقدار fsStayOnTop فرم هميشه روي صفحه قرار مي گيرد .فرم هاي MDI بايد روي fsMDIForm و فرم هاي فرزند MDI روي fsMDIChild تنظيم شوند .
Height = اندازه ارتفاع و عرض فرم را تنظيم مي كند .
Hint = متن اشاره كوتاه (ToolTip) را مشخص مي كند .
HorzScrollBar و VertScrollBar = اين خواص مقادير خاص خودشان را براي كنترل عمليات ميله مرور تنظيم مي كند .
Icon = وقتي فرم در زمان اجرا نمايش داده شود و نيز وقتي كه فرم به حداقل اندازه برسد شمايلي روي نوار عنوان مشخص مي شود كه اين شمايل با اين خاصيت مشخص مي گردد .
جلسه پنجم
ادامه خواص فرم :
KeyPerview : اگر مقدار اين خاصيت برابر True باشد از آن پس اكثر ضربه هاي كليد به جاي آنكه ابتدا توسط عنصري كه فوكوس روي آن است پردازش شود توسط رويدادهاي مربوط به كليدهاي فرم پردازش مي شود .
Left : اين خاصيت مقدار تو رفتگي از سمت چپ صفحه نمايش را براي فرم تنظيم مي كند .
Menu : اين خاصيت وقتي به كار مي رود كه يك نوار منو در بالاي فرم خود ايجاد كنيد و با استفاده از تنظيم خواص موجود در آن تنظيمات مربوط به منو انجام مي گيرد . در ضمن در هنگامي كه يك منو ايجاد شود به صورت اتوماتيك اين خاصيت با نام منو تنظيم مي شود . همچنين با استفاده از اين خاصيت مي توان مشخص كرد در موقعي كه چند منو در فرم موجود است كدام نمايش داده شوند .
Name : با استفاده از اين خاصيت مي توان نامي براي فرم براي كار بر روي آن و دسترسي به آن در كدهاي برنامه در نظر گرفت
ObjectMenuItem : اين خاصيت ليستي از آيتم هاي موجود در منوي بالاي فرم را نمايش مي دهد .
ParentFont : اين خاصيت تعيين مي كند ، خاصيت رنگ فرم ، از رنگ تعريف شده در خاصيت رنگ خودش استفاده كند يا از همان رنگي كه دلفي براي آن تعريف كرده (Parent) .
PixelsPerInch : اين خاصيت مشخص مي كند هر اينچ از فرم از چند پيكسل تشكيل شده است .
PopupMenu : اين خاصيت براي تعيين منوي شناور (PopupMenu) استفاده مي گردد كه در فرم ظاهر مي شود .
Position : اين خاصيت راهي آسان براي تنظيم موقعيت مكاني فرم به دست مي دهد .(poDesigned = فرم را در همان مكاني كه در زمان طراحي مشخص ساخته ايد قرار مي دهد -- poScreenCenter = فرم را در مركز صفحه نمايش كاربر قرار مي دهد -- poDefaultPosOnly = باعث ميشود كه ابعاد فرم همان ابعادي باشد كه تنظيم شده است ولي محل آن را دلفي تعيين مي كند -- poDefaultSizeOnly = باعث مي شود كه مكان فرم همان جايي باشد كه در موقع طراحي مشخص گرديده اما دلفي ابعاد آن را تغيير مي دهد )
PrintScale : اين خاصيت عمل چاپ اطلاعات روي يك فرم را آسان ميسازد .(poNone = هيچگونه بزرگنمايي صورت نخواهد پذيرفت -- poPropotional = دلفي فرم به گونهاي مقياس بندي كرده تا اطلاعات چاپ شده و اطلاعاتي كه ديده ميشود ابعاد يكساني داشته باشند --- poPrintToFit =مقياسبندي طوري انجام مي شود كه فرم با اندازه صفحه چاپ هماهنگ باشد )
Scaled : اگر مقدار اين خاصيت True باشد خاصيت PixelsPerInch عمل مي نمايد .
ShowHint : اين خاصيت براي فعال كردن خاصيت Hint به كار مي رود . اگر مقدار خاصيت برابر True باشد خاصيت Hint فعال است .
Tag : از اين خاصيت براي نگهداري عددي صحيح استفاده مي شود كه اطلاعاتي راجع به آن فرم است .
Top : اين خاصيت فاصله فرم با بالاي صفحه نمايش را به پيكسل تعيين مي كند .
VertScrollBar : اين خاصيت براي تعيين نوع ScrollBar عمودي استفاده مي شود .
|
|__ ButtonSize : اين خاصيت اندازه كليد را تعيين مي كند .
|__ Increment : اين خاصيت مشخص مي كند كه اگر كاربر ScrollBar را كليك كند مكان نماي ماوس چقدر حركت كند .
|__ Margin : فاصله ScrollBar را با عناصر فرم به پيكسل مشخص مي كند .
|__ Psition : تعيين مي كند شيء ScrollBar در كجا نمايش داده شود .
|__ Range : تعيين مي كند نوار جابجايي (ScrollBar) در كجا نمايش داده شود .
|__ Visible : اين خاصيت براي قابل رؤيت بودن نوار جابجايي استفاده مي شود .
Visible : اگر مقدار اين خاصيت True باشد فرم قابل رؤيت است در غير اينصورت فرم غيرقابل رؤيت است .
Width : اين خاصيت عرض فرم را با حاشيه آن به پيكسل مشخص مي كند .
WindowState : اين خاصيت اندازه فرم را مشخص مي كند .(wsNormal=در اين حالت فرم به صورت حداقل و حداكثر نمي باشد -- wsMaximized , wsMinimized= به ترتيب مشخص مي كنند كه فرم به صورت حداقل و حداكثر نمايش داده شود)
*** كليه خواص را مي توان در حين اجراي برنامه نيز تنظيم كرد :
Form1.Caption := 'My Program' ;
Form1.Width := 150 ;
Form1.Visible := False ;
Form1.Position := wsMaximized ;
Form1.BorderIcons.biMaximize := False ;
* توجه داشته باشيد كه براي مقدار دادن به خواص با استفاده از كد بايد بعد از نام فرم يا عنصر از يك نقطه و نام خاصيت موردنظر سپس علامت =: و در نهايت مقدار خاصيت را با توجه به نوع آن نوشته مي شود .
* براي مقادير رشتها بايد از يك جفت '' استفاده كرد .
جلسه ششم
در اين جلسه به بررسي رويدادهاي مربوط به يك فرم ميپردازيم :
براي انتخاب يك رويداد از پنجره Object Inspector قسمت Events را انتخاب كنيد تا ليستي از رويدادها ظاهر شوند .
OnActivate : زماني كه مكان نما به فرم منتقل مي شود اين رويداد فراخواني مي گردد .(زماني كه فرم فعال مي شود)
OnClick : هنگامي كه كاربر ناحيه خالي فرم را با ماوس كليك مي كند فراخواني مي شود .
OnCloseQuery : در موقعي كه كاربر سعي بر بستن فرم را داشته باشد اين رويداد فراخواني مي شود . [با استفاده از اين رويداد مي توان از بستن فرم جلوگيري كرد]
OnClose : اين رويداد پس از رويداد OnCloseQuery فراخواني شده و هنوز مي توان با استفاده از اين رويداد از بستن فرم جلوگيري كرد .
OnCreate : اين رويداد در زمان ايجاد شدن فرم فراخواني مي گردد . با استفاده از اين رويداد مي توان خواص اوليه فرم و عناصر بر روي آن را تنظيم كرد .
OnDblClick : هنگامي كه كاربر در ناحيه خالي فرم ماوس را دو بار كليك كند ، اين رويداد فراخواني مي شود .
OnDeactivate : موقعي كه كاربر به يك برنامه ديگر يا فرمي ديگر سوئيچ كند اين رويداد فراخواني مي شود .[زماني كه فرم غيرفعال مي شود]
OnDestroy : اين رويداد زمان حذف فرم فراخواني مي شود . پس از فراخواني اين رويداد تمام منابع اشغال شده توسط دلفي آزاد مي شود .
OnDragDrop : زماني كه يك عنصر با ماوس در فرم قرار مي گيرد اين رويداد فراخواني مي شود .
OnDragOver : موقعي كه عنصر روي فرم حركت كند اين رويداد فراخواني مي شود .
OnHide : اين رويداد در زمان مخفي شدن فرم اتفاق مي افتد .
OnKeyDown : زماني كه كاربر يكي از كليدهاي صفحه كليد (به جز Alt,Shift,Insert) را پايين نگه دارد ، اين رويداد فراخواني مي شود .
OnKeyPress : موقعي كه كه كليدي از صفحه كليد فشرده شود فراخواني مي شود . اين رويداد شامل كليدهاي Alt,Shift,Insert نمي باشد .
OnKeyUp : اين رويداد هنگام رهاشدن كليدِ فشرده شده فراخواني مي شود .
OnMouseDown : وقتي يكي از كليدهاي ماوس فشار داده شود اين رويداد فراخواني مي شود .
OnMouseMove : هنگامي كه اشارهگر ماوس روي فرم حركت مي كند ، اين رويداد فراخواني مي گردد .
OnMouseUp : زماني كه كاربر كليد فشرده شدة ماوس را رها مي كند اين رويداد فراخواني مي شود .
OnPaint : اگر در زمان بازيابي مجدد فرم ، اطلاعات آن پاك شده باشد ،اين رويداد فراخواني مي گردد .
OnResize : وقتي كاربر اندازه فرم را تغيير مي دهد اين رويداد فراخواني مي گردد . مي توان در روال پاسخگويي اين رويداد ، كدي قرار داد تا عناصر روي فرم تغيير اندازه يا تغيير محل بدهند .
OnShow : اين رويداد قبل از ظاهر شدن فرم فراخواني مي شود .
* مثال :
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption := 'My Program With Delphi ... ' ;
Form1.Width := 150 ;
Form1.Top := 250 ;
end;
**>> اين مثال رويداد OnCreate فرم را فراخواني كرده و زماني كه فرم ايجاد مي شود خواص مربوط به آن را تنظيم مي كند .
** توجه داشته باشيد كه انتهاي هر خط از برنامه بايد از ; استفاده كرد و روالهايي با بيش از يك خط كد را بايد درون يك بلوك Begin و ;End قرار داد .
* مثال :
procedure TForm1.FormResize(Sender: TObject);
begin
label1.Left := Label1.Left + 50 ;
Label1.Caption := 'Form Resizing Now ...' ;
end;
**>> اين مثال در موقع تغيير اندازه فرم فرم مقدار خاصيت Left عنصر Label1 را به مقدار 50 افزايش مي دهد . سپس خاصيت Caption آن را با مقدار مورد نظر تنظيم مي كند .
جلسه هفتم
در اين جلسه به بررسي برخي از متدهاي يك فرم و كاربرد آنها مي پردازيم :
متد :
متدها عملياتي هستند كه به صورت زير برنامه نوشته مي شوند و براي كنترل اشياء مورد استفاده قرار مي گيرند .
كاربرد متدها به صورت زير است :
نام متد . نام عنصر
**********
Create : با استفاده از اين متد مي توان ، در زمان اجرا عنصري را ايجاد كرد .
Show : اين متد عنصر پنهان شده را قابل رؤيت مي كند . به عنوان مثال Form1.Show عنصر Form1 را از حالت پنهان خارج مي كند .
Hide : با استفاده از اين عنصر مي توان عنصري را غيرقابل رؤيت نمود .
Focused : اين متد يك مقدار بولي(True,False) را بر ميگرداند كه مشخص مي كند محتويات درون عنصر انتخاب شده (فوكوس) است يا خير .
SetFocus : از اين متد براي انتخاب محتويات داخل يك عنصر استفاده مي شود . به عنوان مثال Edit1.SetFocus متن داخل عنصر Edit1 را انتخاب مي كند .
Destroy : با استفاده از اين متد مي توان يك عنصر را در حين اجراي برنامه از بين برد .
Clear : اين متد براي عناصري كه در مورد متن كار ميكنند به كار مي رود و باعث پاك شدن محتويات متن عنصر مي شود .
ScaleBy : با استفاده از اين متد مي توان ابعاد عناصر را تغيير داد :
Button1.ScaleBy(4,2) ;
==> اين دستور عنصر Button1 را دو برابر مي كند.(در اين متد عدد اول صورت كسر بزرگنمايي و عدد دوم مخرج كسر را مشخص مي كند)
Terminate : اين متد موجب خاتمه دادن به اجراي برنامه مي شود . دستور Application.Terminate اجراي برنامه جاري را خاتمه مي دهد .
Refresh : اين متد هر تصويري كه روي صفحه نمايش باشد آنها را پاك كرده و دوباره عناصر را رسم مي كند .
*در مورد بقيه متدها در جاي خود توضيح داده مي شود .*
در اين قسمت به بررسي خواص و رويدادهاي برخي عناصر پر كاربرد مي پردازيم :
ابتدا به عناصر موجود در صفحه Standard پرداخته مي شود :
عنصر TLabel (برچسب) :
اين عنصر براي نمايش متن روي فرم يا عناصر ديگر به كار مي رود . اين متن را كاربر نمي تواند تغيير دهد .
خواص ==>>
Align : اين خاصيت براي تراز بندي عنصر بر روي فرم و نحوه قرارگيري آن به كار مي رود .( alClient= موجب مي شود عنصر تمام سطح روي فرم را دربرگيرد -- alButtom = عنصر را به همان ارتفاع تنظيمي ولي در قسمت پايين فرم و با هم عرض فرم قرار مي دهد -- alLeft = عنصر را با عرض تنظيمي در قسمت چپ فرم هم ارتفاع فرم قرار مي دهد و ...)
Alignment : اين خاصيت براي تراز متن درون برچسب به كار مي رود .(taCenter = متن را در وسط قرار مي دهد -- taLeftJustfy = متن را در سمت چپ قرار مي دهد -- taRightJustfy = متن را در سمت راست برچسب قرار مي دهد )
جلسه هشتم
ادامه خواص شيء TLabel(برچسب) :
AutoSize : اين خاصيت در موقع تغيير كپشن برچسب عمل مي كند و موجب مي شود كه برچسب به اندازه مورد نياز براي متن تغيير اندازه دهد .
Caption : اين خاصيت مقدار متن نمايشي توسط برچسب را تنظيم مي كند .
Enabled : اين خاصيت براي فعال و غيرفعال كردن برچسب مي باشد .
Layout : از اين خاصيت براي ترازبندي عمودي متن موجود در خاصيت كپشن استفاده مي شود . [به عنوان مثال اگر بر روي tlCenter تنظيم شود متن در ميان قرار مي گيرد.]
ParentBiDiMode : اين خاصيت مشخص مي كند كه آيا برچسب خاصيت ترازبندي خود را از شيء پدر (فرم) به ارث ببرد يا خير .
ParentColor , ParentFont , ParentShowHint : اين خواص نيز مقدار رنگ و فونت و خاصيت ShowHint برچسب را با توجه به شيء پدر (فرم) تنظيم مي كند .
Transparnet : اگر مقدار اين خاصيت True باشد ، در مواقعي كه كارهاي گرافيكي انجام مي دهيم مي توان تصوير را در زير برچسب قرار دهيم .
WordWrap : اين خاصيت در موقع True بودن موجب مي شود كه در انتهاي هر خط برچسب به جاي اينكه متن به طور افقي گسترش يابد به خط بعدي انتقال يابد .
---------------------------
عنصر TEdit :
با استفاده از اين عنصر مي توان متن را از ورودي خواند يا در خروجي چاپ كرد .
خواص ==>>
AutoSelect : اين خاصيت موجب مي شود هرگاه مكاننما در عنصر TEdit قرار گيرد متن موجود در آن به طور خودكار انتخاب گردد .
BevelEdges , BevelInner , BevelKind , BevelOuter : اين خواص مربوط به تنظيمات شكل و قيافه عنصر TEdit مي باشد . با تغيير اين خواص در شكل لبه ها و تورفتگي هاي و ... عنصر تغييراتي اعمال مي شود .
BorderStyle : از اين خاصيت براي تنظيم نوع لبه هاي عنصر استفاده مي شود . [لبه دار باشد يا خير]
CharCase : با تنظيم اين خاصيت مي توان به كاربر اجازه ورود حروف كوچك [ecLowerCase] ، حروف بزرگ [ecUpperCase] و تركيبي از حروف بزرگ و كوچك [ecNormal] را بدهيد .
Ctl3D : اين خاصيت مشخص مي كند كه آيا عنصر به صورت سه بعدي نمايش داده شود يا خير .
MaxLength : اين خاصيت براي تعيين حداكثر طول متني كه كاربر مي تواند وارد نمايد به كار مي رود .
PasswordChar : از اين خاصيت براي رمزدار كردن نمايش كاراكترهاي ورودي استفاده مي شود . اگر مقدار آن غير از كاراكتر 0# باشد كاراكترهاي وارد شده توسط كاربر پنهان شده و همان كاراكتري را كه در اين خاصي قرار داده شده نمايش داده مي شود .
ReadOnly : اين خاصيت براي تعيين اينكه آيا متن موجود در عنصر قابل ويرايش باشد يا خير استفاده مي شود .
TabOrder : اين خاصيت تعيين مي كند كه با چندمين فشردن كليد tab مكان نما به اين عنصر انتقال يابد .
Text : مقدار اين خاصيت متن داخل عنصر TEdit را مشخص مي كند .
رويدادهاي شيء TEdit ==>>
OnChange : اين رويداد در موقع تغيير متن داخل عنصر فراخواني مي شود .[در موقعي كه كاربر سعي در تغيير متن باشد]
OnEnter : در موقعي كه فوكوس به عنصر TEdit منتقل و يا عنصر فعال مي شود اين رويداد فراخواني مي شود .
OnExit : اين رويداد در موقعي كه مكاننما از شيء به شيء ديگر و يا فوكوس از اين شيء به شيء ديگر انتقال داده شود فراخواني مي شود .
----------------------------
چند مثال از موارد بالا :
** استفاده از رويداد OnChange شيء TEdit :
procedure TForm1.Edit1Change(Sender: TObject);
begin
Label1.Caption := Edit1.Text ;
Form1.Caption := Edit1.Text ;
end;
== در اين مثال با تغيير متن داخل عنصر Edit1 خواص Caption فرم و عنصر Label1 با توجه به متن موجود در عنصر Edit1 تنظيم مي شود .
** استفاده از رويداد OnEnter و OnExit :
procedure TForm1.Edit1Enter(Sender: TObject);
begin
ShowMessage('You Enter To [' + Edit1.Name + ']') ;
end;
== اين دستور موجب مي شود وقتي مكان نما به عنصر منتقل مي شود پيغامي مبني بر اينكه شيء داراي فوكوس شده نمايش داده مي شود .
procedure TForm1.Edit1Exit(Sender: TObject);
begin
ShowMessage('You Exit From [' + Edit1.Name + ']') ;
end;
== با اين دستور در موقعي كه فوكوس از عنصر برداشته مي شود پيغامي ظاهر مي شود .
**** توضيح تابع ShowMessage :
ShowMessage (Const Msg : String) ;
-- اين تابع براي نمايش يك پنجره پيغام به كار مي رود . آرگومان Msg كه از نوع رشته اي تعريف شده متني است كه بايد در پنجره پيغام نمايش داده شود كه مي تواند يك رشته در داخل يك جفت '' باشد يا متغيرهايي كه از نوع String باشند .
جلسه نهم
عنصر TMemo :
با استفاده از اين عنصر مي توان ميتوان چند خطي را وارد و يا ويرايش كرد .
* براي عنصر TMemo محدوديتي براي تعداد خطوط نمي باشد و تعداد آن به ظرفيت ديسك سخت بستگي دارد .
خواص ==>
Lines : اين خاصيت كه بيشتر در موقع طراحي مورد استفاده قرار مي گيرد براي كنترل محتويات و يا وارد كردن متن استفاده كرد .
ScrollBars : اين خاصيت براي نمايش نوارهاي پيمايش عمودي و افقي در عنصر TMemo به كار مي رود .
WantReturns : با استفاده از اين خاصيت مي توان مشخص كرد كه كاربر براي جداكردن خطوط از كليد Enter بايد استفاده كند يا از كليدهاي Ctrl+Enter . [اگر مقدار آن True تنظيم شود براي جدا كردن خطوط از كليد Enter استفاده مي شود]
WantTabs : اين خاصيت مشخص مي كند كه كاربر با كليد Tab بين عناصر حركت كند يا با كليد Ctrl+Tab .[در صورت True بودن با كليد Tab بين عناصر حركت مي شود]
برخي از توابع و متدهاي كاربردي عنصر TMemo ==>
Clear : اين متد براي پاك كردن محتويات داخل عنصر به كار مي رود .
ClearSelection : از اين متد براي پاك كردن محتويات انتخاب شده عنصر استفاده مي شود .
ClearUndo : آخرين مقاديري را كه از عنصر پاك شده است را بازمي گرداند .
SelectAll : تمام متن موجود در عنصر را انتخاب مي كند .
Undo : آخرين تغييرات اعمال شده بر روي متن موجود در عنصر را بازيابي مي كند .
CanUndo : اين متد مشخص مي كند كه آيا خاصيت Undo (برگردان) فعال باشد يا خير . [از خاصيت نيز مي توان براي فهميدن فعال و يا غيرفعال بودن خاصيت Undo نيز استفاده كرد]
Modified : اين تابع مشخص مي كند كه آيا محتويات عنصر تغيير يافته است و يا خير . [از اين تابع مي توان در موقع ذخيره كردن محتويات عنصر براي فهميدن اينكه آيا محتويات تغيير يافته است يا خير استفاده كرد]
Text : تمام متن داخل عنصر را مشخص مي كند .
SelLength : با استفاده از اين متد مي توان تعداد كاراكترهاي انتخاب شده عنصر را بدست آورد .
SelStart : اين خاصيت شماره انديس اولين كاراكتر انتخاب شده از كاراكترهاي انتخابي را به ما مي دهد .
SelText : اين تابع متن انتخاب شده درون عنصر را براي ما بر مي گرداند .
GetTextLen : با استفاده از اين تابع مي توان تعداد كل كاراكترهاي موجود در عنصر را تعيين كرد .
Hide : از اين تابع براي مخفي ساختن عنصر استفاده مي شود .
Show : براي ظاهر ساختن عنصر از اين تابع استفاده مي شود .
-- چند متد براي كپي كردن و چسبانيدن محتويات عنصر TMemo با استفاده از حافظه ClipBoard :
CopyToClipBoard : اين متد متن انتخاب شده درون عنصر را داخل حافظه ClipBoard كپي مي كند .
CutToClipBoard : اين متد متن انتخاب شده درون عنصر را داخل حافظه ClipBoard منتقل مي كند .
PastFromClipBoard : با استفاده از اين متد مي توان اطلاعات موجود در ClipBoard را در جايي كه در آن مكان نما قرار دارد ، كپي كرد .
-- چند متد براي ذخيره و بازيابي اطلاعات عنصر TMemo درون فايل :
LoadFromFile : با استفاده از اين متد مي توان متني را درون عنصر قرار داد . [توجه داشته باشيد از اين متد براي عناصري كه ليستي از رشته ها را دارا هستند ، نيز به كار مي رود]
SaveToFile : از اين متد براي ذخيره كردن محتويات عنصر درون يك فايل متني استفاده مي شود .
== كاربرد اين دو متد براي عنصر TMemo به صورت زير مي باشد :
TMemoنام عنصر.Lines.LoadFromFile('نام و مسير فايل مورد نظر ') ;
TMemoنام عنصر.Lines.SaveToFile('نام و مسير فايل مورد نظر ') ;
جلسه دهم
عنصر TButton :
اين عنصر يك كليد فرمان بر روي فرم ايجاد مي كند كه با كليك كردن بر روي آن كد مربوط به رويداد OnClick آن اجرا مي شود .
برخي خواص ==>
Cancel : اين خاصيت تعيين مي كند ، در صورتي كه كاربر كليد ESC را فشار دهد آيا رويدادي رخ دهد يا خير . در صورتي كه مقدار آن True تنظيم شود با فشار دادن كليد ESC رويداد OnClick مربوط به عنصر اجرا مي شود .
Caption : متن داخل عنصر را مشخص مي كند .
Default : از اين خاصيت براي مشخص كردن يك دكمه پيش فرض استفاده مي شود . در صورتي كه مقدار آن بر روي True تنظيم شود در صورتي كه كاربر كليد Enter را فشار دهد كد مربوط به رويداد OnClick عنصر مربوطه اجرا مي شود .
ModalResult : اين خاصيت براي مواقعي به كار مي رود كه بخواهيم با ايجاد يك جعبه پيغام از كاربر براي انجام كاري خاص تأييد بگيريم . اين خاصيت مشخص مي كند كه موقعي كه كاربر اين دكمه را كليك كرد چه مقدار را برگرداند . [به عنوان مثال اگر مقدار اين خاصيت بر روي mrOK تنظيم شود ، وقتي كاربر اين دكمه را كليك كرد مقدار بازگشتي آن مشخص مي كند كه كاربر موافق با انجام عمليات مورد نظر است]
** مثالي براي استفاده از عنصر TButton و خاصيت ModalResult **
در اين مثال طرز ايجاد يك جعبه پيغام را آموزش مي دهيم .
ابتدا يك پروژه جديد ايجاد كنيد و يك عنصر TLabel بر روي فرم قرار دهيد .
=> در رويداد OnCreate فرم كدهاي زير وارد نمائيد :
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption := 'This is my program' ;
Form1.Width := 300 ;
Form1.Height := 200 ;
Form1.BorderIcons := [biMinimize,biSystemMenu] ;
Form1.Position := poDesktopCenter ;
Label1.Left := Form1.Width - 240 ;
Label1.Top := Form1.Height - 125 ;
Label1.Caption := 'For Exit Press Close SystemMenu Button.' ;
end;
توضيحات==>
اين كدها تنظيمات اوليه را انجام مي دهد . 5 خط اول تنظيماتي براي فرم مي باشد كه مقادير خاصيتهايCaption , Width Height و نمايش دكمه هاي سيستمي و مكان فرم را در صفحه نمايش تنظيم مي كند . سه خط بعد تنظيماتي در مورد عنصر TLabel انجام مي دهد .[هدف اصلي اين كدها در واقع يادگيري تنظيم خاصيتها با استفاده از كد برنامه مي باشد و چگونگي مقدار گيري هر خاصيت در كد برنامه .]
=> كدهاي زير را در رويداد OnCloseQuery فرم وارد كنيد :
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Form2.ShowModal = mrYes then
Application.Terminate
else
CanClose := False ;
end;
توضيحات==>
اين دستورات Form2 را با استفاده از متد ShowModal به صورت مقيد نشان مي دهد و چك مي كند كه مقدار ModalResult بازگشتي فرم كه توسط دكمههاي موجود بر روي فرم مقدار گرفته برابر mrYes (يعني دكمه Yes كليك شده است) است يا خير . در صورت برابري به اجراي برنامه خاتمه مي دهد .
نكات :
1- استفاده از دستور Application.Terminate به اجراي برنامه خاتمه مي دهد .
2- رويداد OnCloseQuery داراي پارامتر CanClose مي باشد كه از نوع بوليين مي باشد . اين پارامتر يك مقدار بازگشتي به برنامه است كه مشخص مي كند آيا برنامه بسته شود (True) يا خير (False) . در صورتي كه در كد مربوط به رويداد ، مقدار اين پارامتر برابر با False قرار گيرد از بستن فرم جلوگيري مي شود .
=> ايجاد Form2 :
*براي ايجاد فرم از منوي File گزينه New سپس گزينه Form را انتخاب كنيد تا فرم جديدي ايجاد شود .
خواص فرم را به صورت زير تنظيم كنيد :
Caption = 'Message'
BorderIcons = []
BorderStyle = bsDialog
Height = 118 ;
Position = poMainFormCenter
Width = 270
يك برچسب در وسط فرم قرار دهيد و خاصيت Caption آن را با مقدار '? Are you sure to want exit program' تنظيم كنيد .
يك دكمه بر روي فرم قرار دهيد و خواص آن را به صورت زير تنظيم كنيد :
Caption = 'Yes'
Height = 25
ModalResult = mrOk
Left = 40
Top = 56
Width = 65
دكمه ديگري ايجاد كنيد و خواص آن را به صورت زير تنظيم كنيد :
Caption = 'No'
Height = 25
ModalResult = mrNo
Left = 152
Top = 56
Width = 65
=> توجه :
براي اينكه بتوان Form2 را از درون Form1 فراخواني كرد بايد Form2 را به Form1 پيوند دهيم براي اين كار Form1 را فعال كرده سپس از منوي File گزينه ...Use Unit را انتخاب كرده و از ليست مربوطه Unit2 را انتخاب كنيد تا Form2 به Form1 پيوند داده شود . حال برنامه را اجرا كرده و سپس دكمه Close فرم را كليك كنيد .
جلسه يازدهم
دستورات در دلفي :
- در جلسه قبل يك نمونه دستور شرطي را توضيح داديم ، در اين جلسه به دستورات در دلفي مي پردازيم .
به طور كلي در دلفي سه نوع دستور وجود دارد :
شرطي
تكرار
كنترل
1- دستورات شرطي :
اين دستورات با توجه به برقرار بودن و يا عدم برقراري يك شرط منطقي كاري را انجام مي دهد . اين دستورات شامل :
* if then ... else كه در جلسه قبل به طور كامل بحث شد .
* دستور case of كه فرم كلي آن به صورت زير مي باشد :
case عبارت of
دستور 1 : مقادير1 ;
دستور 2 : مقادير2 ;
.
.
.
n دستور : n مقادير ;
else
دستور
end ;
* اين دستور عبارت مورد نظر را چك مي كند با كداميك از مقادير 1 تا n برابري دارد و با توجه به آن دستور مورد نظر را انجام مي دهد در غير اينصورت دستور قسمت else را انجام مي دهد .
* اين دستور در مواقعي كه بخواهيم با توجه به مقدار يك عبارت تنها يك عمل انجام شود به كار مي رود و بهترين جايگزين براي if هاي تودرتو مي باشد .
** نكات :
1- دستور case مي تواند بودن قسمت else نيز باشد كه در اينصورت شكل كلي به صورت زير مي باشد :
case عبارت of
دستور 1 : مقادير1 ;
دستور 2 : مقادير2 ;
.
.
.
n دستور : n مقادير ;
end ;
2- عبارت ارزيابي شونده بايد از نوع مقادير ترتيبي باشند به عبارت ديگر نمي توان از مقادير اعشاري ، رشته ها و امثالي نظير اينها استفاده كرد . مقادير ترتيبي مورد استفاده مي تواند از نوع صحيح و يا از نوع بولين باشد .
3- در صورتي كه بخواهيم بيش از يك دستور در هر يك از مقادير 1 تا n اجرا شوند بايد از بلوك begin و ;end استفاده شود .
============================
2- دستورات تكرار :
هرگاه بخواهيم عمل و يا عملياتي به تكرار در برنامه اجرا شوند از اين دستورات استفاده مي كنيم .
* for do : اين دستور به دو صورت به كار مي رود -» افزايشي ، كاهشي .
افزايشي : فرم كلي آن به صورت زير مي باشد :
for مقدار اوليه =: شمارنده to مقدار نهايي do
دستور ;
== اين دستور با توجه به مقدار اوليه شمارنده و مقدار نهايي شمارنده دستورات را انجام مي دهد . در هر بار اجراي حلقه يك واحد به شمارنده اضافه مي شود و سپس براي اجراي بعدي چك مي شود كه آيا از مقدار نهايي كوچكتر مساوي هست يا خير . در صورتي كه مقدار شمارنده از مقدار نهايي بيشتر شود اجراي حلقه خاتمه پيدا مي كند .
*** نكات :
1- نوع شمارنده بايد از نوع صحيح باشد .
2- مقدار اوليه باسد از مقدار نهايي كوچكتر يا مساوي باشد در غير اينصورت حلقه تكرار نمي شود .
3- بايد توجه داشت كه مقدار شمارنده نبايد در بدنه حلقه تغيير يابد .
4- در صورتي كه مقادير اوليه و نهايي با يك متغير مشخص مي شود مي توان آنها را در بدنه حلقه تغيير داد براي اينكه فقط مقاديرفقط يكبار ارزيابي مي شوند .
5- پس از خروج از حلقه مقدار شمارنده همان مقدار نهايي مي باشد .
6- در صورتي كه بخواهيم بيش از يك دستور اجرا شود از بلوك ;begin ... end استفاده مي كنيم .
كاهشي : فرم كلي آن به صورت زير مي باشد :
for مقدار اوليه =: شمارنده downto مقدار نهايي do
دستور ;
== اين دستور در هر بار اجرا يك واحد از شمارنده كم مي كند و سپس ارزيابي مي كند كه آيا از مقدار نهايي بزرگتر يا مساوي هست يا خير .
نكته :
مقدار اوليه شمارنده بايد از مقدار نهايي بزرگتر يا مساوي باشد در غير اينصورت حلقه تكرار نمي شود .
For تودرتو : در اين دستور از دو يا چند حلقه for به صورت تودرتو استفاده مي شود :
مثال :
for i := 1 to 10 do
begin
for j := 1 to 10 do
begin
.
.
end ;
.
.
end ;
*در اين مثال از دو حلقه به صورت تودرتو استفاده شده است كه نحوه اجراي آن به اين صورت مي باشد كه در هر بار اجراي حلقه بيروني حلقه داخلي يكبار به طور كامل اجرا مي شود .
*شمارنده حلقه ها نبايد همنام باشند .
*توجه داشته باشيد كه اگر تعداد حلقه ها بيش از 2 باشد حلقه بيروني تا اجراي كامل اولين حلقه داخلي منتظر مي ماند .
مثال :
فرض كنيد حلقه هاي ما به صورت زير باشند :
1. for i := 1 to 3 do
2. for j := 1 to 3 do
3. for m := 1 to 3 do
دستور ;
== براي اينكه حلقه شماره 1 يكبار اجرا شود بايد حلقه شماره 2 يكبار به طور كامل اجرا شود و اين در صورتي است كه در هر بار اجراي حلقه 2 حلقه 3 يكبار به طور كامل اجرا شود . در اينصورت اجراي دستور به تعداد 3×3×3 مي باشد .
حلقه تكرار while : فرم كلي آن به صورت زير مي باشد :
while شرط do
begin
.
.
end ;
== در اين دستور ابتدا شرط بررسي مي شود و در صورت صحّت شرط بدنه حلقه اجرا مي شود .
نكات :
* اجراي حلقه while تا موقعي انجام مي شود كه شرط حلقه برقرار باشد .
* بايد توجه داشت كه در داخل بدنه حلقه شرط نقض شود در غير اينصورت حلقه بينهايت اجرا مي شود .
* از اين دستور در مواقعي استفاده مي كنيم كه تعداد دفعات تكرار دستورات براي ما مشخص نباشد و يا بخواهيم دستورات با توجه به شرطي خاص انجام شوند .
حلقه تكرار repeat : فرم كلي آن به صورت زير مي باشد :
repeat
دستورات
until شرط ;
== هنگامي كه كنترل اجراي برنامه به repeat مي رسد دستورات يكبار به طور كامل اجرا مي شوند و با رسيدن به until شرط تست مي شود و در صورت نادرستي شرط اجراي دستورات تكرار مي شود .
نكات :
* در اين دستور ابتدا دستورات يكبار به طور كامل اجرا مي شوند و سپس شرط حلقه بررسي مي شود .
* تكرار حلقه در صورتي است كه شرط بعد از until ارزش نادرستي داشته باشد .
* در اين حلقه براي دستورات بيش از يكي نياز به بلوك ; begin ... end نمي باشد .
3- دستورات كنترلي :
اين دستورات براي مواقعي كه بخواهيم كنترل اجراي برنامه را به جايي ديگر از برنامه و يا اجراي برنامه را متوقف كنيم مورد استفاده قرار مي گيرد .
Break : كاربرد اين دستور در حلقه هاست در صورتي كه بخواهيم به ادامه اجراي دستورات حلقه خاتمه دهيم .
Continue : اين دستور در حلقه ها موجب مي شود كه كنترل اجراي برنامه در هر جاي حلقه به انتهاي حلقه منتقل شود ، به عبارت ديگر از اجراي دستورات بعدي حلقه صرف نظر كرده و كنترل برنامه به تكرار بعد منتقل مي شود .
exit : اين دستور در توابع و يا رويدادها موجب مي شود كه كنترل برنامه از تابع خارج شود . (موجب خروج از توابع و يا رويدادها مي شود)
جلسه دوازدهم
عنصر TRadioButton :
- در موقعي كه بخواهيم با توجه به انتخاب كاربر عملي و يا عملياتي انجام شود از مجموعه اي از اين عنصر استفاده مي كنيم كه در اين صورت كاربر مجاز به انتخاب يكي از اين مجموعه مي باشد . مورد استفاده از اين عنصر همراه با استفاده از دستور شرطي if مي باشد - مهمترين خاصيت آن Checked مي باشد كه مشخص كننده انتخاب عنصر مي باشد .
مثال :
سه عنصر RadioButton را بر روي فرم قرار دهيد و خواص زير را تنظيم كنيد :
RadioButton1.Caption := 'Select First'
RadioButton2.Caption := 'Select Second'
RadioButton3.Caption := 'Select Third'
يك عنصر TButton را بر وري فرم قرار دهيد و در رويداد OnClick آن كدهاي زير را وارد نمائيد :
procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked then
ShowMessage(RadioButton1.Caption)
else if RadioButton2.Checked then
ShowMessage(RadioButton2.Caption)
else if RadioButton3.Checked then
ShowMessage(RadioButton3.Caption) ;
end;
** البته مي توانيد به جاي استفاده از if تودرتو از if ساده نيز استفاده كنيد .
------------------------
عنصر TListBox :
- اين عنصر محلي را ايجاد مي كند كه در آن مي توان ليستي از اسامي فايلها يا اسامي اشخاص و ديگر موارد را در آن قرار داد . عناصر موجود در آن را مي توان انتخاب كرد و كارهايي را با توجه به آنها انجام داد . توجه داشته باشيد عناصر موجود در ListBox از نوع رشته مي باشند .
خواص ==>
Columns : اين خاصيت مشخص مي كند كه عناصر موجود در ليست در چند ستون نمايش داده شوند . مقدار پيش فرض 0 مي باشد كه تنها يك ليست يك ستون دارد .
MultiSelect : در صورتي كه بخواهيم از ليست بيش از يك گزينه را انتخاب كنيم مقدار اين خاصيت بايد True تنظيم شود .
ExtendedSelect : هنگامي كه مقدار اين خاصي و خاصيت MultiSelect برابر tRUE باشد مي توان با استفاده از كليد Shift يگ گروه مجاور را باهم انتخاب كرد و همچنين با استفاده از كليد Ctrl چند گزينه غير مجاور هم را انتخاب كرد .
Items : با انتخاب اين خاصيت پنجره اي نمايش داده مي شود كه مي توان گزينه هاي موجد در ليست را كه مي خواهيم نمايش داده شوند را تايپ كرد . توجه داشته باشيد كه در اين پنجره هر خط به منزله يك گزينه مي باشد .
Sorted : با استفاده از اين خاصيت مي توان مشخص كرد كه آيا گزينه ها به صورت مرتب نمايش داده شوند يا خير .
Style : اين خاصيت براي تعيين نوع ListBox استفاده مي شود :
lbStandard : عنصر ListBox به صورت استاندارد نمايش يابد .
lbOwnerDrawVariable و lbOwnerDrawFixed : اين امكان را مي دهند كه بتوان در گزينه ها متن و گرافيك را باهم داشت .
*** اضافه كردن گزينه در ListBox در موقع اجرا با استفاده از كد برنامه :
در اين مورد از خاصيت Items و استفاده از متد Add آن به صورت زير استفاده مي كنيم :
ListBox1.Items.Add(رشته مورد نظر) ;
** پاك كردن گزينه نيز با استفاده از متد Delete از خاصيت Items استفاده مي شود :
ListBox1.Items.Delete(شماره انديس آيتم مورد نظر) ;
== مثال -»
يك عنصر TListBox و دو گزينه TButton و يك گزينه TEdit بر روي فرم قرار دهيد و خواص زير را تنظيم كنيد :
Edit1.Text := '' ;
Button1.Caption := 'Add' ;
Button2.Caption := 'Delete' ;
- در رويداد OnClick عنصر button1 كدهاي زير را وارد نمائيد :
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Add(Edit1.Text)
end;
- در رويداد OnClick عنصر button2 كدهاي زير را وارد نمائيد :
procedure TForm1.Button2Click(Sender: TObject);
var
i : Integer ;
begin
i := StrToInt(InputBox('Delete Item' , 'Enter your index that you want to delete it :','0')) ;
ListBox1.Items.Delete(i);
end;
== توضيحات :
تابع InputBox : اين تابع پنجره را نمايش مي دهد كه مي توان در آن از كاربر اطلاعاتي را دريافت كرد كه شكل كلي آن به صورت زير مي باشد :
متغير رشته اي := InputBox(Const ACaption : String ; Const APrompt : String ; Const ADefault : String) : String ;
= اين تابع سه آرگومان را از نوع رشته دريافت مي كند و مقدار بازگشتي آن نيز از نوع رشته اي است .
ACaption : اين آرگومان متن عنوان (Title) پنجره را مشخص مي كند .
APrompt : اين آرگومان متن پيغام را در پنجره تنظيم مي كند .
ADefault : مقدار پيش فرض مقدار قرار گيري در پنجره را مشخص مي كند .
استفاده از دستور StrToInt براي اين است كه مقدار بازگشتي از تابع InputBox را كه از نوع رشته مي باشد را به نوع Integer تبديل نمايد .
جل