===================================

هندل؟!

بورلند دلفی - که آخرین نگارش موجود آن در بازار دلفی 7 است - علاوه بر دستوراتی که برای کنترل محیط برنامه دارد، برای کنترل اکثر اشیای ویندوز (Windows) نیز امکانات زیادی را در اختیار برنامه نویس قرار می دهد. از این میان امکان دستکاری (Handling) اجزای برنامه های مختلف را مورد مطالعه قرار می دهیم.

بطوریکه می دانید، هریک از اجزایی که در پنجره های مختلف ویندوز مشاهده میشود و یا حتی آنهایی که قابل مشاهد نیست، با اعداد صحیح بزرگتر از صفر (Cardinal) و متمایز از هم شماره گذاری می شوند. به این اعداد اصطلاحاً هندل (Handle) گفته می شود. اشیایی مانند Textbox,lable,button,... هرکدام هندلی منحصربفرد دارند. اجزا (components) بکار رفته پروژة دلفی شما نیز اگر از فرزندان TWinControl باشد، دارای هندل هستند. در برنامه های مختلف می توان با استفاده از هندل یک شئ (object) به داده های مربوط به شئ دسترسی یافته و حتی در اغلب موارد می توان مشخصات مربوط به اشیاء را تغییر داد. در مثالی که خواهد آمد، با استفاده از هندل Desktop ، یک تایمر، گرافیک یا متن دلخواه خود را بر روی آن خواهیم نوشت.

اولین سؤالی که پیش می آید این است که هندل محتویات Desktop را چگونه باید یافت؟! جواب این سؤال تابع Get Device Context زیر است:

Handle:=GetDC(Hwnd_Desktop);

سپس با اختصاص این هندل به یک Canvas می توانیم مانند سایر ترسیمهایی که در دلفی می توان انجام داد، بر روی Desktop نیز بنویسیم.

 CustomCanvas.Handle:=Handle;

پس از اینکه با نحوة یافتن هندل آشنا شدیم، به بررسی خواص (properties) و روالهایی (Methods) می پردازیم که در کلاس TCanvas برای اینکار مهیا است.

Canvas وسیله ایست که توسط آن می توان در ظاهر اجزای ویژوال تغییراتی ایجاد نمود. در زیر برخی خواص و روالهای مربوط به Canvas آورده شده است:

Properties:

Brush : مشخصات مربوط به مساحتها

Pen : مشخصات قلم ترسیم

Handle : هندل

Pixels : رنگ یک پیکسل خاص از تصویر

Font : خصوصیات قلم متن

 

Methods:

Arc : ترسیم کمان

CopyRect : کپی قسمتی از تصویربه تصویری دیگر

Creat : ایجاد

Draw : رسم یک گرافیک

Ellipse : رسم بیضی و دایره

FillRect :‌ رنگ کردن یک مستطیل

FloodFill : رنگ کردن داخل یک شکل بسته

LineTo : رسم خط از نقطة جاری

MoveTo : تغییر نقطة جاری

Pie : رسم قسمتی از بیضی

Polygon : رسم چندضلعی

Rectangle : رسم مستطیل

RoundRect : رسم مستطیل با گوشه های دایروی

TextOut : نوشتن متن

--------------------------------------------------------------------------------------------------------

کلاس نقاشی ( Class TCanvas ) :

در این کلاس متدها و روالهای متعددی وجود دارد ( Function And Procedure ) شما با استفاده از این روالها و دستورات به راحتی می توانید به طراحی و ترسیم بپردازید . این کلاس که معمولا در بخش گرافیک کامپیوتری و ترسیمات مورد استفاده قرار می گیرد امکانات متعددی را برای ایجاد ترسیمات دلخواه و حتی ایجاد کامپوننتهایی با اشکال مختلف در اختیار شما قرار می دهد . و ما در این بخش شما را با اجزای مختلف این کلاس آشنا می سازیم . که به علت فراوانی دستورات و پروسه ها این آموزش را در 3 درس ارائه می دهیم .


چگونگی استفاده از TCanvas :

این کلاس که از کلاسهای درونی دلفی محسوب می شود معوملا در بعضی از کلاسهای گرافیکی مورد استفاده قرار می گیرد ولی در کل شما در مواردی مانند ترسیمات کامپوننتها و حتی در مواردی همچون آبجیکت های TLabel , TForm , TListBox , .... نیز برای انجام ترسیمات در اختیار شما قرار گرفته است .
در اینجا نوبت به چگونگی دست رسی به این کلاس می رسد :
استفاده درون اشیاء آماده :
اگر از اشیا خود دلفی و یا از کلاسهای دارای این کلاس درونی استفاده می کنید ، می توان گفت که برای دست رسی در اکتر مواقع مشخصه یا Property به نام Canvas در اختیار شما قرار دارد که شما با استفاده از این مشخصه می توانید همانند مشخصه های دیگربه زیر روال ها و متدهای این کلاس دست رسی پیدا کنید . مانند روشهای زیر :

