قسمت شانزدهم

در این جلسه می خواهیم به بحث در مورد چند تابع بپردازیم :

-تابع 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 ‌ موقعی که کاربر دکمه

= یک نمونه مثال در مورد چگونگی کاربرد این تابع :

if MessageDlg('Do you want to exit ?' , mtConfirmation , [mbYes,mbNo] , 0)=mrYes then
Application.Terminate ;

- تابع MessageDlgPos :
* این تابع همانند تابع MessageDlg عمل می کند با این تفاوت که تابع MessageDlg در وسط فرم نمایش داده می شود ولی در این تابع 2 پارامتر برای دادن مختصات مکان نمایش جعبه پیغام وجود دارد . شکل کلی تابع به صورت زیر است :

function MessageDlgPos(const Msg: WideString; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer): Integer;

- پارامترهای X و Y‌ مختصات مکان نمایش جعبه را مشخص می کنند ، به طور مثال اگر مقادیر این دو به ترتیب برابر 100 و 200 تنظیم شود جعبه پیغام در مکان که به اندازه 100 پیکسل از بالا و 200 پیکسل از سمت چپ صفحه نمایش فاصله دارد نشان داده می شود .

-تابع InputBox :
* از این تابع نیز برای نشان دادن پیغامی خاص و گرفتن متنی از کاربر برای ادامه اجرای برنامه می باشد در واقع در این جعبه پیغام یک Edit وجود دارد که در ان کاربر اطلاعات لازم را وارد می نماید . شکل کلی تابع به صورت زیر است :

function InputBox(const ACaption, APrompt, ADefault: WideString ): WideString

- پارامتر ACaption متن عنوان پنجره جعبه را مشخص می کند .
- پارامتر APrompt متن پیغام و سؤالی است که درون جعبه نمایش داده می شود .
- پارامتر ADefault مقدار پیش فرض متن Edit درون جعبه پیغام را مشخص می کند .

مقدار بازگشتی این تابع یک مقدار رشته ای است که همان متنی است که کاربر درون edit وارد می نماید .
یک نمونه مثال در مورد چگونگی کاربرد این تابع :

procedure TForm1.Button1Click(Sender: TObject);
var
St : String ;
begin
St := InputBox('Question' , 'Enter your Command for continue program ?' , 'Exit') ;
if St='Exit' then
Application.Terminate
else
ShowMessage('Your program not Exit') ;
end;

== این دستورات یک متغیر از نوع رشته تعریف می کند و سپس تابع مورد نظر را فراخوانی می کند و متن مورد نظر را درون متغیر St می ریزد و براساس اینکه برابر Exit هست یا خیر عمل خاصی را انجام می دهد .

-تابع InputQuery :
* این تابع نیز همانند InputBox می باشد با کمی تفاوت در پارامترها و مقدار بازگشتی . شکل کلی تابع به صورت زیر است :

function InputQuery(const ACaption, APrompt: WideString; var Value: WideString): Boolean

- پارامترهای ACaption و APrompt هماند تابع InputBox می باشد .
- پارامتر Value یک پارامتر ورودی و خروجی می باشد که دو عمل انجام می دهد : یکی اینکه مقدار پیش فرض متن را با توجه به متغیر مشخص می کند و دیگر اینکه مقدار بازگشتی را در خود نگه می دارد .
مقدار بازگشتی این تابع یک مقدار بولی می باشد که مشخص می کند آیا دکمه Ok انتخاب شده یا دکمه Cancel در صورتی که مقدار True برگرداند کاربر دکمه Ok را انتخاب کرده است .
یک نمونه مثال در مورد چگونگی کاربرد این تابع :

procedure TForm1.Button1Click(Sender: TObject);
var
St : String ;
Ok : Boolean ;
begin
St := '' ;
Ok := InputBox('Question' , 'Enter your Command for continue program ?' , St) ;
if St='Exit' and Ok then
Application.Terminate
else
ShowMessage('Your program not Exit') ;
end;

== در صورتی مقدار متن ورودی توسط کاربر برابر Exit باشد و کاربر دکمه Ok را انتخاب کند اجرای برنامه خاتمه پیدا می کند در غیر اینصورت پیغام مورد نظر نمایش داده می شود .

قسمت پانزدهم

در این جلسه به بحث در مورد چند کامپوننت کاربردی می پردازیم .
از صفحه System به دو عنصر TTimer و TMediaPlayer می پردازیم :

عنصر 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 تنظیم شود .

قسمت چهاردهم

در این جلسه به برخی از عناصر موجود در صفحه Win32‌ می پردازیم .

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

Min=0
Max=100
Smooth=True
عنصر TTrackBar :
Min=0
Max=10

در رویداد OnChange از عنصر TTrackBar کد زیر را وارد نمائید :

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
ProgressBar1.Position := TraCKbAR1.Position*10
end;