محدود کردن اندازه فرم در دلفی
با سلام
گاهی اوقات نیاز است فرم ما از نظر اندازه پیرو یک الگو باشد و کاربر نتواند خارج از محدوده این فرم را تغییر اندازه دهد، راهی که پیشنهاد می شود، استفاده از Windows Messages، تابع WM_GetMinMaxInfo میباشد.
unit MinMax;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMGetMinMaxInfo(var MSG: Tmessage); message WM_GetMinMaxInfo;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMGetMinMaxInfo(var MSG: Tmessage);
Begin
inherited;
with PMinMaxInfo(MSG.lparam)^ do
begin
with ptMinTrackSize do
begin
X := 300;
Y := 150;
end;
with ptMaxTrackSize do
begin
X := 350;
Y := 250;
end;
end;
end;
end.
محدود کردن اندازه فرم در دلفی
با سلام
گاهی اوقات نیاز است فرم ما از نظر اندازه پیرو یک الگو باشد و کاربر نتواند خارج از محدوده این فرم را تغییر اندازه دهد، راهی که پیشنهاد می شود، استفاده از Windows Messages، تابع WM_GetMinMaxInfo میباشد.
unit MinMax;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMGetMinMaxInfo(var MSG: Tmessage); message WM_GetMinMaxInfo;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMGetMinMaxInfo(var MSG: Tmessage);
Begin
inherited;
with PMinMaxInfo(MSG.lparam)^ do
begin
with ptMinTrackSize do
begin
X := 300;
Y := 150;
end;
with ptMaxTrackSize do
begin
X := 350;
Y := 250;
end;
end;
end;
end.
چگونه تمامي رويدادهاي يك شيء را در زمان اجرا به Nil تنظيم كنيم؟
باسلام
در اين درس مقاله روشي را جهت اينكه تمامي رويدادهاي يك شيء تعريف شده در دلفي را در زمان اجرا به Nil تنظيم كنيد براي شما بازگو ميكنيم. شما ميتوانيد از RTTIها جهت رسيدن به اهداف خود استفاده كنيد اما فقط براي زمان طراحي و اجرا و اين امكان براي رويدادها وجود ندارد. استفاده از RTTI، تا حدودي پيچيده است بنابراين من رويهاي را براي نسبت دادن Nil به يك شيء موجود در زمان اجراي يك برنامه در دلفي آوردهام كه نحوه انجام اين كار را به شما نشان ميدهد.
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses
Typlnfo;
procedure NilEvents(lnstance: TObject);
var
Typelnfo: PTypelnfo;
I, Count: Integer;
PropList: PPropList;
Proplnfo: PProplnfo;
Method: TMethod;
begin
Typelnfo := Instance.Classlnfo;
Method.Code := nil;
Method.Data := nil;
Count := GetPropList(Typelnfo, [tkMethod], nil);
GetMem(PropList, Count * SizeOf(Pointer));
try
GetPropList(Typelnfo, [tkMethod], PropList);
for I := 0 to Count -1 do
begin
Proplnfo := PropList^[I];
SetMethodProp(lnstance, Proplnfo, Method);
end;
finally
FreeMem(PropList);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
sText = 'The 2nd time you click Button1 the event will not fire';
begin
NilEvents(Button1);
ShowMessage(sText);
end;
end.
چگونه رويداد مربوط به تمامي اجزاء درون برنامه خود را تغيير دهيم؟
گاهي لازم ميشود تا ما فراميني را براي يكي از رويدادهاي برنامه خود به تمامي اشياء استفاده شده در برنامه نسبت دهيم اينكار ميتواند با استفاده از RTTI دلفي صورت گيرد شما مثالي را ميبينيد كه اين كار را شبيهسازي كرده است.
uses
Typlnfo;
procedure TFrmRTTIOnChange.Button1Click(Sender: TObject);
var
proplnfo: PProplnfo;
thisEvent: TNotifyEvent;
begin
proplnfo := GetProplnfo(Memo1.Classlnfo, 'OnChange');
if proplnfo <> nil then
begin
thisEvent := Memo1AltChange;
SetOrdProp(Memo1, Proplnfo, integer(@thisEvent));
end;
end;
procedure TFrmRTTIOnChange.Memo1Change(Sender: TObject);
begin
Caption := 'Normal On Change';
end;
procedure TFrmRTTIOnChange.Memo1AltChange(Sender: TObject);
begin
Caption := 'Alternate On Change';
end;
درست كردن ماكرو متني:
اين امكان بسيار مفيد است و مي توانيد بسياري از كارهاي نوشتاري را كاهش دهد با اينكار شما ميتوانيد يك سري از كارهاي تكراري كه روي متون انجام مي دهيد را بصورت ماكرو در آورده و از آنها به راحتي استفاده كنيد. براي شروع به ضبط ماكرو كليدهاي ctrl+shift+r را بفشاريد و آن سري كارهايي را كه مي خواهيد را انجام دهيد و سپس براي اينكه به كار ضبط ماكرو پايان دهيد كليدهاي ctrl+shift+r را دوباره بزنيد. حال براي استفاده از ماكرو كافيست در هر جا كه لازم بود كليدهاي Ctrl+Shift+P را بفشاريد.
انتخاب متن بصورت مربعي:
اگر شما از كهنه كارهاي كامپيوتر باشيد حتما از زمان داس يادتون هست كه برنامه اي بود به نام PE2 كه يكي از امكانات بسيار جالبش اين بود كه يك مربع از متن رو ميتوانستين انتخاب
كنيد و آنرا كپي يا حذف كنيد. بله درست متوجه شديد در محيط دلفي هم شما اينكار را ميتوانيد انجام دهيد اما نه به مشكلي PE2 بلكه اينكار را ميتوانيد فقط با گرفتن كليد Alt و كشيدن
موس روي متن انجام دهيد.
گذاشتن علامت روي متن:
اين كار كه به BookMark معروف است بسيار مفيد و كارا مي باشد. در هنگامي كه شما روي قسمتي از متن برنامه كار ميكنيد و مي خواهيد به يك قسمت ديگر برويد ممكن است براي برگشتن به مكان اول خود كمي مشكل پيدا كنيد. ولي شما ميتوانيد با زدن چند دكمه به محل مورد نظرتون باز گرديد. براي اينكار در خطي كه قصد داريد علامت بگذاريد كليدهاي Ctrl+Shift+0..9 را بفشاريد. منظور اينست كه كليدهاي ctrl+Shift را نگه داريد و يكي از اعداد 0 تا 9 را وارد كنيد تا آن خط به همان شماره علامت گذاري شود و سپس هر جا كه خواستيد برويد و سپس هر بار كه كليد Ctrl را نگه داريد و شماره مورد نظر را وارد كنيد به همان خط باز خواهيد گشت. البته توجه داشته باشيد كه فقط مي توانيد 10 خط را با اين روش علامت گذاري بكنيد و براي برداشتن علامت ها كافيست روي همان خط دوباره كليد Ctrl+shift و شمارهاي كه براي آن خط وارد كرده ايد را بفشاريد با اينكار علامت آن خط برداشته مي شود.
شی گرايی
با سلام
دوستان گرامی اين درس را به شی گرايی و مباحثی که در اين زمينه مطرح می شود می پردازيم . چون دوستان زيادی برايم ميل فرستاده بودند و خواسته بودند که مطالبی از اين قبيل را بازتر کنم . اميدوارم که مطالب مفيد واقع شوند .
- شي گرايي: در نظر بگيريد براي رانندگي مجبور بوديد از تمام نكات فني و همه اتفاقاتي كه در موتور و پيستونها اتفاق مي افتد با خبر بوديد واقعاً گيج كننده مي شد، اينطور نيست! در واقع برنامه نويسي ابتدا بدين صورت بود و فقط افراد خاصي مي توانستند اين كار را انجام دهند ولي با ظهور شي گرايي همه چيز عوض شد. حالا ببينيم يك شي دقيقاً چكار ميكند. اول اينكه يك شي طوري طراحي شده كه برنامه نويسي همانند دنياي اطراف ما بنظر برسد. يك شي همه چيزهاي مربوط را دور هم جمع ميكند مثلا توابع ، زيرروالها، متغييرها و حتي پايگاه داده مربوط همه و همه در يك جا و به صورت يك موجوديت. كار ديگر شي اين است كه جزئيات را از ديد شما پنهان مي كند به طوري كه شما بدون آن كه از ماهيت دروني آنها آگاه باشيد مي توانيد به راحتي از آنها استفاده كنيد. همانطور كه بدون آنكه از جزئيات دروني و مدارهاي يك تلوزيون باخبر باشيد با آن كار ميكنيد و اين به يكي از آرزروهاي ديرينه برنامه نويسان يعني سادگي و عدم پيچيدگي پاسخ داد. حال بياييد ببينيم يك شي چگونه اين كارها را انجام مي دهد.
شي هاي يك زبان مانند دلفي همانند اشياي دنياي واقعي مثل ماشين و متورسيكلت اهرمهايي براي كنترل نياز دارند كه اين وظيفه را Method ها به عهده مي گيرند. متدها نقش زيرروالها را در زبانهاي قديمي ايفا مي كنند. شي ها براي حفظ حالت جاري از Properties استفاده ميكنند مثلاً شما با ديدن كيلومتر ماشين به سرعت آن پي مي بريد و در اشيا با خواندن يك Properties همان كار را انجام مي دهيد. در واقع Properties يا خاصيتها نقش متغييرها و به طور كلي ساختمان دادهها را در زبانهاي قديمي ايفا مي كنند البته تفاوتهايي بين يك متغيير و Properties وجود دارد كه شما به تدريج به آن پي مي بريد. حالا به مفاهيم مشكل تر شي گرايي مي رسيم.
اشيا قابليتي بنام ارث بري دارند در واقع هر شي مي تواند خصوصيات خود را به فرزند خود منقل كند و يا به عكس مي تواند از والد خود خصوصياتي را به ارث ببرد. حالا سعي ميكنم با مثالي اين را تشريح كنم. فرض كنيم شما مي خواهيد شي اي ايجاد كنيد مثل قناري شما ابتدا مي توانيد شي به نام پرنده بوجود آورده و همه خصوصيات پرنده را در آن ايجاد كنيد. سپس شي بنام قناري ايجاد مي كنيد كه خصوصيات مربوط به پرندگان را مي تواند از شي پرنده به ارث ببرد و بقيه خصوصيات را براي آن مشخص كنيد و اگر بعداً خواستيد پرنده ديگري مثل گنجشك را معرفي كنيد هنوز هم مي توانيد از شي پرنده استفاده كنيد و اين يعني راحت تر شدن كد نويسي. قانون مهمي كه بايد بخاطر داشته باشيد و به سادگي از آن رد نشويد اين است كه هر شي مي تواند بجاي والد خود بكار گرفته شود چون همه خصوصيات آن را دارد ولي يك والد نمي تواند بجاي فرزند خود بكار رود اين مثل اين است كه دوست شما ، شما را به يك ميهماني دعوت كند و بگويد ميتوانيد پرنده خود را بياوريد و شما مي توانيد قناري را با خود ببريد ولي در صورتي كه مي گفت فقط مي توانيد گنجشك با خود بياوريد شما نمي توانستيد هر پرنده ديگري را با خود ببريد. اين نكته مهم در آنجا كاربرد دارد كه در صورتي كه پارامتر يك زيرروال از نوع يك شي باشد همه فرزندان آن شي مي توانند به آن زيروال ارسال شوند. براي فهم اين موضوع عجله نكنيد و فقط قانون را بياد داشته باشيد. مطلب ديگري كه راجع به شي گرايي بايد بدانيد Class و instance مي باشد . در واقع اشيا فقط يك قالب مي باشند كه نمي توانند به تنهايي مورد استفاده قرار گيرند. براي مثال وقتي شما مي گوييد قناري منظورتان قناري خاصي نيست. ولي وقتي يك قناري را با اسمي كه براي آن گذاشته ايد صدا مي زنيد يك قناري خاص را در نظر داريد. در واقع قناري به طور كلي وجود خارجي ندارد بلكه يك قناري خاص كه مثلاً اسم آن تويتي است وجود خارجي دارد در واقع Class مانند قناري و Instance مانند تويتي است و اين به معني اين است كه ما همواره ابتدا كلاسها را تعريف كرده و سپس براي استفاده يك نمونه يا Instance از آن را بوجود مي آوريم.
رويداد گرايي: در زبانهاي قديمي دستورات خط به خط انجام مي شد تا برنامه به پايان برسد و اين يك روند قابل پيشبيني را ايجاد ميكرد ولي با به وجود آمدن روشهاي رويدادگرا برنامه منتظر يك اتفاق مي ماند تا عكس العمل نشان دهد. در اشياي روزمره هم همين طور است مثلاً يك ماشين حساب تازماني كه شما دكمه اي را فشار ندهيد عمل نمي كند. در اينجور زبانها بايد برنامه را طوري طراحي كنيد كه كدهايتان براي عكس العمل نشان دادن به كار كاربر نوشته شده باشد. اين خلاصه اي از شي گرايي و رويداد گرايي بود.
موفق باشيد
خدانگهدار .
شی گرايی
با سلام
دوستان گرامی اين درس را به شی گرايی و مباحثی که در اين زمينه مطرح می شود می پردازيم . چون دوستان زيادی برايم ميل فرستاده بودند و خواسته بودند که مطالبی از اين قبيل را بازتر کنم . اميدوارم که مطالب مفيد واقع شوند .
- شي گرايي: در نظر بگيريد براي رانندگي مجبور بوديد از تمام نكات فني و همه اتفاقاتي كه در موتور و پيستونها اتفاق مي افتد با خبر بوديد واقعاً گيج كننده مي شد، اينطور نيست! در واقع برنامه نويسي ابتدا بدين صورت بود و فقط افراد خاصي مي توانستند اين كار را انجام دهند ولي با ظهور شي گرايي همه چيز عوض شد. حالا ببينيم يك شي دقيقاً چكار ميكند. اول اينكه يك شي طوري طراحي شده كه برنامه نويسي همانند دنياي اطراف ما بنظر برسد. يك شي همه چيزهاي مربوط را دور هم جمع ميكند مثلا توابع ، زيرروالها، متغييرها و حتي پايگاه داده مربوط همه و همه در يك جا و به صورت يك موجوديت. كار ديگر شي اين است كه جزئيات را از ديد شما پنهان مي كند به طوري كه شما بدون آن كه از ماهيت دروني آنها آگاه باشيد مي توانيد به راحتي از آنها استفاده كنيد. همانطور كه بدون آنكه از جزئيات دروني و مدارهاي يك تلوزيون باخبر باشيد با آن كار ميكنيد و اين به يكي از آرزروهاي ديرينه برنامه نويسان يعني سادگي و عدم پيچيدگي پاسخ داد. حال بياييد ببينيم يك شي چگونه اين كارها را انجام مي دهد.
شي هاي يك زبان مانند دلفي همانند اشياي دنياي واقعي مثل ماشين و متورسيكلت اهرمهايي براي كنترل نياز دارند كه اين وظيفه را Method ها به عهده مي گيرند. متدها نقش زيرروالها را در زبانهاي قديمي ايفا مي كنند. شي ها براي حفظ حالت جاري از Properties استفاده ميكنند مثلاً شما با ديدن كيلومتر ماشين به سرعت آن پي مي بريد و در اشيا با خواندن يك Properties همان كار را انجام مي دهيد. در واقع Properties يا خاصيتها نقش متغييرها و به طور كلي ساختمان دادهها را در زبانهاي قديمي ايفا مي كنند البته تفاوتهايي بين يك متغيير و Properties وجود دارد كه شما به تدريج به آن پي مي بريد. حالا به مفاهيم مشكل تر شي گرايي مي رسيم.
اشيا قابليتي بنام ارث بري دارند در واقع هر شي مي تواند خصوصيات خود را به فرزند خود منقل كند و يا به عكس مي تواند از والد خود خصوصياتي را به ارث ببرد. حالا سعي ميكنم با مثالي اين را تشريح كنم. فرض كنيم شما مي خواهيد شي اي ايجاد كنيد مثل قناري شما ابتدا مي توانيد شي به نام پرنده بوجود آورده و همه خصوصيات پرنده را در آن ايجاد كنيد. سپس شي بنام قناري ايجاد مي كنيد كه خصوصيات مربوط به پرندگان را مي تواند از شي پرنده به ارث ببرد و بقيه خصوصيات را براي آن مشخص كنيد و اگر بعداً خواستيد پرنده ديگري مثل گنجشك را معرفي كنيد هنوز هم مي توانيد از شي پرنده استفاده كنيد و اين يعني راحت تر شدن كد نويسي. قانون مهمي كه بايد بخاطر داشته باشيد و به سادگي از آن رد نشويد اين است كه هر شي مي تواند بجاي والد خود بكار گرفته شود چون همه خصوصيات آن را دارد ولي يك والد نمي تواند بجاي فرزند خود بكار رود اين مثل اين است كه دوست شما ، شما را به يك ميهماني دعوت كند و بگويد ميتوانيد پرنده خود را بياوريد و شما مي توانيد قناري را با خود ببريد ولي در صورتي كه مي گفت فقط مي توانيد گنجشك با خود بياوريد شما نمي توانستيد هر پرنده ديگري را با خود ببريد. اين نكته مهم در آنجا كاربرد دارد كه در صورتي كه پارامتر يك زيرروال از نوع يك شي باشد همه فرزندان آن شي مي توانند به آن زيروال ارسال شوند. براي فهم اين موضوع عجله نكنيد و فقط قانون را بياد داشته باشيد. مطلب ديگري كه راجع به شي گرايي بايد بدانيد Class و instance مي باشد . در واقع اشيا فقط يك قالب مي باشند كه نمي توانند به تنهايي مورد استفاده قرار گيرند. براي مثال وقتي شما مي گوييد قناري منظورتان قناري خاصي نيست. ولي وقتي يك قناري را با اسمي كه براي آن گذاشته ايد صدا مي زنيد يك قناري خاص را در نظر داريد. در واقع قناري به طور كلي وجود خارجي ندارد بلكه يك قناري خاص كه مثلاً اسم آن تويتي است وجود خارجي دارد در واقع Class مانند قناري و Instance مانند تويتي است و اين به معني اين است كه ما همواره ابتدا كلاسها را تعريف كرده و سپس براي استفاده يك نمونه يا Instance از آن را بوجود مي آوريم.
رويداد گرايي: در زبانهاي قديمي دستورات خط به خط انجام مي شد تا برنامه به پايان برسد و اين يك روند قابل پيشبيني را ايجاد ميكرد ولي با به وجود آمدن روشهاي رويدادگرا برنامه منتظر يك اتفاق مي ماند تا عكس العمل نشان دهد. در اشياي روزمره هم همين طور است مثلاً يك ماشين حساب تازماني كه شما دكمه اي را فشار ندهيد عمل نمي كند. در اينجور زبانها بايد برنامه را طوري طراحي كنيد كه كدهايتان براي عكس العمل نشان دادن به كار كاربر نوشته شده باشد. اين خلاصه اي از شي گرايي و رويداد گرايي بود.
موفق باشيد
خدانگهدار .
شی گرايی
با سلام
دوستان گرامی اين درس را به شی گرايی و مباحثی که در اين زمينه مطرح می شود می پردازيم . چون دوستان زيادی برايم ميل فرستاده بودند و خواسته بودند که مطالبی از اين قبيل را بازتر کنم . اميدوارم که مطالب مفيد واقع شوند .
- شي گرايي: در نظر بگيريد براي رانندگي مجبور بوديد از تمام نكات فني و همه اتفاقاتي كه در موتور و پيستونها اتفاق مي افتد با خبر بوديد واقعاً گيج كننده مي شد، اينطور نيست! در واقع برنامه نويسي ابتدا بدين صورت بود و فقط افراد خاصي مي توانستند اين كار را انجام دهند ولي با ظهور شي گرايي همه چيز عوض شد. حالا ببينيم يك شي دقيقاً چكار ميكند. اول اينكه يك شي طوري طراحي شده كه برنامه نويسي همانند دنياي اطراف ما بنظر برسد. يك شي همه چيزهاي مربوط را دور هم جمع ميكند مثلا توابع ، زيرروالها، متغييرها و حتي پايگاه داده مربوط همه و همه در يك جا و به صورت يك موجوديت. كار ديگر شي اين است كه جزئيات را از ديد شما پنهان مي كند به طوري كه شما بدون آن كه از ماهيت دروني آنها آگاه باشيد مي توانيد به راحتي از آنها استفاده كنيد. همانطور كه بدون آنكه از جزئيات دروني و مدارهاي يك تلوزيون باخبر باشيد با آن كار ميكنيد و اين به يكي از آرزروهاي ديرينه برنامه نويسان يعني سادگي و عدم پيچيدگي پاسخ داد. حال بياييد ببينيم يك شي چگونه اين كارها را انجام مي دهد.
شي هاي يك زبان مانند دلفي همانند اشياي دنياي واقعي مثل ماشين و متورسيكلت اهرمهايي براي كنترل نياز دارند كه اين وظيفه را Method ها به عهده مي گيرند. متدها نقش زيرروالها را در زبانهاي قديمي ايفا مي كنند. شي ها براي حفظ حالت جاري از Properties استفاده ميكنند مثلاً شما با ديدن كيلومتر ماشين به سرعت آن پي مي بريد و در اشيا با خواندن يك Properties همان كار را انجام مي دهيد. در واقع Properties يا خاصيتها نقش متغييرها و به طور كلي ساختمان دادهها را در زبانهاي قديمي ايفا مي كنند البته تفاوتهايي بين يك متغيير و Properties وجود دارد كه شما به تدريج به آن پي مي بريد. حالا به مفاهيم مشكل تر شي گرايي مي رسيم.
اشيا قابليتي بنام ارث بري دارند در واقع هر شي مي تواند خصوصيات خود را به فرزند خود منقل كند و يا به عكس مي تواند از والد خود خصوصياتي را به ارث ببرد. حالا سعي ميكنم با مثالي اين را تشريح كنم. فرض كنيم شما مي خواهيد شي اي ايجاد كنيد مثل قناري شما ابتدا مي توانيد شي به نام پرنده بوجود آورده و همه خصوصيات پرنده را در آن ايجاد كنيد. سپس شي بنام قناري ايجاد مي كنيد كه خصوصيات مربوط به پرندگان را مي تواند از شي پرنده به ارث ببرد و بقيه خصوصيات را براي آن مشخص كنيد و اگر بعداً خواستيد پرنده ديگري مثل گنجشك را معرفي كنيد هنوز هم مي توانيد از شي پرنده استفاده كنيد و اين يعني راحت تر شدن كد نويسي. قانون مهمي كه بايد بخاطر داشته باشيد و به سادگي از آن رد نشويد اين است كه هر شي مي تواند بجاي والد خود بكار گرفته شود چون همه خصوصيات آن را دارد ولي يك والد نمي تواند بجاي فرزند خود بكار رود اين مثل اين است كه دوست شما ، شما را به يك ميهماني دعوت كند و بگويد ميتوانيد پرنده خود را بياوريد و شما مي توانيد قناري را با خود ببريد ولي در صورتي كه مي گفت فقط مي توانيد گنجشك با خود بياوريد شما نمي توانستيد هر پرنده ديگري را با خود ببريد. اين نكته مهم در آنجا كاربرد دارد كه در صورتي كه پارامتر يك زيرروال از نوع يك شي باشد همه فرزندان آن شي مي توانند به آن زيروال ارسال شوند. براي فهم اين موضوع عجله نكنيد و فقط قانون را بياد داشته باشيد. مطلب ديگري كه راجع به شي گرايي بايد بدانيد Class و instance مي باشد . در واقع اشيا فقط يك قالب مي باشند كه نمي توانند به تنهايي مورد استفاده قرار گيرند. براي مثال وقتي شما مي گوييد قناري منظورتان قناري خاصي نيست. ولي وقتي يك قناري را با اسمي كه براي آن گذاشته ايد صدا مي زنيد يك قناري خاص را در نظر داريد. در واقع قناري به طور كلي وجود خارجي ندارد بلكه يك قناري خاص كه مثلاً اسم آن تويتي است وجود خارجي دارد در واقع Class مانند قناري و Instance مانند تويتي است و اين به معني اين است كه ما همواره ابتدا كلاسها را تعريف كرده و سپس براي استفاده يك نمونه يا Instance از آن را بوجود مي آوريم.
رويداد گرايي: در زبانهاي قديمي دستورات خط به خط انجام مي شد تا برنامه به پايان برسد و اين يك روند قابل پيشبيني را ايجاد ميكرد ولي با به وجود آمدن روشهاي رويدادگرا برنامه منتظر يك اتفاق مي ماند تا عكس العمل نشان دهد. در اشياي روزمره هم همين طور است مثلاً يك ماشين حساب تازماني كه شما دكمه اي را فشار ندهيد عمل نمي كند. در اينجور زبانها بايد برنامه را طوري طراحي كنيد كه كدهايتان براي عكس العمل نشان دادن به كار كاربر نوشته شده باشد. اين خلاصه اي از شي گرايي و رويداد گرايي بود.
موفق باشيد
خدانگهدار .
با سلام
دوستان گرامی اين درس را به شی گرايی و مباحثی که در اين زمينه مطرح می شود می پردازيم . چون دوستان زيادی برايم ميل فرستاده بودند و خواسته بودند که مطالبی از اين قبيل را بازتر کنم . اميدوارم که مطالب مفيد واقع شوند .
- شي گرايي: در نظر بگيريد براي رانندگي مجبور بوديد از تمام نكات فني و همه اتفاقاتي كه در موتور و پيستونها اتفاق مي افتد با خبر بوديد واقعاً گيج كننده مي شد، اينطور نيست! در واقع برنامه نويسي ابتدا بدين صورت بود و فقط افراد خاصي مي توانستند اين كار را انجام دهند ولي با ظهور شي گرايي همه چيز عوض شد. حالا ببينيم يك شي دقيقاً چكار ميكند. اول اينكه يك شي طوري طراحي شده كه برنامه نويسي همانند دنياي اطراف ما بنظر برسد. يك شي همه چيزهاي مربوط را دور هم جمع ميكند مثلا توابع ، زيرروالها، متغييرها و حتي پايگاه داده مربوط همه و همه در يك جا و به صورت يك موجوديت. كار ديگر شي اين است كه جزئيات را از ديد شما پنهان مي كند به طوري كه شما بدون آن كه از ماهيت دروني آنها آگاه باشيد مي توانيد به راحتي از آنها استفاده كنيد. همانطور كه بدون آنكه از جزئيات دروني و مدارهاي يك تلوزيون باخبر باشيد با آن كار ميكنيد و اين به يكي از آرزروهاي ديرينه برنامه نويسان يعني سادگي و عدم پيچيدگي پاسخ داد. حال بياييد ببينيم يك شي چگونه اين كارها را انجام مي دهد.
شي هاي يك زبان مانند دلفي همانند اشياي دنياي واقعي مثل ماشين و متورسيكلت اهرمهايي براي كنترل نياز دارند كه اين وظيفه را Method ها به عهده مي گيرند. متدها نقش زيرروالها را در زبانهاي قديمي ايفا مي كنند. شي ها براي حفظ حالت جاري از Properties استفاده ميكنند مثلاً شما با ديدن كيلومتر ماشين به سرعت آن پي مي بريد و در اشيا با خواندن يك Properties همان كار را انجام مي دهيد. در واقع Properties يا خاصيتها نقش متغييرها و به طور كلي ساختمان دادهها را در زبانهاي قديمي ايفا مي كنند البته تفاوتهايي بين يك متغيير و Properties وجود دارد كه شما به تدريج به آن پي مي بريد. حالا به مفاهيم مشكل تر شي گرايي مي رسيم.
اشيا قابليتي بنام ارث بري دارند در واقع هر شي مي تواند خصوصيات خود را به فرزند خود منقل كند و يا به عكس مي تواند از والد خود خصوصياتي را به ارث ببرد. حالا سعي ميكنم با مثالي اين را تشريح كنم. فرض كنيم شما مي خواهيد شي اي ايجاد كنيد مثل قناري شما ابتدا مي توانيد شي به نام پرنده بوجود آورده و همه خصوصيات پرنده را در آن ايجاد كنيد. سپس شي بنام قناري ايجاد مي كنيد كه خصوصيات مربوط به پرندگان را مي تواند از شي پرنده به ارث ببرد و بقيه خصوصيات را براي آن مشخص كنيد و اگر بعداً خواستيد پرنده ديگري مثل گنجشك را معرفي كنيد هنوز هم مي توانيد از شي پرنده استفاده كنيد و اين يعني راحت تر شدن كد نويسي. قانون مهمي كه بايد بخاطر داشته باشيد و به سادگي از آن رد نشويد اين است كه هر شي مي تواند بجاي والد خود بكار گرفته شود چون همه خصوصيات آن را دارد ولي يك والد نمي تواند بجاي فرزند خود بكار رود اين مثل اين است كه دوست شما ، شما را به يك ميهماني دعوت كند و بگويد ميتوانيد پرنده خود را بياوريد و شما مي توانيد قناري را با خود ببريد ولي در صورتي كه مي گفت فقط مي توانيد گنجشك با خود بياوريد شما نمي توانستيد هر پرنده ديگري را با خود ببريد. اين نكته مهم در آنجا كاربرد دارد كه در صورتي كه پارامتر يك زيرروال از نوع يك شي باشد همه فرزندان آن شي مي توانند به آن زيروال ارسال شوند. براي فهم اين موضوع عجله نكنيد و فقط قانون را بياد داشته باشيد. مطلب ديگري كه راجع به شي گرايي بايد بدانيد Class و instance مي باشد . در واقع اشيا فقط يك قالب مي باشند كه نمي توانند به تنهايي مورد استفاده قرار گيرند. براي مثال وقتي شما مي گوييد قناري منظورتان قناري خاصي نيست. ولي وقتي يك قناري را با اسمي كه براي آن گذاشته ايد صدا مي زنيد يك قناري خاص را در نظر داريد. در واقع قناري به طور كلي وجود خارجي ندارد بلكه يك قناري خاص كه مثلاً اسم آن تويتي است وجود خارجي دارد در واقع Class مانند قناري و Instance مانند تويتي است و اين به معني اين است كه ما همواره ابتدا كلاسها را تعريف كرده و سپس براي استفاده يك نمونه يا Instance از آن را بوجود مي آوريم.
رويداد گرايي: در زبانهاي قديمي دستورات خط به خط انجام مي شد تا برنامه به پايان برسد و اين يك روند قابل پيشبيني را ايجاد ميكرد ولي با به وجود آمدن روشهاي رويدادگرا برنامه منتظر يك اتفاق مي ماند تا عكس العمل نشان دهد. در اشياي روزمره هم همين طور است مثلاً يك ماشين حساب تازماني كه شما دكمه اي را فشار ندهيد عمل نمي كند. در اينجور زبانها بايد برنامه را طوري طراحي كنيد كه كدهايتان براي عكس العمل نشان دادن به كار كاربر نوشته شده باشد. اين خلاصه اي از شي گرايي و رويداد گرايي بود.
موفق باشيد
خدانگهدار .
با سلام
دوستان گرامی اين درس را به شی گرايی و مباحثی که در اين زمينه مطرح می شود می پردازيم . چون دوستان زيادی برايم ميل فرستاده بودند و خواسته بودند که مطالبی از اين قبيل را بازتر کنم . اميدوارم که مطالب مفيد واقع شوند .
- شي گرايي: در نظر بگيريد براي رانندگي مجبور بوديد از تمام نكات فني و همه اتفاقاتي كه در موتور و پيستونها اتفاق مي افتد با خبر بوديد واقعاً گيج كننده مي شد، اينطور نيست! در واقع برنامه نويسي ابتدا بدين صورت بود و فقط افراد خاصي مي توانستند اين كار را انجام دهند ولي با ظهور شي گرايي همه چيز عوض شد. حالا ببينيم يك شي دقيقاً چكار ميكند. اول اينكه يك شي طوري طراحي شده كه برنامه نويسي همانند دنياي اطراف ما بنظر برسد. يك شي همه چيزهاي مربوط را دور هم جمع ميكند مثلا توابع ، زيرروالها، متغييرها و حتي پايگاه داده مربوط همه و همه در يك جا و به صورت يك موجوديت. كار ديگر شي اين است كه جزئيات را از ديد شما پنهان مي كند به طوري كه شما بدون آن كه از ماهيت دروني آنها آگاه باشيد مي توانيد به راحتي از آنها استفاده كنيد. همانطور كه بدون آنكه از جزئيات دروني و مدارهاي يك تلوزيون باخبر باشيد با آن كار ميكنيد و اين به يكي از آرزروهاي ديرينه برنامه نويسان يعني سادگي و عدم پيچيدگي پاسخ داد. حال بياييد ببينيم يك شي چگونه اين كارها را انجام مي دهد.
شي هاي يك زبان مانند دلفي همانند اشياي دنياي واقعي مثل ماشين و متورسيكلت اهرمهايي براي كنترل نياز دارند كه اين وظيفه را Method ها به عهده مي گيرند. متدها نقش زيرروالها را در زبانهاي قديمي ايفا مي كنند. شي ها براي حفظ حالت جاري از Properties استفاده ميكنند مثلاً شما با ديدن كيلومتر ماشين به سرعت آن پي مي بريد و در اشيا با خواندن يك Properties همان كار را انجام مي دهيد. در واقع Properties يا خاصيتها نقش متغييرها و به طور كلي ساختمان دادهها را در زبانهاي قديمي ايفا مي كنند البته تفاوتهايي بين يك متغيير و Properties وجود دارد كه شما به تدريج به آن پي مي بريد. حالا به مفاهيم مشكل تر شي گرايي مي رسيم.
اشيا قابليتي بنام ارث بري دارند در واقع هر شي مي تواند خصوصيات خود را به فرزند خود منقل كند و يا به عكس مي تواند از والد خود خصوصياتي را به ارث ببرد. حالا سعي ميكنم با مثالي اين را تشريح كنم. فرض كنيم شما مي خواهيد شي اي ايجاد كنيد مثل قناري شما ابتدا مي توانيد شي به نام پرنده بوجود آورده و همه خصوصيات پرنده را در آن ايجاد كنيد. سپس شي بنام قناري ايجاد مي كنيد كه خصوصيات مربوط به پرندگان را مي تواند از شي پرنده به ارث ببرد و بقيه خصوصيات را براي آن مشخص كنيد و اگر بعداً خواستيد پرنده ديگري مثل گنجشك را معرفي كنيد هنوز هم مي توانيد از شي پرنده استفاده كنيد و اين يعني راحت تر شدن كد نويسي. قانون مهمي كه بايد بخاطر داشته باشيد و به سادگي از آن رد نشويد اين است كه هر شي مي تواند بجاي والد خود بكار گرفته شود چون همه خصوصيات آن را دارد ولي يك والد نمي تواند بجاي فرزند خود بكار رود اين مثل اين است كه دوست شما ، شما را به يك ميهماني دعوت كند و بگويد ميتوانيد پرنده خود را بياوريد و شما مي توانيد قناري را با خود ببريد ولي در صورتي كه مي گفت فقط مي توانيد گنجشك با خود بياوريد شما نمي توانستيد هر پرنده ديگري را با خود ببريد. اين نكته مهم در آنجا كاربرد دارد كه در صورتي كه پارامتر يك زيرروال از نوع يك شي باشد همه فرزندان آن شي مي توانند به آن زيروال ارسال شوند. براي فهم اين موضوع عجله نكنيد و فقط قانون را بياد داشته باشيد. مطلب ديگري كه راجع به شي گرايي بايد بدانيد Class و instance مي باشد . در واقع اشيا فقط يك قالب مي باشند كه نمي توانند به تنهايي مورد استفاده قرار گيرند. براي مثال وقتي شما مي گوييد قناري منظورتان قناري خاصي نيست. ولي وقتي يك قناري را با اسمي كه براي آن گذاشته ايد صدا مي زنيد يك قناري خاص را در نظر داريد. در واقع قناري به طور كلي وجود خارجي ندارد بلكه يك قناري خاص كه مثلاً اسم آن تويتي است وجود خارجي دارد در واقع Class مانند قناري و Instance مانند تويتي است و اين به معني اين است كه ما همواره ابتدا كلاسها را تعريف كرده و سپس براي استفاده يك نمونه يا Instance از آن را بوجود مي آوريم.
رويداد گرايي: در زبانهاي قديمي دستورات خط به خط انجام مي شد تا برنامه به پايان برسد و اين يك روند قابل پيشبيني را ايجاد ميكرد ولي با به وجود آمدن روشهاي رويدادگرا برنامه منتظر يك اتفاق مي ماند تا عكس العمل نشان دهد. در اشياي روزمره هم همين طور است مثلاً يك ماشين حساب تازماني كه شما دكمه اي را فشار ندهيد عمل نمي كند. در اينجور زبانها بايد برنامه را طوري طراحي كنيد كه كدهايتان براي عكس العمل نشان دادن به كار كاربر نوشته شده باشد. اين خلاصه اي از شي گرايي و رويداد گرايي بود.
موفق باشيد
خدانگهدار .
با سلام
بدون مقدمه برويم سراغ درس خودمون
تنظيم نمودن IDE ، پروژه و گزينه هاي ترجمه :
از گزينه options كه درون منوي project قرار دارد براي تنظيم نمودن گزينه هاي مربوط به پروژه خود استفاده كنيد .
تنظيم نمودن گزينه هاي پيشفرض پروژه :
براي تغيير دادن گزينه هاي پيش فرض پروژه خود به نحوي كه روي تمام پروژه هاي بعدي تاثير داشته باشند مي توانيد از درون پنجره project option نسبت به تنظيم نمودن گزينه هاي دلخواه اقدام نموده و سپس كادر default را كه در قسمت پايين پنجره قرار دارد علامتدار كنيد . با اين عمل تمام پروژه هاي جديد از گزينه هاي پيش فرض انتخاب شده تبعيت مي كنند .
استفاده از tamplate ها در برنامه نويسي :
Template ها معمولا ساختارهايي را شامل مي شوند كه شما مي توانيد آنها را به كد برنامه اضافه كنيد و تكميل نماييد . براي مثال اگر شما بخواهيد از يك حلقه for در نوشتن كد برنامه استفاده كنيد مي توانيد از tamplate زير استفاده كنيد :
For := to do
Begin
End;
براي درج نمودن يك tamplate در پنجره ويرايشگر كد تركيب كليدي ctrl+j را فشرده و tamplate مورد نظر را انتخاب كنيد . شما هم چنين مي توانيد tamplate هاي خودتان را به اين مجموعه بيفزاييد . براي افزودن يك tamplate :
1- از منوي tools گزينه editor option را انتخاب كنيد .
2- روي صفحه code insight كليك نماييد .
3- در قسمت code templates دكمه add را بفشاريد .
4- درون جعبه متن shortcut name نام tamplate را وارد كرده و دكمه ok را فشار دهيد .
5- درون جعبه متن code ، كد موردنظرتان را تايپ كنيد .
6- دكمه ok را كليك كنيد .
در جلسه بعدي در مورد برنامه هاي از نوع كنسول و سرور بحث خواهيم كرد .
خدانگهدار