Label1.Canvas.Refresh();
Image1.Canvas.Refresh();
ListBox1.Canvas.Refresh();

همانطور که در بالا مشاهده می کنید با استفاده از نام یک شی ( Object ) به راحتی می توان به کلاس زیرین نقاشی آن دست پیدا کرد . البته به شرط وجود و توانایی دست رسی به آن .
پس از دست رسی به مشخصه نقاشی ما احتیاج به دست رسی به صفت ها ، مشخصه ها و دستورات درونی مشخصه می باشیم . برای این کار کافیست تا با زدن نقطه پس از نام مشخصه
Canvas به لست متدها و روالهای آن دست رسی پیدا کنید . همانند مثال بالا که علامت نقطه با رنگ قرمز مشخص شده است .

ایجاد و ساخت کلاسهای دلخواه :
برای ایجاد کلاسهای دلخواه برای دست رسی به اشیاء و محیطهای دلخواه به صورت زیر عمل می کنیم .
1- ابتدا یک متغییر از نوع کلاس
TCanvas تعریف می کنیم . که این متغییر بسته به نیاز ما می تواند سراسری و یا درونی باشد .  در اینجا به یک مثال توجه کنید که تا انتها در مراحل بعد نیز با همین مثال پیش می رویم :

Var
   ADesktop:TCanvas;

2- پس از تعریف متغییر در اینجا نوبت به ساخت و تخصیص حافظه به متغییر می رسد . توجه کنید که اگر بدون ساخت یک متغییر قصد استفاده از آن را داشته باشید با خطای هین برنامه با پیام عدم درسترسی به محافظه بر خورد می کنید .  برای این کار مجدد از کلاس TCanvas استفاد می کنیم . همانند مثال

Var
   ADesktop:TCanvas
;
begin
 
ADesktop := TCanvas.Create
;
...
End;

3- در این قسمت می بایست دسته یا دستگیره Handel متغییر را به یک کنترل نصبت بدهیم تا بتوانیم از آن کنترل استفاده کنیم . این کار معمولا با استفاده از Function به نام GetDC صورت می پذیرد . به طور مثال م قصد دست یابی به کنترل دسکتاپ Desktop را داریم تا بر روی آن طراحی انجام دهیم . با توجه به مثال بالا این چنین عمل می کنیم.
نکته :
Handel یا HWND ها شماره های خاصه هر کنترل یا پنجره می باشند که سیستم عامل با توجه به آنان به اشیاء دست رسی پیدا می کند . به طور مثال دست گیره صفحه دسکتاپ ( 0 ) صفر و یا برای دستیابی به دستگیره Form1 از Form1.Handel استفاده می کنیم . برای راهنمایی بیشتر می توانید از راهنمای خود محیط دلفی استفاده کنید . کافیست تا کلمه را تایپ کرده و کلیدهای CTRL+F1 را فشار دهید .

...
ADesktop.Handel :=  GetDC(0);
....

حال کلاس شما آماده برای استفاده می باشد . شما می توانید با استفاده از زیر روالها و متدهای درونی متغییر تعریف شده به طراحی بپردازید .

توجه به این نکته ضروریست که پس از اتمام کار با متغییر حتما فضای اختصاص یافته به متغییر را رها کنید همانند زیر .

....
ADesktop.free;
End

 

توابع در دلفی :

============================

تابع MesssageDlg :
* از این تابع برای نشان دادن پیغام خاص و ادامه برنامه بر اساس نظر کاربر استفاده می شود ، در واقع
این تابع یک جعبه پیغام به ما نشان می دهد که درون آن دکمه هایی نظیر دکمه Yes/No و یا Ok/Cancel وجود دارد و کاربر با انتخاب یکی از این کلیدها مسیر بعدی اجرای برنامه را مشخص می کند .
==شکل کلی تابع به صورت زیر است :

