دنیای برنامه نویسی دلفی - Delphi Programming

دنیای برنامه نویسی دلفی از مقدماتی تا پیشرفته ( آموزش ) - Delphi Programming

دانلود فایل آموزش دلفی مقدماتی
ساعت ۳:۱٢ ‎ب.ظ روز سه‌شنبه ٢٧ بهمن ۱۳۸۸  کلمات کلیدی: مطالب آموزشی ، آموزش مقدماتی

با سلام به همه برنامه نویسان کامپیوتر

 فایل آموزش مقدماتی دلفی در قالب یک فایل پی دی اف برای شما دوستان آماده گردیده است.این آموزش شامل دوازده جلسه است. امیدوارم مفید واقع شود.

دانلود فایل آموزش دلفی مقدماتی به صورت پی دی اف

 

 



 

آموزش مقدماتی دلفی

 

 

 آموزش دلفی مقدماتی ( بحث تا معرفی تابع ها )

جلسه اول

دلفی چیست ؟

 

دلفی منبع عظیمی از توانائی و ابزارهای برنامه نویسی تحت ویندوز است. همه نقطه ضعفهای موجود در زبانهای برنامه نویسی تحت ویندوز، در دلفی پوشانده شده است. دلفی مجموعه قدرتمندی از تسهیلات طراحی و ایجاد برنامه بهمراه سرعت بالا ارائه می دهد.ا

وقتی از دید خاصی به زبانهای برنامه نویسی می نگریم، ملاحظه می کنیم دو نوع از این زبانها وجود دارد.ا

 

یک نوع ابزارهای خاص را برای توسعه سریع سیستمها فراهم کرده اند و نوع دیگر به شما اجازه می دهد به هر چیزی روی ماشین دسترسی داشته باشید.ا

 

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;

 

ما در این مثال چهار متغیر را هم زمان تعریف کرده ایم.

 

در مثال بالا ، متغیر 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 : این تابع پنجره را نمایش می دهد که می توان در آن از کاربر اطلاعاتی را دریافت کرد که شکل کلی آن به صورت زیر می باشد :

 

متغیر رشته ای : Str_Var

Str_Var:=InputBox(Const ACaption : String ; Const APrompt : String ; Const ADefault : String) : String ;

 

= این تابع سه آرگومان را از نوع رشته دریافت می کند و مقدار بازگشتی آن نیز از نوع رشته ‎ای است .

ACaption : این آرگومان متن عنوان (Title) پنجره را مشخص می کند .

APrompt : این آرگومان متن پیغام را در پنجره تنظیم می کند .

ADefault : مقدار پیش فرض مقدار قرار گیری در پنجره را مشخص می کند .

 

استفاده از دستور StrToInt برای این است که مقدار بازگشتی از تابع InputBox را که از نوع رشته می باشد را به نوع Integer تبدیل نماید .

 

 

تهیه شده در سایت     دنیای برنامه نویسی دلفی - Delphi Programming

http://mt85.persianblog.ir     دنیای برنامه نویسی دلفی از مقدماتی تا پیشرفته  - سید ابراهیم ثابتی

منبع : http://forum.iranled.com

نویسنده : lord_viper