Professional Documents
Culture Documents
Lesson 10
Lesson 10
(10 ) ﺍﻟﺪﺭﺱ
:إﻋﺪاد
O. M. Fares
Tripoli-Libya
September 2009
O. M. Fares دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ /اﻟﺪرس )(10
10
دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ
ﯾﺤﺘﻮي ﺷﺮﯾﻂ أدوات ) (Additionalﻋﻠﻰ أدوات ﺗﺤﻜﻢ إﺿﺎﻓﯿﺔ ) .(Additional Windows controlوھﻲ
ﻛﺎﻵﺗﻲ:
BitBtn (1
SpeedButton (2
MaskEdit (3
StringGrid (4
DrawGrid (5
Image (6
Shape (7
Bevel (8
ScrollBox (9
CheckListBox (10
Splitter (11
StaticText (12
ControlBar (13
ApplicationEvents (14
Chart (15
وﻓﻲ ھﺬا اﻟﺪرس إن ﺷﺎء اﷲ ﺗﻌﺎﻟﻰ ﺳﻮف ﻧﺘﻌﺮف ﻓﻲ ﻋﺠﺎﻟﺔ ﻋﻠﻰ ﺑﻌﺾ ھﺬه اﻟﻜﺎﺋﻨﺎت.
2
O. M. Fares دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ /اﻟﺪرس )(10
وھﻮ أول ﻛﺎﺋﻦ ﻓﻲ ﺷﺮﯾﻂ أدوات ) (Additionalوﯾﺤﺘﻮى ﻋﻠﻰ ﻧﻔﺲ ﺧﺼﺎﺋﺺ اﻟﻜﺎﺋﻦ ) (Buttonإﺿﺎﻓﺔ إﻟﻰ
ﺧﺼﺎﺋﺺ أﺧﺮى ﻣﻦ أھﻤﮭﺎ:
oاﻟﺨﺎﺻﯿﺔ ) (Glyphوھﻲ ﻣﻦ ﻧﻮع ) (TBitmapوھﻲ ﺗﺤﺪد ﺻﻮرة ﻣﻦ ﻧﻮع ) (bmpواﻟﺘﻲ ﺳﺘﻈﮭﺮ
ﻋﻠﻰ اﻟﺰر .ﻹدراج ﺻﻮرة اﺿﻐﻂ ﻋﻠﻰ ) (...ﻓﻲ اﻟﺨﺎﺻﯿﺔ ) (Glyphﻓﯿﻈﮭﺮ ﻣﺮﺑﻊ ﺗﺤﺮﯾﺮ اﻟﺼﻮرة
).(Picture Editor
اﺿﻐﻂ ﻋﻠﻰ اﻟﺰر ) (Loadﻓﯿﻈﮭﺮ ﻣﺮﺑﻊ ﺗﺤﻤﯿﻞ اﻟﺼﻮرة ) ،(Load Pictureاﺧﺘﺮ ﻣﻠﻒ اﻟﺼﻮرة ) (bmpوﻣﻦ
ﺛﻢ اﺿﻐﻂ ﻋﻠﻰ ).(Open
3
O. M. Fares دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ /اﻟﺪرس )(10
ﺗﻈﮭﺮ اﻟﺼﻮرة اﻟﺘﻲ ﺗﻢ اﺧﺘﯿﺎرھﺎ ﻋﻠﻰ ﻣﺮﺑﻊ ) ،(Picture Editorاﺿﻐﻂ ) (Okﻓﻲ ﺣﺎﻟﺔ اﻟﻤﻮاﻓﻘﺔ ﻓﺘﻈﮭﺮ اﻟﺼﻮرة
ﻋﻠﻰ اﻟﺰر ﻛﺎﻵﺗﻲ:
ﻣﻼﺣﻈﺔ :ﻋﻨﺪ ﺗﻨﺼﯿﺐ ﺑﺮﻧﺎﻣﺞ دﻟﻔﻲ ﺳﻮف ﺗﺠﺪ ﻣﻠﻒ ﯾﺤﺘﻮي ﻋﻠﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺼﻮرة ﻣﻮﺟﻮد ﻓﻲ
اﻟﻤﺴﺎر اﻟﺘﺎﻟﻲC:\Program Files\Common Files\Borland Shared\Images :
oاﻟﺨﺎﺻﯿﺔ ) :(Kindﯾﻤﻜﻦ اﺧﺘﯿﺎر ﻧﻮع اﻟﺰر ﻣﻦ ﺧﻼل ﻗﺎﺋﻤﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷزرار
اﻻﻓﺘﺮاﺿﯿﺔ ،ﺑﺤﯿﺚ ﺗﺘﻐﯿﺮ اﻟﺨﺎﺻﯿﺔ ) (Captionو) (Glyphﺣﺴﺐ اﻻﺧﺘﯿﺎر ،ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل :اﺿﻐﻂ
ﻋﻠﻰ اﻟﺰر )▼( ﻓﻲ اﻟﺨﺎﺻﯿﺔ ) (Kindﻓﺘﻈﮭﺮ اﻟﻘﺎﺋﻤﺔ اﻵﺗﯿﺔ:
اﺧﺘﺮ ) (bkCancelﺗﻈﮭﺮ ﻛﻠﻤﺔ ) (Cancelﻓﻲ اﻟﺨﺎﺻﯿﺔ ) (Captionوﺗﻈﮭﺮ اﻟﺼﻮرة اﻵﺗﯿﺔ ﻋﻠﻰ اﻟﺰر:
oاﻟﺨﺎﺻﯿﺔ ) (Layoutﺗﺤﺪد ﻣﻜﺎن ﻇﮭﻮر اﻟﺼﻮرة ﻋﻠﻰ اﻟﺰر ،وﯾﻤﻜﻦ أن ﺗﻜﻮن اﺣﺪ اﻻﺣﺘﻤﺎﻻت اﻵﺗﯿﺔ:
§ blGlyphLeftﯾﺴﺎر اﻟﻨﺺ.
§ blGlyphRightﯾﻤﯿﻦ اﻟﻨﺺ.
§ blGlyphTopاﻋﻠﻲ اﻟﻨﺺ.
§ blGlyphBottomأﺳﻔﻞ اﻟﻨﺺ.
ﻻﺣﻆ أن اﻟﻘﯿﻤﺔ اﻻﻓﺘﺮاﺿﯿﺔ ھﻲ.(blGlyphLeft) :
4
O. M. Fares دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ /اﻟﺪرس )(10
وھﻨﺎك ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ اﻟﺘﻲ ﺗﻌﻤﻞ ﻋﻨﺪﻣﺎ ﺗﻜﻮن ﻗﯿﻤﺔ اﻟـ) (GroupIndexأﻛﺒﺮ ﻣﻦ .0اﻟﺨﺎﺻﯿﺘﯿﻦ اﻟﺘﺎﻟﯿﺘﯿﻦ ﯾﻜﻮن
ﻟﮭﻤﺎ ﺗﺄﺛﯿﺮ ﻓﻘﻂ ﻓﻲ ﺣﺎﻟﺔ ) (GroupIndexاﻛﺒﺮ ﻣﻦ .0
oاﻟﺨﺎﺻﯿﺔ ) (Downﻣﻦ ﻧﻮع ) (Booleanوھﻲ ﺗﺤﺪد ﻣﺎ إذا ﻛﺎن اﻟﺰر ﻓﻲ وﺿﻌﯿﺔ ) (upأو ).(Down
oاﻟﺨﺎﺻﯿﺔ ) (AllowAllUpﻣﻦ ﻧﻮع ).(Boolean
اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﯾﻤﺜﻞ ﺛﻼﺛﺔ أزرار ) (SpeedButtonوﺗﺤﻤﻞ ) (GroupIndexﯾﺴﺎوي ،1اﻟﺰر رﻗﻢ ) (1ﻓﻲ ﺣﺎﻟﺔ
) .(Down = Trueاﻷزرار اﻷﺧﺮى ) (3 ،2ﻓﻲ وﺿﻌﯿﺔ ) .(Down = Falseﻋﻨﺪ اﻟﻀﻐﻂ ﻋﻠﻰ أي زر ﺧﻼف
اﻟﺰر رﻗﻢ 1ﯾﺼﺒﺢ اﻟﺰر اﻟﺘﻲ ﺗﻢ ﺿﻐﻄﮫ ﻓﻲ وﺿﻌﯿﺔ ) (Downأﻣﺎ اﻟﺰر رﻗﻢ 2ﻓﯿﺼﺒﺢ ﻓﻲ وﺿﻌﯿﺔ ).(Up
ھﺬا اﻟﻜﺎﺋﻦ ) (MaskEditﯾﺘﺸﺎرك ﻣﻊ ﺟﻤﯿﻊ ﻛﺎﺋﻨﺎت ﺗﺤﺮﯾﺮ اﻟﻨﺼﻮص ﻓﻲ اﻟﻌﺪﯾﺪ ﻣﻦ اﻟﺨﺼﺎﺋﺺ واﻷﺣﺪاث،
إﺿﺎﻓﺔ إﻟﻰ ﺧﺼﺎﺋﺺ أﺧﺮى ﻣﻦ أھﻤﮭﺎ:
oاﻟﺨﺎﺻﯿﺔ ) (EditMaskوھﻲ ﺧﺎﺻﯿﺔ ﻣﻦ ﻧﻮع ) (Stringوھﻲ ﺗﺤﺪد اﻟﺼﯿﻐﺔ اﻟﺘﻲ ﺳﯿﻈﮭﺮ ﺑﮭﺎ اﻟﻨﺺ.
ﻋﻨﺪ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺰر ) (...ﯾﻈﮭﺮ ﻣﺮﺑﻊ ) ،(Input Mask Editorوﯾﻈﮭﺮ إﻟﻰ اﻟﯿﻤﯿﻦ ﺑﻌﺾ اﻟﻌﯿﻨﺎت
ﻣﺜﻞ :اﻟﺘﺎرﯾﺦ واﻟﻮﻗﺖ واﻟﺮﻣﺰ اﻟﺒﺮﯾﺪي ورﻗﻢ ھﺎﺗﻒ.
إﻟﻰ اﻟﯿﺴﺎر ﯾﻈﮭﺮ ﻣﺮﺑﻊ ) (Input Maskوﻣﺮﺑﻊ ) (Character for Blankوھﻮ اﻟﺮﻣﺰ اﻟﺬي ﺳﯿﻈﮭﺮ ﺑﺪل
اﻟﻔﺮاغ ﻓﻲ ) (MaskEditوﻣﺮﺑﻊ ) (Test Inputﯾﻤﻜﻦ اﺧﺘﺒﺎر اﻹدﺧﺎل وﻣﺸﺎھﺪة اﻟﻨﺺ ﻋﻦ ﻃﺮﯾﻖ ھﺬا اﻟﻤﺮﺑﻊ.
ﻟﻤﺰﯾﺪ ﻣﻦ اﻟﺘﻔﺎﺻﯿﻞ راﺟﻊ ﻣﻠﻒ اﻟﺼﻮت واﻟﺼﻮرة اﻟﻤﺮﻓﻖ.
5
O. M. Fares دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ /اﻟﺪرس )(10
ھﺬا اﻟﻤﺜﺎل ﯾﺨﺼﺺ اﻟﻨﺺ )' ('Delphi Languageﻓﻲ اﻟﺨﻠﯿﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻌﻤﻮد اﻟﺜﺎﻧﻲ واﻟﺼﻒ اﻟﺜﺎﻟﺚ.
ﻣﺜﺎل آﺧﺮ:
ﻓﻲ ھﺬا اﻟﻤﺜﺎل ﯾﺘﻢ ﺗﺨﺼﯿﺺ اﻟﻘﯿﻤﺔ ) (1ﻟﻠﻤﺘﻐﯿﺮ ) (kواﻟﺬي ﺳﻨﺴﺘﺨﺪﻣﮫ ﻛﻌﺪاد ﻓﻲ ﻣﺜﺎﻟﻨﺎ ھﺬا ،ﺑﻌﺪ ذﻟﻚ ﯾﺘﻢ اﺳﺘﺨﺪام
ﺣﻠﻘﺘﻲ ) ،(Forداﺧﻞ اﻟﺤﻠﻘﺘﯿﻦ ﯾﺘﻢ ﺗﺨﺼﯿﺺ ﻗﯿﻤﺔ ) (kﻟﻠﺨﻠﯿﺔ ] [i,jﺑﻌﺪ ﺗﺤﻮﯾﻠﮭﺎ إﻟﻰ ) (Stringوﻣﻦ ﺛﻢ إﺿﺎﻓﺔ 1
إﻟﻰ ) ،(kﻓﺘﻈﮭﺮ اﻟﻨﺘﯿﺠﺔ ﻛﺎﻵﺗﻲ:
ﻻﺣﻆ أن اﻟﺼﻔﻮف واﻷﻋﻤﺪة ﻋﺪدھﺎ ) (4 ×4إﺿﺎﻓﺔ إﻟﻰ اﻟﺼﻒ واﻟﻌﻤﻮد اﻟﺬﯾﻦ ﯾﻈﮭﺮان ﺑﺎﻟﻠﻮن اﻟﻤﺨﺎﻟﻒ وﺗﺮﺗﯿﺒﮭﻤﺎ
ﺻﻔﺮ .ﻟﺘﻐﯿﯿﺮ ﻋﺪد اﻟﺼﻔﻮف واﻷﻋﻤﺪة ﯾﻤﻜﻦ ذﻟﻚ ﻋﻦ ﻃﺮﯾﻖ ﺗﻐﯿﯿﺮ اﻟﻘﯿﻤﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺨﺎﺻﯿﺘﯿﻦ:
oاﻟﺨﺎﺻﯿﺔ ) (ColCountوھﻲ ﻣﻦ ﻧﻮع ) (Integerوﺗﺤﺪد ﻋﺪد اﻷﻋﻤﺪة.
oاﻟﺨﺎﺻﯿﺔ ) (RowCountوھﻲ ﻣﻦ ﻧﻮع ) (Integerوﺗﺤﺪد ﻋﺪد اﻟﺼﻔﻮف.
6
O. M. Fares (10) اﻟﺪرس/دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ
ھﺬا اﻟﻤﺜﺎل ﯾﻈﮭﺮ رﺳﺎﻟﺔ ﺗﺤﺘﻮي ﻋﻠﻰ رﻗﻢ اﻟﻌﻤﻮد ورﻗﻢ اﻟﺼﻒ ﻋﻨﺪ اﻟﻀﻐﻂ ﻋﻠﻰ أي ﺧﻠﯿﺔ ﻣﻦ ﺧﻼﯾﺎ اﻟﻜﺎﺋﻦ
.(StringGrid )
.إﺿﺎﻓﺔ إﻟﻰ اﻟﺨﺎﺻﯿﺘﯿﻦ اﻟﺘﺎﻟﯿﺘﯿﻦ واﻟﺘﻲ ﺗﺤﺪدان اﻟﻌﺮض اﻻﻓﺘﺮاﺿﻲ ﻟﻸﻋﻤﺪة واﻻرﺗﻔﺎع اﻻﻓﺘﺮاﺿﻲ ﻟﻠﺼﻔﻮف
.(DefaultColWidth) اﻟﺨﺎﺻﯿﺔo
(DefaultRowHeight) اﻟﺨﺎﺻﯿﺔo
:ﻣﺜﺎل
( ﻟﻠﺨﺎﺻﯿﺔEdit2) ( واﻟﻘﯿﻤﺔ ﻓﻲColWidths) ( ﻟﻠﺨﺎﺻﯿﺔEdit1) اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﯾﻘﻮم ﺑﺘﺨﺼﯿﺺ اﻟﻘﯿﻤﺔ ﻓﻲ
.(RowHeights)
for i := 1 to 4 do
begin
StringGrid1.RowHeights[i]:=StrToInt(Edit2.Text);
end;
end;
7
O. M. Fares دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ /اﻟﺪرس )(10
ﻣﺜﺎل آﺧﺮ:
ھﺬا اﻟﻤﺜﺎل ﯾﻌﻄﻰ ﻧﻔﺲ ﻧﺘﯿﺠﺔ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ وﻟﻜﻦ ﺑﺎﺳﺘﺨﺪام اﻟﺨﺎﺻﯿﺔ ) (DefaultColWidthواﻟﺨﺎﺻﯿﺔ
).(DefaultRowHeight
اﻟﺼﻒ اﻟﺬي ﯾﻜﻮن ﻓﻲ أﻋﻠﻰ ) (StringGridوﯾﻈﮭﺮ ﺑﻠﻮن ﻣﺨﺎﻟﻒ ﯾﺴﻤﻰ ) ،(FixedRowواﻟﻌﻤﻮد اﻟﺬي ﯾﻈﮭﺮ
ﻋﻠﻰ اﻟﯿﺴﺎر ﺑﻠﻮن ﻣﺨﺎﻟﻒ ﯾﺴﻤﻰ ) .(FixedColاﻟﺨﺼﺎﺋﺺ اﻟﺜﻼث اﻟﺘﺎﻟﯿﺔ ﺗﺘﺤﻜﻢ ﻓﻲ ﺳﻠﻮك ﺗﻠﻚ اﻟﺼﻔﻮف
واﻷﻋﻤﺪة:
8
O. M. Fares دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ /اﻟﺪرس )(10
ﺗﻈﮭﺮ اﻟﺼﻮرة اﻟﺘﻲ ﺗﻢ اﺧﺘﯿﺎرھﺎ ﻋﻠﻰ ﻣﺮﺑﻊ ) ،(Picture Editorاﺿﻐﻂ ) (Okﻓﻲ ﺣﺎﻟﺔ اﻟﻤﻮاﻓﻘﺔ ﻓﺘﻈﮭﺮ اﻟﺼﻮرة
ﻋﻠﻰ اﻟﻜﺎﺋﻦ.
oاﻟﺨﺎﺻﯿﺔ ) (Centerوھﻲ ﻣﻦ ﻧﻮع ) (Booleanإذا ﻛﺎﻧﺖ ) (Trueﻓﺎن اﻟﺼﻮرة ﺳﺘﻜﻮن ﻓﻲ ﻣﻨﺘﺼﻒ
اﻟﻜﺎﺋﻦ .ﻻﺣﻆ اﻟﻔﺮق ﺑﯿﻦ اﻟﺼﻮرة اﻟﺘﻲ ﻓﻲ اﻟﯿﻤﯿﻦ واﻟﺼﻮرة اﻟﺘﻲ ﻓﻲ اﻟﯿﺴﺎر.
9
O. M. Fares دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ /اﻟﺪرس )(10
oاﻟﺨﺎﺻﯿﺔ ) (Stretchوھﻲ ﻣﻦ ﻧﻮع ) (Booleanإذا ﻛﺎﻧﺖ ) (Trueﻓﺈن اﻟﺼﻮرة ﺳﻮف ﯾﺘﻢ ﻣﻄﮭﺎ ﻟﺘﺄﺧﺬ
ﺣﺠﻢ اﻟﻜﺎﺋﻦ ﺑﺤﯿﺚ إذا ﺗﻐﯿﺮت ﺣﺠﻢ اﻟﻜﺎﺋﻦ ﯾﺘﻐﯿﺮ ﺣﺠﻢ اﻟﺼﻮرة أﯾﻀﺎ.
oاﻟﺨﺎﺻﯿﺔ ) (AutoSizeﻣﻦ ﻧﻮع ) (Booleanﻓﻲ ﺣﺎﻟﺔ ) (Trueﯾﺄﺧﺬ اﻟﻜﺎﺋﻦ ﺣﺠﻢ اﻟﺼﻮرة ﺗﻠﻘﺎﺋﯿﺎ.
oاﻟﺨﺎﺻﯿﺔ ) :(Canvasوھﻲ ﻣﻦ ﻧﻮع ) (TCanvasوﺳﻮف ﻧﺘﻮﻗﻒ ﻗﻠﯿﻼ ﻣﻊ ھﺬه اﻟﺨﺎﺻﯿﺔ وأرﯾﺪ ﻣﻨﻜﻢ
ﺑﻌﺾ اﻟﺘﺮﻛﯿﺰ ،ﻓﻲ اﻟﺒﺪاﯾﺔ دﻋﻮﻧﺎ ﻧﺸﺮح ﻣﻌﻨﻰ ﻛﻠﻤﺔ ) ،(Canvasھﺬه اﻟﻜﻠﻤﺔ ﺗﻌﻨﻲ :ﻧﻮع ﻣﻦ اﻟﻘﻤﺎش اﻟﺬي
ﯾﺴﺘﺨﺪم ﻓﻲ ﺻﻨﻊ أﺷﺮﻋﺔ اﻟﺴﻔﻦ واﻟﺨﯿﺎم وﯾﺴﺘﺨﺪﻣﮫ اﻟﺮﺳﺎﻣﻮن ﻟﻠﺮﺳﻢ ﻋﻠﯿﮫ .ھﺬه اﻟﺨﺎﺻﯿﺔ ﯾﻤﻜﻦ
اﺳﺘﺨﺪاﻣﮭﺎ ﻟﻠﺮﺳﻢ ﻋﻠﻰ اﻟﻜﺎﺋﻦ ،ﻓﻤﺜﻼ ﯾﻤﻜﻦ رﺳﻢ ﺧﻄﻮط ﻣﺴﺘﻘﯿﻤﺔ أو أﺷﻜﺎل ھﻨﺪﺳﯿﺔ أو ﻧﺺ ﻋﻠﻰ اﻟﻜﺎﺋﻦ
وﺗﻠﻮﯾﻨﮭﺎ أو ﺣﺘﻰ إﺿﺎﻓﺔ ﺻﻮرة .أي ﻛﺎﺋﻦ ﯾﺤﺘﻮي ﻋﻠﻰ اﻟﺨﺎﺻﯿﺔ ) (Canvasﯾﻤﻜﻦ اﻟﺮﺳﻢ ﻋﻠﯿﮫ .ﻣﺜﻼ
اﻟﻜﺎﺋﻦ ) (Formﯾﺤﺘﻮي ﻋﻠﻰ ھﺬه اﻟﺨﺎﺻﯿﺔ أﯾﻀﺎ ،إذا ﯾﻤﻜﻦ اﻟﺮﺳﻢ ﻋﻠﻰ اﻟﻔﻮرم اﻧﻈﺮ إﻟﻰ اﻟﻜﻮد اﻟﺘﺎﻟﻲ:
ﺳﻮف ﻧﻘﻮم ﺑﺮﺳﻢ ﺧﻂ ﻣﺴﺘﻘﯿﻢ ﻣﻦ اﻟﻨﻘﻄﺔ ) (100,100إﻟﻰ اﻟﻨﻘﻄﺔ ) .(200,200وﺳﻮف ﻧﻘﻮم ﺑﺘﻐﯿﯿﺮ ﻟﻮن وﺳﻤﻚ
اﻟﺨﻂ.
اﻟﺴﻄﺮ اﻷول ﻓﻲ اﻟﻜﻮد ﻟﺘﻐﯿﯿﺮ ﻟﻮن اﻟﺨﻂ إﻟﻰ اﻷﺣﻤﺮ .اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ ﻓﻲ اﻟﻜﻮد ﻟﺘﻐﯿﯿﺮ ﺳﻤﻚ اﻟﺨﻂ إﻟﻰ .3اﻟﺴﻄﺮ
اﻟﺜﺎﻟﺚ ﻓﻲ اﻟﻜﻮد ﻟﺘﺤﺪﯾﺪ ﻧﻘﻄﺔ ﺑﺪاﯾﺔ اﻟﺨﻂ .اﻟﺴﻄﺮ اﻟﺮاﺑﻊ ﻓﻲ اﻟﻜﻮد ﻟﺘﺤﺪﯾﺪ ﻧﻘﻄﺔ ﻧﮭﺎﯾﺔ اﻟﺨﻂ.
ﯾﻤﻜﻦ أﯾﻀﺎ رﺳﻢ ﺻﻮرة ﻋﻠﻰ اﻟﻔﻮرم ،دﻋﻮﻧﺎ ﻧﻀﻊ ﻛﺎﺋﻦ ) (Imageﻋﻠﻰ اﻟﻔﻮرم ،وﻧﺨﺼﺺ ﻟﮫ ﺻﻮرة ،وﻧﻀﻊ
ﻛﺎﺋﻦ ) (Buttonوﻓﻲ اﻟﺤﺪث ) (OnClickﻧﻜﺘﺐ اﻟﻜﻮد اﻟﺘﺎﻟﻲ:
ﻛﻤﺎ ﻧﻌﻠﻢ أن اﻟﺼﻮرة ھﻲ ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻟﻨﻘﺎط ) (Pixelsوﻛﻞ ﻧﻘﻄﺔ ) (pixelھﻲ ﻋﺒﺎرة ﻋﻦ ﻗﯿﻤﺔ رﻗﻤﯿﺔ
ﻣﻦ ﻧﻮع ) (TColorوﻋﻨﺪ ﺗﺠﻤﯿﻊ ھﺬه اﻟﻨﻘﺎط ﻣﻌﺎ ﺗﺘﻜﻮن اﻟﺼﻮرة .إذا ﺳﻮف ﻧﺴﺘﺨﺪم ھﺬا اﻟﻤﺒﺪأ ﻣﻊ ).(Canvas
ﯾﺤﺘﻮي ) (Canvasﻋﻠﻰ ﺧﺎﺻﯿﺔ ﺗﺴﻤﻰ ) (Pixelsوھﻲ ﺗﻜﻮن ﻋﻠﻰ ﺻﻮرة )] (canvas.pixels[x,yﺣﯿﺚ أن
) (x,yﻋﺒﺎرة ﻋﻦ ﻗﯿﻢ ﻣﻦ ﻧﻮع ) (Integerﺗﻤﺜﻞ إﺣﺪاﺛﯿﺎت اﻟﻨﻘﻄﺔ .ﺳﻮف ﻧﺴﺘﺨﺪم ﺣﻠﻘﺘﻲ ) (Forاﻷوﻟﻰ ﺗﺒﺪأ ﻣﻦ
ﺻﻔﺮ إﻟﻰ أﻗﺼﻰ ﻋﺮض ﻟﻠﻜﺎﺋﻦ ) (Imageواﻟﺜﺎﻧﯿﺔ ﻣﻦ ﺻﻔﺮ إﻟﻰ أﻗﺼﻰ ارﺗﻔﺎع ﻟﻠﻜﺎﺋﻦ ،وﺳﻨﻘﻮم ﺑﺘﺨﺼﯿﺺ ﻛﻞ
ﻧﻘﻄﺔ ﻋﻠﻰ اﻟﺼﻮرة ﻟـ) .(Form.Canvasوھﻜﺬا ﯾﺘﻢ رﺳﻦ اﻟﺼﻮرة ﻋﻠﻰ اﻟﻔﻮرم.
10
O. M. Fares (10) اﻟﺪرس/دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ
: اﻧﻈﺮ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ.ﻋﻨﺪ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺰر ﯾﺘﻢ رﺳﻢ اﻟﺼﻮرة اﻟﺘﻲ ﻓﻲ أﻋﻠﻰ اﻟﯿﺴﺎر ﻋﻠﻰ اﻟﻔﻮرم
11
O. M. Fares دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ /اﻟﺪرس )(10
oاﻟﺨﺎﺻﯿﺔ ) (Penوھﻲ ﺗﺤﺪد ﻧﻤﻂ اﻟﺨﻂ وﺗﺤﺘﻮي ﻋﻠﻰ اﻟﺨﺼﺎﺋﺺ اﻟﺘﺎﻟﯿﺔ (color) :و)(mode
و) (styleو) .(widthﺣﯿﺚ ﺗﺤﺪد ﻟﻮن وﺳﻤﻚ وﻧﻤﻂ اﻟﺨﻂ.
ﻋﺒﺎرة ﻋﻦ ﻛﺎﺋﻦ ﻏﯿﺮ ﻣﺮﺋﻲ ﯾﺴﺘﺨﺪم ﻛﻤﺆﻗﺖ ﻟﺘﻨﻔﯿﺬ ﻋﻤﻠﯿﺔ ﻣﻌﯿﻨﺔ ﻓﻲ ﻓﺘﺮات
Timer
زﻣﻨﯿﺔ ﻣﺤﺪدة.
وھﻮ اﺣﺪ ﻛﺎﺋﻨﺎت ﺷﺮﯾﻂ أدوات ) (Systemوﻣﻦ أھﻢ ﺧﺼﺎﺋﺺ ھﺬا اﻟﻜﺎﺋﻦ:
oاﻟﺨﺎﺻﯿﺔ ) (Intervalوھﻲ ﻣﻦ ﻧﻮع ) (Booleanوﺗﺘﺤﻜﻢ ﻓﻲ ﻣﺎ إذا ﻛﺎن اﻟﻜﺎﺋﻦ ﯾﺴﺘﺠﯿﺐ ﻟﺤﺪث
) .(OnTime
oاﻟﺨﺎﺻﯿﺔ ) (Enabledوھﻲ ﻣﻦ ﻧﻮع ) (Cardinalوھﻮ اﺣﺪ أﻧﻮاع ) ،(Integerھﺬه اﻟﺨﺎﺻﯿﺔ ﺗﺤﺪد
اﻟﻔﺘﺮة اﻟﺰﻣﻨﯿﺔ ﻟﻠﻤﺆﻗﺖ )ﻣﻠﻠﻲ ﺛﺎﻧﯿﺔ(.
ﻣﺜﻼ إذا ﻛﺎﻧﺖ اﻟﺨﺎﺻﯿﺔ ) (Intervalﺗﺴﺎوي 1000ﻓﮭﺬا ﯾﻌﻨﻲ ) 1ﺛﺎﻧﯿﺔ( .وﺑﺎﻟﺘﺎﻟﻲ ﺳﯿﺘﻢ ﺗﻨﻔﯿﺬ اﻟﻜﻮد ﻓﻲ
) (OnTimeﻛﻞ واﺣﺪ ﺛﺎﻧﯿﺔ.
12
O. M. Fares (10) اﻟﺪرس/دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ
:( ﻧﻜﺘﺐ اﻟﻜﻮد اﻟﺘﺎﻟﻲOnTime ) ( ﻋﻠﻰ اﻟﻔﻮرم وﻓﻲ اﻟﺤﺪثTimer) ﻟﻨﻀﻊ اﻟﻜﺎﺋﻦ
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
k: Integer;
implementation
{$R *.DFM}
end.
13
O. M. Fares دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ /اﻟﺪرس )(10
ﺗﻤﺮﯾﻦ :اﺳﻤﺤﻮا ﻟﻲ أن أﻗﺪم ﻟﻜﻢ ھﺬا اﻟﺘﻤﺮﯾﻦ .ﺻﻤﻢ ﺑﺮﻧﺎﻣﺞ دﻟﻔﻲ ﻋﻠﻰ ھﯿﺌﺔ ﺳﺎﻋﺔ رﻗﻤﯿﺔ ﺑﺤﯿﺚ ﺗﻈﮭﺮ
اﻟﺴﺎﻋﺎت واﻟﺪﻗﺎﺋﻖ واﻟﺜﻮاﻧﻲ واﻷﺟﺰاء ﻣﻦ اﻟﺜﺎﻧﯿﺔ ﻓﻲ اﻟﻜﺎﺋﻦ ).(Lable
Var
;Form1: TForm1
;x, y: Integer
implementation
}{$R *.DFM
end.
ﻣﺜﺎل آﺧﺮ :دﻋﻮﻧﺎ ﻧﺠﺮب ھﺬا اﻟﻤﺜﺎل :ﺳﻮف ﻧﺴﺘﺨﺪم اﻟﻜﺎﺋﻦ ) (Shapeواﻟﻜﺎﺋﻦ ) ،(Timerوﻓﻲ اﻟﺤﺪث
) (OnTimeﻧﻜﺘﺐ اﻟﻜﻮد اﻟﺘﺎﻟﻲ:
case c of
:1 ;x:=x+1
:2 ;x:=x-1
;end
case d of
:1 ;y:=y+1
:2 ;y:=y-1
;end
;Shape1.Top:=y
;Shape1.Left:=x
;End
إﻟﻰ ھﻨﺎ ﯾﻨﺘﮭﻲ اﻟﺪرس اﻟﻌﺎﺷﺮ ﻣﻦ دروس ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ ،أرﺟﻮا ﻣﻦ اﷲ اﻟﻌﻠﻲ اﻟﻘﺪﯾﺮ أن ﯾﻜﻮن ھﺬا اﻟﺪرس
واﺿﺤﺎ ﻟﻠﺠﻤﯿﻊ ،وإذا ﻛﺎن ﻟﺪﯾﻜﻢ أي اﺳﺘﻔﺴﺎرات أو اﻗﺘﺮاﺣﺎت ﻓﺎرﺟﻮا أن ﻻ ﺗﺘﺮددوا ﻓﻲ ﻃﺮﺣﮭﺎ.
ﻧﻠﺘﻘﻲ ﻓﻲ دروس أﺧﺮى إن ﺷﺎء اﷲ .ﺷﻜﺮا!...
14