function MessageDlg(const Msg: WideString; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer

- پارامتر
Msg متن پیغامی است که باید درون جعبه پیغام نمایش داده شود .
- پارامتر
DlgType نوع شکلکی است که باید در سمت چپ جعبه نشان داده شود ، مقادیر آن به شرح زیر می باشد :

mtWarning | علامت تعجب زرد
mtError | علامت ایست قرمز
mtInformation | آبی i علامت
mtConfirmation | علامت سؤال سبز

- پارامتر
Buttons لیست دکمه هایی است که قرار است در جعبه پیغام نشان داده شود ، و مقادیر آن به شرح زیر می باشد :

mbOk | mbCancel | mbYes | mbNo | mbAbort | mbRetry
mbIgnore | mbYesNoCancel | mbYesNo | mbOKCancel | mbAbortRetryIgnore

== توجه داشته باشید که مقادیر این پارامتر باید درون یک جفت [] نوشته شوند و در استفاده از چند دکمه همزمان با , از هم جدا می شوند .
- پارامتر
HelpCtx شماره ID فایل Help برنامه می باشد که در صورتی که کاربر دکمه راهنما و یا F1‌ را در موقع نمایش جعبه پیغام فشار می دهد نمایش داده شود . عموما مقدار پیش فرض آن را 0 قرار می دهیم .
**** مقدار بازگشتی این تابع یک عدد صحیح می باشد و مشخص کننده این است که کاربر کدامیک از دکمه های جعبه پیغام را انتخاب کرده است ، مقادیر بازگشتی آن به صورت زیر می باشد :

mrOk | را انتخاب کرده باشد Ok ‌ موقعی که کاربر دکمه
mrCancel | را انتخاب کرده باشد Cancel ‌ موقعی که کاربر دکمه
mrYes | را انتخاب کرده باشد Yes ‌ موقعی که کاربر دکمه
mrNo | را انتخاب کرده باشد No ‌ موقعی که کاربر دکمه
mrAbort | را انتخاب کرده باشد Abort ‌ موقعی که کاربر دکمه
mrRetry | را انتخاب کرده باشد Retry ‌ موقعی که کاربر دکمه
mrIgnore | را انتخاب کرده باشد Ignore ‌ موقعی که کاربر دکمه


CompareStr , StrComp
:

این دو تابع برای مقایسه کردن دو رشته به کار می رود . شکل کلی آن به صورت زیر می باشد :

function StrComp(const Str1, Str2 : PChar): Integer;
function CompareStr(const S1, S2: string): Integer;

- این تابع دو پارامتر رشته ای را دریافت می کند و نتیجه ای صحیح طبق جدول زیر برمی گرداند .

عددی منفی بر می گرداند <0 |
Str1< Str2
در صورت برابری صفر بر می گرداند =0 |
Str1= Str2
عددی مثبت بر می گرداند >0 |
Str1 > Str2

StrCopy :

این تابع یک رشته را به در یک رشته دیگر کپی می کند . شکل کلی آن به صورت زیر می باشد :

function StrCopy(Dest: PChar; const Source: PChar): PChar;

پارارمتر
Dest رشته ای است که باید در آن عملیات کپی صورت گیرد و پارامتر Source رشته ای است که قرار است کپی شود . این تابع یک مقدار رشته ای بر می گرداند که در واقع همان پارامتر Dest می باشد .

Lenght , StrLen :

 این دو تابع طول یک رشته را بر میگرداند و در واقع تعداد کاراکترهای یک رشته می باشد . شکل کلی آن به صورت زیر است :

function StrLen(const Str: PChar): Cardinal;
function Length(Str): Integer;

پارامتر
Str رشته ای است که قرار است طول آن محاسبه شود .

LowerCase , StrLower :

این دو تابع تمام کاراکترهای یک رشته را به کاراکتر کوچک تبدیل می کند. شکل تابع به صورت زیر است:

function StrLower(Str: PChar): PChar;
function LowerCase(const S: string): string;

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

Pos , StrPos :

 کار این دو تابع جستجوی یک رشته درون رشته ای دیگر است و به صورت زیر به کار می رود :

function StrPos(const tr1, Str2: PChar): PChar;
function Pos(Substr: string; S: string): Integer;

این تابع دو پارامتر رشته را می گیرد و رشته
Str2 را درون رشته str1 جستجو می کند ، در صورتی که رشته پیدا نشود مقدار nil را بر می گرداند .
در مورد تابع
Pos در صورت پیدا شدن رشته محل اولین وقوع آن بر گردانده می شود .

UpperCase , StrUpper :

این دو تابع نیز تمام کاراکترهای یک رشته را به کاراکتر بزرگ تبدیل می کند. شکل تابع به صورت زیر است:

function StrUpper(Str: PChar): PChar;
function UpperCase(const S: string): string;

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

Copy :

این تابع ، برای جدا کردن زیررشته از یک رشته مورد استفاده قرار می گیرد و به صورت زیر به کار می رود :

function Copy(S : String ; Index, Count: Integer): string;

این تابع سه پارامتر می گیرد و از مکان
Index‌ رشته S‌به تعداد Count کاراکتر جدا می کند و زیررشته مورد نظر را بر میگرداند .

روال
Delete :

 این روال قسمتی از یک رشته را حذف می کند .

procedure Delete(var S: string; Index, Count:Integer);

این تابع از کارکتر شماره
Index به طول Count از رشته S کاراکترها را حذف نموده و رشته جدید را بر می گرداند .

روال
Insert‌ :

از این روال برای قرار دادن رشته ای در یک رشته دیگر به کار می رود .

procedure Insert(Source: string; var S: string; Index: Integer);

این روال رشته
source را گرفته و در مکان Index از رشته S کپی کرده و رشته جدید S‌ را برمیگرداند .

TrimLeft , TrimRight‌ :

 این دو تابع یک رشته را گرفته و به ترتیب فضای خالی سمت راست و فضای خالی سمت چپ آن را حذف می کنند.

function TrimLeft(const S: string): string;
function TrimLeft(const S: WideString): WideString;

function TrimRight(const S: string): string;
function TrimRight(const S: WideString): WideString;

روال
Str :

از این روال برای تبدیل مقدار عددی به رشته عددی به کار می رود و به صورت زیر می باشد :

procedure Str(X [: Width [: Decimals ]]; var S);
این روال مقدار عددی
X را گرفته و به مقدار رشته عددی S تبدیل می کند . پارامترهای انتخابی و دلخواه Width و Decimals به ترتیب طول قسمت عددی که قرار است به رشته تبدیل شود و طول قسمت اعشار عدد اعشاری می باشد .
مثال :
var
Num : Integer ;
S : String ;
Num := 125.236 ;
Str(Num : 6 : 2 , S) ;
مقدار
S = '125.23'

عنصر TTimer :
* در موقعی که بخواهیم عمل یا اعمالی به دفعات و با فاصله زمانی مشخص تکرار و انجام شوند از این عنصر استفاده می کنیم .
خواص ==>
Enabled : برای فعال شدن و شروع به کار کردن این عنصر باید این خاصیت برابر True تنظیم شود .
Interval : فاصله زمانی میان دفعات تکرار را مشخص می کند . توجه کنید که مقدار این خاصیت بر حسب میلی ثانیه تنظیم می شود .(هر 1 ثانیه برابر 1000 میلی ثانیه می باشد)

رویداد ==>
این عنصر تنها دارای یک رویداد می باشد به نام
OnTimer که کدهای مربوطه در این رویداد نوشته می شوند .

عنصر
TMediaPlayer :
* از این عنصر برای پخش صدا و فیلم را استفاده می شود .
خواص ==>
AutoEnable : این خاصیت مشخص می کند در موقع فعال شدن و اجرای برنامه این عنصر به صورت اتوماتیک فعال شود .
AutoOpen : با استفاده از این خاصیت مشخص می کنیم که فایل صوتی و تصویری به صورت اتوماتیک باز شود یا خیر .
EnabledButtons : این خاصیت مشخص می کند که کدام یک از دکمه های پخش فعال باشد .
FileName : نام فایل صوتی و تصویری که می خواهیم پخش شود .
VisibleButtons : این خاصیت مشخص می کند که کدام یک از دکمه های پخش نشان داده شود .

متد ==>
Open , Close , Play , Stop , Pause , Step , Back , Previous , Next , PauseOnly , Resume , Rewind : از این متدها برای کنترل پخش صدا استفاده می شود .
StartRecording : برای شروع به کار ضبط صدا به کار می رود .
Length : این متد طول پخش فایل را مشخص میکند .
Tracks : تعداد تراکهای موجود بر روی سیدی را مشخص می کند .
Frames : تعداد فریمهای فایل را برمی گرداند .
Position : زمان فعلی پخش را برحسب مقدار طول فایل بر می گرداند .
EndPos , StartPos : این خواص شروع و پایان بازی زمانی فایل را که باید از ابتدای آن تا انتهای آن بازه پخش شود را مشخص می کند .

*** در این قسمت می خواهیم عناصر موجود در صفحه
Dialogs را توضیح دهیم :
- به طوری کلی این عناصر برای نمایش پنجرهای کنترل فایل ها و فونت و ... به کار میرود .

عنصر
TOpenDialog :
* این عنصر پنجره باز کردن فایل را برای ما نمایش می دهد .
خواص ==>
FileName :‌ این خاصیت نام فایل پیش فرضی را مشخص می کند که قرار است باز شود .
Filter : از این خاصیت برای مشخص کردن اینکه چه نوع فایلی در پنجره مورد نظر قابل باز کردن باشد ، در واقع تنظیم این خاصیت مشخص می کند که چه پسوندی از فایل ها قابل نمایش در پنجره باشد .

نحوه استفاده از این خاصیت :
بر روی آن دابل کلیک کرده تا پنجره مدیریت آن باز شود ، این پنجره دارای 2 ستون می باشد که ستون سمت چپ برای نمایش متنی کلی نمایش نوع فایل ها و ستون سمت چپ هم برای فیلتر کردن پسوندها می باشد . برای مثال می خواهیم فایل هایی با پسوند
mp3 و mpg نمایش داده شوند :

Mpg File (*.mpg) | *.mpg
Mp3 File (*.mp3) | *.mp3

FilterIndex : این خاصیت مشخص می کند کدامیک از فیلترها به طور پیش فرض نشان داده شود .
IntialDir : دایرکتوری و پوشه پیش فرض را مشخص می کند .
Options : از خواص زیر مجموعه این خاصیت برای تنظیم نحوه نمایش و استفاده از پنجره مورد نظر را مشخص می کند ، به طور مثال اگر زیر خواص ofAllowMultiSelect برای True تنظیم شود در پنجره می توان چندی فایل را همزمان انتخاب نمود .
Title : این خاصیت هم عنوان پنجره را تنظیم می کند .

** متد اجرایی این عنصر متد
Execute می باشد که هم برای نمایش عنصر و هم برای فهمیدن اینکه که آیا در پنجره دکمه Open کلیک شده است یا خیر .
نحوه استفاده از این متد عموما به صورت زیر می باشد :

if نام عنصر .Execute then
دستورات

عنصر
TSaveDialog :
* از این عنصر برای نمایش پنجره ذخیره کردن فایل استفاده می شود .
تمام خواص ذکر شده برای عنصر
TOpenDialog برای این عنصر نیز صدق می کند .

عناصر
TSavePictureDialog , OpenPictureDialog :
* این عناصر برای نمایش پنجره های باز کردن و ذخیره کردن فایل های عکس به کار می رود که خاصیت
Filter آنها به صورت پیش فرض تنظیم شده است .(می توانیم در مورد نحوه فیلتر کردن پنجره ها از عناصر استفاده کنید)

عنصر
TFontDialog‌ :
* از این عنصر برای نمایش پنجره انتخاب فونت استفاده می شود .
خواص ==>
Device : این خاصیت مشخص می کند که چه فونت هایی نمایش داده شوند ، فونت های مربوط به پرینتر و یا ویندوز و یا هر دوی آنها .
Font : تنظیماتی را در مورد فونت پیش فرض نمایشی در پنجره را در اختیار ما قرار می دهد .
MaxFontSize , MinFontSize : این دو خاصیت هم برای حداقل و حداکثر نمایش و انتخاب اندازه فونت را مشخص می کنند .

عنصر
TColorDialog :
* این عنصر نیز پنجره انتخاب رنگ را برای ما نمایش می دهد .
تنها خاصیت کاربردی آن
Color می باشد که برای مشخص کردن اینکه چه رنگی در پنجره انتخاب شده است .

عنصر
TPrintDialog‌ :
* این عنصر پنجره تنظیمات پرینتر را در موقع چاپ نشان می دهد .
خواص ==>
Copies : تعداد کپی و پرینت را از صفحات مورد نظر مشخص میکند .
FromPage : شماره صفحه ای را مشخص می کند که عمل پرینت از آن صفحه به بعد باید شروع شود .
PrintRange : این خاصیت مشخص می کند که کدامیک از صفحات پرینت شوند . (prAllPages تمام صفحات - prPageNums بر طبق شماره صفحه - prSelection صفحات انتخاب شده)
PrintToFile : در موقعی که بخواهیم عمل پرینت درون یک فایل انجام شود به عبارت دیگر صفحات دروی یک فایل ذخیره شوند باید مقدار این خاصیت برابر True تنظیم شود .

 

  : TRichEditعنصر
با استفاده از این عنصر همانند
TMemo می توان متون چند خطی را وارد و یا ویرایش کرد .
خواص ==>
Line : این خاصیت که بیشتر در موقع طراحی مورد استفاده قرار می گیرد برای کنترل محتویات و یا وارد کردن متن استفاده کرد .
ScrollBars : این خاصیت برای نمایش نوارهای پیمایش عمودی و افقی در عنصر به کار می رود .
ReadOnly‌ : اگر مقدار این خاصیت True تنظیم شود متن موجود در عنصر قابل ویرایش نخواهد بود .

برخی از توابع و متدهای کاربردی عنصر
TRichEdit ==>
Clear : این متد برای پاک کردن متن درون عنصر به کار می رود .
FindText : از این تابع برای پیدا کردن متن درون عنصر استفاده می شود . فرم کلی تابع به صورت زیر می باشد :

FindText(const SearchStr: string; StartPos, Length: Integer; Options: TSearchTypes): Integer;

این تابع دارای 4 پارامتر ورودی و یک مقدار صحیح بازگشتی می باشد . پارامتر دریافتی
SearchStr‌ متنی است که می خواهیم جستجو شود ، پارامتر StartPos‌ مشخص می کند که از چه کارکتری از متن درون عنصر جستجو باید شروع شود و پارامتر Length طول بازه جستجو را مشخص می کند .
این تابع یک مقدار صحیح بازگشتی دارد که در صورت پیدا کردن متن مکان اولین کاراکتر متن را درون عنصر بر میگرداند در غیر اینصورت مقدار صفر برمی گرداند.
Print : از این متد برای پرینت کردن متن درون عنصر به کار می رود . این متد یک پارامتر ورودی از نوع رشته دارد که متنی را مشخص می کند که در بالای صفحه پرینت باید چاپ شود .
ClearSelection : متن انتخاب شده را پاک می کند .
CopyToClipBoard : این متد متن انتخاب شده درون عنصر را داخل حافظه ClipBoard کپی می کند .
CutToClipBoard : این متد متن انتخاب شده درون عنصر را داخل حافظه ClipBoard منتقل می کند .
PastFromClipBoard : با استفاده از این متد می توان اطلاعات موجود در ClipBoard را در جایی که در آن مکان نما قرار دارد ، کپی کرد.
Undo : آخرین تغییرات اعمال شده بر روی متن موجود در عنصر را بازیابی می کند .
CanUndo : این متد مشخص می کند که آیا خاصیت Undo (برگردان) فعال باشد یا خیر . [از خاصیت نیز می توان برای فهمیدن فعال و یا غیرفعال بودن خاصیت Undo نیز استفاده کرد]
ClearUndo : آخرین مقادیری را که از عنصر پاک شده است را بازمی گرداند .
SelectAll : تمام متن موجود در عنصر را انتخاب می کند .
Modified : این تابع مشخص می کند که آیا محتویات عنصر تغییر یافته است و یا خیر . [از این تابع می توان در موقع ذخیره کردن محتویات عنصر برای فهمیدن اینکه آیا محتویات تغییر یافته است یا خیر استفاده کرد]
Text : تمام متن داخل عنصر را مشخص می کند .
SelLength : با استفاده از این متد می توان تعداد کاراکترهای انتخاب شده عنصر را بدست آورد .
SelStart : این خاصیت شماره اندیس اولین کاراکتر انتخاب شده از کاراکترهای انتخابی را به ما می دهد .
SelText : این تابع متن انتخاب شده درون عنصر را برای ما برمی گرداند .
GetTextLen : با استفاده از این تابع می توان تعداد کل کاراکترهای موجود در عنصر را تعیین کرد .-

عنصر  TProgressBar:
از این عنصر برای نشان دادن میزان پیشرفت یک عملیات استفاده می کنند .
خواص ==> 
Min,Max : مینیمم و ماکزیمم مقدار پیشرفت عنصر را مشخص می کند و یا به عبارت دیگر مقدار ابتدایی و انتهایی را تنظیم می کند . 
Position : این خاصیت میزان پیشرفت را بر می گرداند . 
Smooth : این خاصیت مشخص می کند که آیا نوار پیشرفت به صورت خانه خانه نمایش داده شود و یا به صورت نوار یکنواخت .

عنصر TTrackBar
:
از این عنصر برای مقدار دهی به صورت Scroll
استفاده می شود .
خواص ==> 
Min , Max : مینیمم و ماکزیمم مقدار عنصر را مشخص می کند . 
Position : این خاصیت مقدار و مکان دکمه پیمایش را مشخص می کند . 
SliderVisible : از این خاصیت برای پنهان و ظاهر ساختن دکمه پیمایش عنصر استفاده می شود .
TickMarks tmBoth: مشخص می کند که درجه بندی به چه صورت نمایش داده شود . ( در دو طرف دکمه پیمایش - tmBottomRight در پایین و tmTopLeft در بالا) 
Orientation : مشخص می کند که عنصر به صورت افقی یا عمودی نمایش داده شود .

عنصر ‏TGroupBox :
هرگاه بخواهیم مجموعه ای از کامپوننت های مربوط به هم را با عنوانی خاص در کنار هم داشته باشیم از این عنصر استفاده می کنیم .
در استفاده از این عنصر باید به این نکته توجه داشت که شیء
TGroupBox‌ برای عناصری که بر روی آن قرار می گیرند به عنوان Parent عمل میکند به عبارت دیگر اشیاء قرارگرفته شده خواصی همچون رنگ ، فونت و ... را از این شیء به ارث می برند .

عنصر
TRadioGroup :
از این در مواقعی که بخواهیم چند عنصر
TRadioButton مربوط به یک موضوع را در کنار هم داشته باشیم استفاده می شود .
خواص ==>
Caption : این خاصیت متن عنوان بالای این عنصر را مشخص می کند .
Columns : این خاصیت مشخص می کند که عناصر TRadioButton در چند ستون نمایش داده شوند .
Items : با این خاصیت عناصر TRadioButton را بر روی عنصر ایجاد می کنیم . در موقع اجرای برنامه می توان از متد Add‌ از این خاصیت نیز استفاده نمود .
============================
حال به چندی از عناصر و کامپوننت های موجود در صفحه
Additional می پردازیم :

عنصر
TBitBtn :
این عنصر همانند عنصر
TButton می باشد با این تفاوت که می توان در کنار کپشن دکمه یک عکس با فرمت Bitmap قرار داد .
خواص ==>
Glyph : این خاصیت عکس درون دکمه را مشخص می کند .
Kind : این خاصیت حاوی چندی استاندارد در این عنصر می باشد ، مانند حالت های Yes ، No و ... .
Layout : از این خاصیت برای تنظیم مکان نمایش عکس درون دکمه استفاده می شود .
Spacing : با استفاده از این خاصیت فاصله بین متن و عکس درون دکمه مشخص می شود .

عنصر
TStringGrid‌ :
از این عنصر برای نمایش اطلاعات به صورت جدول (سطر و ستونی) استفاده می شود .
خواص ==>
ColCount : این خاصیت تعداد ستون های عنصر را مشخص می کند .
DefaultColWidth : با این خاصیت می توان مقدار پهنای ستون ها را تنظیم کرد .
DefaultRowHeigth : این خاصیت مقدار ارتفاع سطرها را مشخص می کند .
FixedCols‌ ، FixedRows ، FixedColor : این خواص به ترتیب تعداد ستون و سطر ثابت و رنگ نمایشی آنها را تنظیم می کنند .
GridLineWidth‌ : از این خاصیت برای تنظیم عرض خطوط بین سطرها و ستون ها استفاده می شود .
Options : از زیرخواص های موجود در این خاصیت برای کنترل بر روی عنصر TStringGrid استفاده می شود .
RowCount : این خاصیت نیز تعداد سطرهای عنصر را مشخص می کند .
ScrollBars : از این خاصیت برای نمایش و یا عدم نمایش نوارهای پیمایش درون این عنصر استفاده می شود .

خاصیتی که در کد برنامه می توان از آنها استفاده کرد :
Cells : این خاصیت مقدار متن موجود در سطر و ستون مورد نظر را برمی گرداند و یا متن سطر و یا ستون مورد را نظر را تنظیم کند و کاربرد آن به صورت زیر است :

متغیر رشته ای :=
TStringGrid نام عنصر.Cells[شماره ستون , شماره سطر] ;

TStringGrid نام عنصر.Cells[رشته مورد نظر =: [شماره ستون , شماره سطر ;

عنصر
TImage :
از این عنصر برای نمایش عکس بر روی فرم برنامه می توان استفاده کرد .
خواص ==>
AutoSize :هرگاه مقدار این خاصیت برابر True باشد ، وقتی اندازه عنصر از عکس موجود در آن کوچکتر باشد به صورت خودکار تغییر اندازه می دهد .
Center‌ : این خاصیت مشخص می کند که عکس درست در وسط عنصر نمایش داده شود .
Picture‌ : از این خاصیت برای انتخاب عکس درون این عنصر استفاده می شود .
Stretch : با تنظیم مقدار این خاصیت برابر True هرگاه اندازه عکس بزرگتر و یا کوچکتر از اندازه عنصر باشد اندازه تصویر برابر اندازه عنصر تنظیم می شود و تمام تصویر نمایش داده می شود .
TransParnet : با استفاده از این خاصیت می توان رنگ سفید اطراف تصویر را از بین برد .

برای قرار دادن عکس در کد برنامه می توان به روش زیر عمل نمود :

;('مسیر و نام فایل تصویر')TImage.Picture.LoadFromFile 

برای ذخیره کردن تصویر درون این عنصر بر روی دیسک از روش زیر استفاده کرد :

; ('مسیر و نام فایل')Image1.Picture.SaveToFile
عنصر
TShape :
با استفاده از این عنصر می توان اشکال هندسی را بر روی فرم قرار داد .
خواص ==>
Brush : با استفاده از زیرخواص های موجود در این خاصیت می توان رنگ و نحوه نمایش درون اشکال را مشخص کرد .
Pen : برای تنظیمات مربوط به خطوط و حاشیه اطراف اشکال به کار می رود .
Shape : برای انتخاب نوع شکل هندسی به کار می رود. (stRectangle چهارگوش - stCircle برای دایره - stEllipse بیضی - stRoundRect چهارگوش با گوشه های خمیده - stRoundSquare مربع با گوشه های خمیده - stSquare مربع)

 

*********

 

عنصر TComboBox :
این عنصر همانند عنصر
ListBox‌ لیستی از عناصر را در اختیار ما می گذارد با این تفاوت که در این عنصر تنها می توان یک گزینه را انتخاب نموده و با توجه به آن گزینه عمل خاصی انجام شو د.
خواص ==>
Items : با نتخاب این خاصیت می توان متن گزینه ها را وارد نمود . البته در حین اجرای برنامه نیز می توان از متد Add این خاصیت نیز استفاده نمود .
Text‌ : این خاصیت متن انتخابی و نمایش داده شده در عنصر را تنظیم می کند .

رویداد ==>
OnChange : این رویداد در موقعی که کاربر یک متن موجود در قسمت متنی عنصر تغییر کند فراخوانی می شود .
OnCloseUp : در موقعی که لیست نمایش داده شده این عنصر پنهان می شود این رویداد عمل می کند .
OnSelect : این رویداد در موقع انتخاب گزینه از لیست فراخوانی میشود .

عنصر TScrollBar
:
از این عنصر برای پیمایش استفاده می شود .
خواص ==>
Kind : این خاصیت نوع نمایش نوار پیمایش را مشخص می کند که به صورت افقی (sbHorizontal) و یا به صورت عمودی (sbVertical) باشد .
LargeChange : با مقداردهی به این خاصیت که در بازه 1 تا 32767 می باشد مشخص می شود در موقعی که کاربر بر روی نوار پیمایش کلیک می کند مقدار نوار پیمایش به چه مقدار افزایش یابد .
Max و Min : مقدار نهایی و اولیه را مشخص می کنند .
PageSize‌ : این خاصیت اندازه دکمه تغییر موقعیت نوار را تنظیم می کند .
Position : موقعیت و مقدار نوار را مشخص می کند .
SmallChange : در موقعی که کاربر بر روی دکمه های رفت و برگشت نوار کلیک می کند به اندازه مقدار این خاصیت نوار پیمایش جابجا می شود .

رویداد ==>
Onchange‌ : این رویداد در موقعی که موقعیت نوار پیمایش تغییر می کند فراخوانی می شود .

عنصر TRadioButton :
- در موقعی که بخواهیم با توجه به انتخاب کاربر عملی و یا عملیاتی انجام شود از مجموعه ای از این عنصر استفاده می کنیم که در این صورت کاربر مجاز به انتخاب یکی از این مجموعه می باشد . مورد استفاده از این عنصر همراه با استفاده از دستور شرطی
if می باشد - مهمترین خاصیت آن Checked‌ می باشد که مشخص کننده انتخاب عنصر می باشد .

عنصر 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(شماره اندیس آیتم مورد نظر) ;

 

عنصر 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('نام و مسیر فایل مورد نظر ') ;

 

عنصر 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 : این رویداد در موقعی که مکاننما از شیء به شیء دیگر و یا فوکوس از این شیء به شیء دیگر انتقال داده شود فراخوانی می شود .

عنصر TLabel (برچسب) :
این عنصر برای نمایش متن روی فرم یا عناصر دیگر به کار می رود . این متن را کاربر نمی تواند تغییر دهد .
خواص ==>>
Align : این خاصیت برای تراز بندی عنصر بر روی فرم و نحوه قرارگیری آن به کار می رود .( alClient= موجب می شود عنصر تمام سطح روی فرم را دربرگیرد -- alButtom = عنصر را به همان ارتفاع تنظیمی ولی در قسمت پایین فرم و با هم عرض فرم قرار می دهد -- alLeft = عنصر را با عرض تنظیمی در قسمت چپ فرم هم ارتفاع فرم قرار می دهد و ...)
Alignment : این خاصیت برای تراز متن درون برچسب به کار می رود .(taCenter = متن را در وسط قرار می دهد -- taLeftJustfy = متن را در سمت چپ قرار می دهد -- taRightJustfy = متن را در سمت راست برچسب قرار می دهد )