You are on page 1of 20

‫أﺳﺲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ دﻟﻔﻲ‬

‫) ﺷﺮح ﻣﺒﺴﻂ ﻟﻠﺮاﻏﺒﯿﻦ ﻓﻲ ﻓﮫﻢ ﻣﺴﺎر ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﺑﺼﻔﺔ ﻋﺎﻣﺔ و ﻟﻐﺔ دﻟﻔﻲ ﻋﻠﻰ وﺟﻪ اﻟﺨﺼﻮص (‬

‫ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﯿﻢ‬

‫ﺗﻤﮫﯿﺪ‪:‬‬

‫ﺳﻨﻘﻮم ﻓﻲ ھﺬا اﻟﻜﺘﯿﺐ إن ﺷﺎء اﷲ ﺑﺎﻗﺘﺤﺎم ﻋﺎﻟﻢ اﻟﺒﺮﻣﺠـﺔ اﻟﺤﺎﺳـﻮﺑﯿﺔ‪ ,‬ﻣﺘﺨـﺬﻳﻦ ﻣـﻦ ﻟﻐـﺔ دﻟﻔـﻲ ﻣﻄﯿـﺔ‬
‫ﻟﺒﻠﻮغ اﻟﻐﺎﻳﺔ اﻟﺘﻲ ﻳﺼﺒﻮا إﻟﯿﮫﺎ ﻛﻞ ﻣﺒﺮﻣﺞ ﻣﺒﺘﺪئ أو أي ﺷﺨﺺ ﻳﻨﻮي اﻟﺒﺪاﻳﺔ ﻓﻲ ھﺬا اﻟﻌﺎﻟﻢ اﻟﺮﺣﺐ‪.‬‬
‫ﻋﺎﻟﻢ اﻟﺒﺮﻣﺠﺔ ﺑﻜﻞ ﺗﺄﻛﯿﺪ ﻳﺮﺣﺐ ﺑﻜﻞ ﺿﯿﻮﻓﻪ و ﻻ ﻳﻤﯿﺰ ﺑﯿﻦ ﻋﺎﻟﻢ رﻳﺎﺿﯿﺎت ﺗﻠﻘﻰ ﺗﻌﻠﯿﻤﻪ ﺑﺄﺳﻠﻮب أﻛـﺎدﻳﻤﻲ أو‬
‫ھﺎو ﻟﮫﺬا اﻟﻤﺠﺎل‪.‬‬

‫ﻳﺠﺪر ﺑﻨﺎ اﻟﺬﻛﺮ أن ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﺗﺘﻄﻠﺐ ﺗﻔﺮغ ذھﻨﻲ ‪ ,‬و أأﻛﺪ ﻋﻠﻰ ھﺬه اﻟﻌﺒﺎرة‪ ,‬ﻛﻤﺎ أﻋﺘﻘـﺪ أن أيّ إﻏﻔـﺎل أو‬
‫اﺑﺘﻌﺎد ﻋﻦ اﻟﻌﺎﻟﻢ اﻟﺴﺒﺮاﻧﻲ ﻗﺪ ﻳﻜﻠﻒ اﻟﻤﺒﺮﻣﺞ إﺿـﺎﻋﺔ اﻟﻜﺜﯿـﺮ ﻣـﻦ اﻟﻮﻗـﺖ ﻟﻤﺮاﺟﻌـﺔ ﻣـﺎ ﺗﻌﻠﻤـﻪ ﺳـﺎﺑﻘﺎ ‪.‬ﻟﮫـﺬا‬
‫ﻳﻨﺒﻐﻲ ﻋﻠﻰ ﻛﻞ ﻣﻦ أراد اﻟﺨﻮض ﻓﻲ ھﺬا اﻟﻤﺠﺎل أن ﻳﺤﺮص ﻛﻞ اﻟﺤﺮص ﻋﻠﻰ ﺗﺨـﺼﯿﺺ اﻟﻜﺜﯿـﺮ ﻣـﻦ اﻟﻮﻗـﺖ‬
‫ﻟﺘﻌﻠﻢ اﻟﺒﺮﻣﺠﺔ ‪ ,‬أيّ ﻟﻐﺔ ﺑﺮﻣﺠﺔ‪ ,‬ﺳﻮاء أ ﻛﺎﻧﺖ ﻣﻦ ﻋﮫﺪ اﻟﺴﺘﯿﻨﺎت أو وﻟﯿﺪة اﻟﯿﻮم‪.‬ﻛـﺬﻟﻚ ﻳﻨﺒﻐـﻲ أن ﻻ ﻳـﺸﻌﺮ‬
‫اﻟﻤﺮء ﺑﺎﻹﺣﺒﺎط ﻣﺴﺘﺴﻠﻤﺎ ﻟﻠﯿﺄس ﻓﻲ ﺣﺎﻟﺔ ﻣﺎ أﻣﻀﻰ اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻮﻗﺖ دون اﻟﻮﺻﻮل إﻟﻰ ﻧﺘﯿﺠﺔ ﻣﻌﯿﻨﺔ‪ ,‬ﻓﻘﺪ‬
‫ﻻﺣﻈﺖ أن اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻤﺒﺮﻣﺠﯿﻦ ﻳﺴﺘﺴﻠﻤﻮن ﺑﻤﺠﺮد أن ﻳـﻮاﺟﮫﮫﻢ ﻋـﺎﺋﻖ ﺑـﺴﯿﻂ‪.‬ﻓﻘـﺪ ﻳﻘـﻮل ﻣﺒـﺮﻣﺞ اﻟﯿـﻮم‬
‫ﻛﯿﻒ ﻟﻲ أن أﺗﺎﺑﻊ اﻟﺒﺮﻣﺠﺔ و أﻧﺎ ﻟﻢ أﺳﺘﻄﯿﻊ ﺣـﻞ ﻣـﺸﻜﻠﺔ ﺑـﺴﯿﻄﺔ ﻛﮫـﺬه أﻣـﺎم اﻟﻜـﻢ اﻟﮫﺎﺋـﻞ ﻣـﻦ اﻷدوات و‬
‫اﻟﺘﺴﮫﯿﻼت اﻟﺘـﻲ أﺿـﺤﺖ ﻣﺘـﻮﻓﺮة ‪ ,‬ﺑﯿﻨﻤـﺎ أﺳـﻼﻓﻨﺎ ﻓـﻲ ﻋـﺼﺮ اﻟﻜﻮﺑـﻮل اﺳـﺘﻄﺎﻋﻮا ﻋﻤـﻞ اﻟﻜﺜﯿـﺮ و إن ﻗﻠّـﺖ‬
‫اﻹﻣﻜﺎﻧﯿﺎت‪.‬‬

‫ﺟﺮت اﻟﻌﺎدة ﻋﻨﺪ إﺧﺘﯿﺎر ﻋﻤﻞ ﻣﺎ أن ﻳﻄﺮح اﻟﺴﺆال اﻟﺘﺎﻟﻲ ‪ :‬ﻟﻤﺎذا ھﺬا اﻟﻌﻤﻞ ﺑﺎﻟﺬات؟‬
‫ﻧﺤﻦ ﻟﻦ ﻧﺠﯿﺐ ﻋﻦ ھﺬا اﻟﺴﺆال ﻷﻧﻪ ﻣﺘﻌﻠﻖ ﺑﺎﻟﻘﺎرئ ﺑﺼﻔﺔ ﺧﺎﺻﺔ و ﺣﺪﻳﺜﻨﺎ ﻋﻦ اﻟﺒﺮﻣﺠﺔ اﻟﯿﻮم ﻳﺒـﺪو ﺑـﺸﻜﻞ‬
‫ﻋﺎم و إن ﻛﻨﺎ ﻗﺪ إﺧﺘﺮﻧﺎ اﻟﺪﻟﻔﻲ ﻟﻜﺜﯿﺮ ﻣﻦ اﻟﺼﻔﺎت اﻟﻤﻤﯿﺰة ﻓﯿﮫﺎ‪.‬ﻟﻜﻦ و ﻣﻦ أﺟﻞ اﻟﻮﺻﻮل إﻟﻰ ﺟـﻮاب ﺗﻘﺮﻳﺒـﻲ‬
‫ﻟﻠﺴﺆال اﻟﻤﻄﺮوح ‪ ,‬ﻻ ﺑﺪ ﻟﻨﺎ ﻣﻦ ﺗﺼﻨﯿﻒ اﻟﻤﺒﺮﻣﺠﯿﻦ ﻛﻲ ﻳﻌﺮف ﻛﻞ ﺷﺨﺺ اﻹﺟﺎﺑﺔ اﻟﺘﻲ ﺗﺨﺼﻪ‪.‬‬
‫ﻳﻤﻜﻨﻨﺎ أن ﻧﺼﻨﻒ اﻟﻤﺒﺮﻣﺠﯿﻦ إﻟﻰ ﺻﻨﻔﯿﻦ ‪:‬‬

‫‪ -1‬أﻛﺎدﻣﯿﯿﻦ‪ :‬و ھﻢ اﻟـﺬﻳﻦ ﺗﻠﻘـﻮا ﺗﻌﻠـﯿﻤﮫﻢ ﺑﺄﺳـﻠﻮب أﻛـﺎدﻳﻤﻲ ﻓـﻲ اﻟﺠﺎﻣﻌـﺎت و ﻣﻌﺎھـﺪ اﻟﻜﻤﺒﯿـﻮﺗﺮ و‬
‫اﻹﻋﻼم اﻵﻟﻲ و اﻟﮫﻨﺪﺳﺔ ‪.‬و ﺗﺘﻤﯿﺰ ھﺬه اﻟﻔﺌﺔ ﺑﺎﻟﺪﻗﺔ ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﻧﻈﺮا ﻟﺘﻜﻮن اﻟﻔﻜﺮ اﻟﺒﺮﻣﺠـﻲ ﻟـﺪى‬
‫اﻟﺸﺨﺺ‪ ,‬ﻛﻮن أﻧﻪ ﺗﻠﻘﻰ ﺗﻌﻠﯿﻤﻪ وﻓﻘﺎ ﻟﻤﻨﮫﺞ ﻣﺴﻄﺮ ﻣﻦ ﻗﺒﻞ ﺧﺒﺮاء‪.‬ﻓﻼ ﻳﻤﻜﻦ ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜـﺎل‬
‫أن ﺗﺠﺪ ﻣﺒﺮﻣﺠﺎ ﺑﻠﻐﺔ دﻟﻔﻲ ﻟﻢ ﻳﺴﺒﻖ ﻟﻪ اﻟﻌﻤﻞ ﻋﻠﻰ ﺑﺎﺳﻜﺎل و ﺣﺘﻰ ﻓﻲ ﻳﻮﻣﻨﺎ ھـﺬا‪ ,‬أي ﺑﻌـﺪ أن‬
‫أﺻﺒﺤﺖ ھﺬه اﻟﻠﻐﺔ ﺑﻤﺘﺮﺟﻤﮫﺎ اﻟﺸﮫﯿﺮ ﻣﻦ ﺧﺒﺮ ﻛﺎن ‪ ,‬ذﻟﻚ ﻷﻧﻪ ﺗﻢ دﻣﺠﮫﺎ ﻓﻲ ﻟﻐـﺔ دﻟﻔـﻲ ‪ .‬ﻣـﻊ ﻛـﻞ‬
‫ھﺬا ﻻ ﻳﻤﻜﻦ اﻟﺠﺰم ﺑﺄن ھﺬه اﻟﻔﺌﺔ ﺗﻤﺘﻠﻚ زﻣﺎم اﻷﻣﻮر ﻓﻜﻤﺎ ﻳﻌﻠـﻢ اﻟﻜﺜﯿـﺮ ﻣـﻦ اﻹﺧـﻮة أن ﺟﺎﻣﻌﺎﺗﻨـﺎ‬
‫اﻟﻌﺮﺑﯿﺔ ﺗﻠﺘﺰم ﺑﺎﻟﺠﺎﻧﺐ اﻟﻨﻈﺮي أﻛﺜﺮ ﻣﻦ اﻟﺠﺎﻧﺐ اﻟﺘﻄﺒﯿﻘﻲ‪ .‬ﻓﻼ ﺗﺴﺘﻐﺮب إذا ﻣﺎ وﺟﺪت ﻣﺒﺮﻣﺠﺎ ھﺎو‬
‫ﻳﺸﺮح ﺑﻌﺾ اﻷﻣﻮر ﻓﻲ ﻟﻐﺔ دﻟﻔﻲ ﻟﻸﻛﺎدﻳﻤﻲ و إن ﻛﺎن ھﺬا اﻷﺧﯿﺮ ﻳﺤﻤﻞ ﻗﺎﻋﺪة ﻣﻨﻮﻃـﺔ ﺑﺎﻟﻤﻌﺮﻓـﺔ‬
‫اﻟﺸﺎﻣﻠﺔ ﻟﺨﻔﺎﻳﺎ اﻟﺒﺮﻣﺠﺔ ‪.‬‬

‫‪ -2‬ھﻮاة‪ :‬ﻳﻤﻀﻮن اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻮﻗﺖ أﻣﺎم ﺷﺎﺷﺔ اﻟﻜﻤﺒﯿﻮﺗﺮ ﻣﺪاﻋﺒﯿﻦ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ و اﻟﻔﺄرة‪.‬ﺗﺘﻤﯿﺰ ھﺬه‬
‫اﻟﻔﺌﺔ ﺑﺘﻠﻘﯿﮫﺎ اﻟﻔﻜﺮ اﻟﺒﺮﻣﺠﻲ ﻣﻦ ﺧﻼل اﻟﻤﻄﺎﻟﻌﺔ اﻟﺸﺨﺼﯿﺔ أي ﺑﺸﻜﻞ ﻋﺼﺎﻣﻲ‪ .‬إن اﻹرادة اﻟﻘﻮﻳـﺔ‬
‫و ﺣﺐ اﻛﺘﺸﺎف اﻟﻤﺠﮫﻮل ھﻮ اﻷﻣﺮ اﻟﻼﻓﺖ ﻟﻼﻧﺘﺒـﺎه ﻟـﺪى ھـﺬه اﻟﻔﺌـﺔ‪ ,‬ﻓﻌﻠـﻰ اﻟـﺮﻏﻢ ﻣـﻦ أﻧﮫـﺎ ﻟـﻢ‬
‫ﺗﺘﻠﻘـﻰ ﺗﻌﻠﯿﻤﮫــﺎ وﻓﻘــﺎ ﻟﻤﻨـﺎھﺞ ﻣــﺴﻄﺮة إﻻ أﻧﮫــﺎ ﺗــﺴﺘﻄﯿﻊ ﺑﻠـﻮغ أھــﺪاﻓﮫﺎ ﺑــﺴﮫﻮﻟﺔ ﺧــﺼﻮﺻﺎ و أن‬
‫اﻟﺸﺒﻜﺔ اﻟﻤﻌﻠﻮﻣﺎﺗﯿﺔ أﺻﺒﺤﺖ ﻛﺎﻟﻤﺼﺒﺎح اﻟﺴﺤﺮي ‪.‬أﻛﺘﺐ أي ﻋﺒﺎرة ﺗﺮﻳﺪ اﻟﺒﺤﺚ ﻋﻨﮫـﺎ ﻓـﻲ ‪google‬‬
‫أو ﺑﺎﻗﻲ ﻣﺤﺮﻛﺎت اﻟﺒﺤﺚ و ﺳﺘﻈﮫﺮ ﻟﻚ اﻟﻌﺸﺮات ﻣﻦ اﻟﻨﺘﺎﺋﺞ ‪.‬ﻋﻤﻮﻣﺎ ﻳﻤﻜـﻦ اﻟﻘـﻮل أن ﻋـﺪم اﻻﻟﺘـﺰام‬
‫ﺑﺄي واﺟﺒﺎت ﺑﺮﻣﺠﯿﺔ ھﻮ أﺣﺪ أﺳﺮار ھﺬه اﻟﻔﺌـﺔ ﺛـﻢ إن ﻣﻔﮫـﻮم ﺗﺤﻮﻳـﻞ ﻛـﻞ ﺣﺘﻤﯿـﺔ أو ﻋـﺎﺋﻖ إﻟـﻰ‬
‫ﻣﺤﻔﺰ ھﻮ ﺛﺎﻧﻲ أﺣﺪ أھﻢ أﺳﺮار اﻟﮫﻮاة‪.‬‬

‫ﻛﺬﻟﻚ ﻳﻤﻜﻨﻨﺎ اﻟﺘﻤﯿﯿﺰ ﺑﯿﻦ اﻟﻤﺒﺮﻣﺠﯿﻦ وﻓﻘﺎ ﻟﺤﺎﺟﺎﺗﮫﻢ اﻟﺒﺮﻣﺠﯿﺔ ﻓﺎﻟﺬي ﻳﻌﻤﻞ ﻓﻲ ﻣﺆﺳﺴﺔ ﻟﻠﺒﺮﻣﺠﯿﺎت ﺿﻤﻦ‬
‫ﻓﺮﻳﻖ ﻋﻤﻞ ﻣﺘﻜﺎﻣﻞ ﺑﻜﻞ ﺗﺄﻛﯿﺪ ﻟﯿﺲ ﻛﺎﻟﺸﺨﺺ اﻟﺬي ﻳﻌﻤﻞ ﺑﻤﻔﺮده‪ .‬ﻓﺈذا ﻛﺎن اﻷول ﻳﻌﻤﻞ ﻋﻠﻰ ﺗﻄﻮﻳﺮ ﺑﺮاﻣﺞ‬
‫ﻣﻮﺟﮫﺔ ﻟﻠﺴﻮق ﺗﺘﻄﻠﺐ ﻋﻠﻰ اﻷﻗﻞ أن ﻻ ﺗﺘﻠﻘـﻰ اﺳـﺘﯿﺎء اﻟﺰﺑـﻮن ‪ .‬ﻓـﺈن اﻟﺜـﺎﻧﻲ ﺗﻘﺘـﺼﺮ أﻋﻤﺎﻟـﻪ ﻋﻠـﻰ ﺑـﺮاﻣﺞ‬
‫ﺻﻐﯿﺮة ﺗﺘﺪاول ﻋﻠﻰ ﻣﻮاﻗﻊ اﻹﻧﺘﺮﻧﺖ ﻟﯿﺴﺘﻔﺎد ﻣﻨﮫﺎ ‪,‬ﺳﻮاءا أﻛﺎﻧﺖ ﻣﺠﺎﻧﯿﺔ أو ﺗﺘﻄﻠﺐ اﻟﺪﻓﻊ اﻟﻤﺴﺒﻖ ﻟﻠﺤـﺼﻮل‬
‫ﻋﻠﯿﮫﺎ ‪.‬أﻗﻮل أن اﻟﺬي ﻳﻌﻤﻞ ﺑﻤﻔﺮده ﺗﺠﺪه ﻣﻤﺰﻗ ﺎ ﺑﯿﻦ اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻤﮫﺎم‪ ,‬ﻓﺈذا ﻛﺎن ﻳﻄﻮر ﺑﺮﻧـﺎﻣﺞ ﻗﺎﻋـﺪة ﺑﯿﺎﻧـﺎت‬
‫ﻓﻠﻦ ﻳﺠﺪ زﻣﯿﻼ ﻷداء اﻟﻤﮫﺎم ﻋﻨﻪ‪ ,‬ﻷﻧﻪ ﻳﻌﻤﻞ ﺑﻤﻔﺮده‪.‬ﻟﺬا ﻋـﺎدة ﻣـﺎ ﻧﺠـﺪ أن اﻟﮫـﻮاة ﻳﺘﻘﻨـﻮن ﺑﺮﻣﺠـﺔ ﺗﻄﺒﯿﻘـﺎت‬
‫وﻳﻨﺪوز و ﺑﺮﻣﺠﺔ اﻹﻧﺘﺮﻧﺖ و اﻟﻌﻤﻞ ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻓﻀﻼ ﻋﻦ اﻟﻌﻤﻞ ﻋﻠﻰ ﺑﺮاﻣﺞ اﻟﺮﺳﻢ و اﻟﻔـﻼش ﺑﻼﻳـﺮ‬
‫و ﺑﺎﻗﻲ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﻋﺎدة ﻣﺎ ﺗﺪﻣﺞ ﻓﻲ أي ﺗﻄﺒﯿﻖ‪ .‬ﻟﻜﻦ اﻟﺸﻲء اﻟﻤﻼﺣﻆ أن اﻟﮫﻮاة ﻣﻨﮫﻢ ﻣـﻦ ﻳﮫـﺪف إﻟـﻰ‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫اﻻﻧﻀﻤﺎم إﻟﻰ ﻓﺮﻳﻖ ﻋﻤﻞ و إن ﻛﺎن ﻻ ﻳﻤﻠﻚ اﻟﻤﺆھﻞ ) ﺷﮫﺎدة اﻟﺘﺨﺼﺺ ﻓﻲ ﻣﺠـﺎل اﻟﺒﺮﻣﺠـﺔ( و ﻣـﻨﮫﻢ ﻣـﻦ‬
‫ﻳﻜﺘﻔﻲ ﺑﺨﺪﻣﺔ أﻏﺮاض ﺧﺎﺻﺔ أو دﻓﺎﻋﺎ ﻋﻦ ﻣﺒﺎدئ ﻋﺎﻣﺔ‪ .‬ﻻ ﻳﻔﮫﻢ ﻣﻤﺎ ﺳﺒﻖ أن اﻟﺬﻳﻦ ﻳﻌﻤﻠﻮن ﺿـﻤﻦ ﻓﺮﻳـﻖ‬
‫ﻋﻤﻞ ﻻ ﻳﺪاﻓﻌﻮن ﻋﻦ ﻣﺒﺎدئ ﺧﺎﺻﺔ أو ﻋﺎﻣﺔ أو أﻧﮫﻢ ﻻ ﻳﺘﻘﻨﻮن ﺑﺎﻗﻲ اﻟﺘﻘﻨﯿﺎت و إﻧﻤﺎ ﻳﻌﻜﺲ ﻣـﺎ ﺳـﺒﻖ ذﻛـﺮه‬
‫اﻟﺤﺘﻤﯿﺔ اﻟﻤﻔﺮوﺿﺔ ﻋﻠﻰ اﻟﮫﺎوي ﻟﻠﺒﺮﻣﺠﺔ‪.‬‬

‫ﻣﻦ ھﻨﺎ ﻳﺴﺘﻄﯿﻊ اﻟﻤﺮء أن ﻳﺠﯿﺐ ﻋﻦ اﻟﺴﺆال اﻟﻜﻼﺳﻜﻲ ‪:‬‬

‫ﻟﻤﺎذا اﻟﺒﺮﻣﺠﺔ ﺑﺎﻟﺬات ؟ ﻟﻜﺴﺐ ﻟﻘﻤﺔ اﻟﻌﯿﺶ‪ ,‬ﻟﻠﺪﻓﺎع ﻋﻦ ﺣﺮﻣﺔ اﻹﺳﻼم ‪ ,‬ﻟﻨﺸﺮ اﻟﺜﻘﺎﻓﺎت اﻟﻤﺤﻠﯿﺔ ‪ ,‬ﻟﻠﺮﻗـﻲ‬
‫ﺑﺎﻟﻌﺎﻟﻢ اﻟﻌﺮﺑﻲ ﻓﻲ اﻟﻤﺠـﺎل اﻟﺘﻘﻨـﻲ ‪ .‬ﻟﻤـﺴﺎﻳﺮة ﻋـﺼﺮ ﺗـﺪﻓﻖ اﻟﻤﻌﻠﻮﻣـﺎت‪.‬ﻟﻤـﺴﺎﻋﺪة اﻟﻮاﻟـﺪ ﻓـﻲ اﻟﻤﺘﺠـﺮ أو‬
‫اﻟﺼﺪﻳﻖ ﻓﻲ ‪...‬‬

‫ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﻟﻤﺤﺔ‪:‬‬

‫إن اﻟﻜﻤﺒﯿﻮﺗﺮ ﻣﺠﺮد أﻟﺔ ﺑﺴﯿﻄﺔ ﺗﺆدي ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻤﮫﺎم اﻟﻤﺨﺘﻠﻔﺔ‪ ,‬ﻛﺎﻟﻌـﺪ ﻋﻠـﻰ ﺳـﺒﯿﻞ اﻟﻤﺜـﺎل‪.‬إن ﻣﮫـﺎم‬
‫اﻟﻜﻤﺒﯿﻮﺗﺮ ﻻ ﺗﺘﻢ إﻻ وﻓﻖ ﺳﻠﺴﻠﺔ ﻣﻦ اﻷواﻣﺮ اﻟﻤﺘﺮاﺑﻄﺔ و اﻟﺘﻲ ﺗﺴﻤﻰ ﺗﻄﺒﯿﻘﺎ‪ .‬ﻳـﺘﻢ ﺗـﺼﻤﯿﻢ اﻟﺘﻄﺒﯿـﻖ ﻣـﻦ‬
‫ﻗﺒﻞ ﺷﺨﺺ ﻳﺪﻋﻰ اﻟﻤﺒﺮﻣﺞ‪ .‬ﻳﻌﺘﻤﺪ ﻛﻞ ﻣﺒﺮﻣﺞ ﻋﻠﻰ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻣﻌﯿﻨﺔ ﺗﺴﺘﻘﻞ ﺑﺘﻌﻠﯿﻤﺎت ‪ ,‬ﺗﻨﺴﯿﻖ‪ ,‬ﻛﻠﻤﺎت‬
‫ﻣﺤﺠﻮزة و ﺗﺮﻛﯿﺐ ﻣﻌﯿﻦ ﻳﻤﯿﺰھﺎ ﻋﻦ ﺑﺎﻗﻲ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ‪.‬ﺗﺨﺘﻠﻒ اﻟﺒﺮﻣﺠـﺔ ﻣـﻦ ﻟﻐـﺔ إﻟـﻰ أﺧـﺮى ﻣـﻦ ﺣﯿـﺚ‬
‫اﻟﺘﻌﻘﯿﺪ ‪ ,‬ﻓﻘﺪ ﺗﺒﺪو ﻟﻐﺎت اﻟﯿﻮم أﻗﺮب إﻟﻰ ﻟﻐﺔ اﻹﻧﺴﺎن ‪ ,‬ﺑﯿﻨﻤﺎ ﻓﻲ اﻟﻤﺎﺿﻲ ﻛﺎﻧﺖ أﻗﺮب ﻟﻠﻐﺔ اﻵﻟﺔ‪.‬‬

‫‪ -1‬ﻟﻐﺔ اﻵﻟﺔ‪ :‬ھﻲ اﻟﻠﻐﺔ اﻟﻮﺣﯿﺪة اﻟﺘﻲ ﻳﻔﮫﻤﮫﺎ اﻟﻜﻤﺒﯿﻮﺗﺮ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ‪ ,‬ﻓﮫـﻲ ﺗﻌﺘ ﻤـﺪ ﺑﺎﻷﺳـﺎس ﻋﻠـﻰ‬
‫ﺗﻌﻠﯿﻤﺎت ﺛﻨﺎﺋﯿﺔ‪ ,‬ﻟﮫﺬا ﺗﺴﻤﻰ ﺑﺎﻟﻠﻐﺔ اﻟﺜﻨﺎﺋﯿﺔ‪ .‬ﺣﯿﺚ أن أيّ أﻣﺮ ﻳﻮﺟﻪ إﻟﻰ اﻟﻜﻤﺒﯿﻮﺗﺮ ﻳﻨﺒﻐﻲ أن ﻳﺘـﺄﻟﻒ ﻣـﻦ‬
‫ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷﺻﻔﺎر و اﻵﺣﺎد ) ‪(0,1‬ﺣﯿﺚ ﻳﻌﻨﻲ اﻟﺼﻔﺮ ‪ off‬و ﻳﻌﻨـﻲ اﻟﻮاﺣـﺪ ‪. on‬ﻣـﺜﻼ ﻟـﻮ أراد اﻟـﺸﺨﺺ‬
‫ﺗﻮﺟﯿﻪ أﻣﺮ ﻟﻠﻜﻤﺒﯿﻮﺗﺮ ﺑﻄﺒﺎﻋﺔ ﺣﺮف ‪ A‬ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ﻓﻼ ﺑﺪ أن ﻳﻨﺸﺄ اﻷﻣﺮ ﻋﻠـﻰ اﻟـﺸﻜﻞ اﻟﺘـﺎﻟﻲ‪:‬‬
‫‪ . 10101001‬ﻳﺘﻢ ﺗﻮزﻳﻊ اﻷرﻗﺎم اﻟﺴﺎﺑﻘﺔ وﻓﻖ ﺗﺮﺗﯿﺐ ﻣﻌﯿﻦ ﻳﺼﻌﺐ إن ﻟﻢ ﻧﻘﻞ ﻳـﺴﺘﺤﯿﻞ ﻋﻠـﻰ اﻹﻧـﺴﺎن‬
‫ﺣﻔﻈﻪ ‪.‬ﺗﺨﯿﻞ ﻣﻌﻲ أﻧﻚ ﺗﻮد أ ن ﺗﻜﺘﺐ ﻓﻘﺮة ﺻـﻐﯿﺮة ﺑﻠﻐـﺔ اﻵﻟـﺔ ‪.‬إن ھـﺬا ﻳﺘﻄﻠـﺐ ﻣﻌﺮﻓـﺔ ﺟﯿـﺪة ﻟﻠﺘﺮﻛﯿـﺐ‬
‫اﻟﺪاﺧﻠﻲ ﻟﻠﻜﻤﺒﯿﻮﺗﺮ و ﻛﺬا اﻟﻌﻨﺎوﻳﻦ اﻟﺮﻗﻤﯿﺔ ﻟﻤﻮاﻗﻊ اﻟﺘﺨﺰﻳﻦ‪ .‬و ﻣﻊ ذﻟﻚ ﺳﻨﺸﮫﺪ ﻋﺸﺮات اﻷﺧﻄﺎء ‪.‬‬
‫إن ﻛﻞ ﻛﻤﺒﯿﻮﺗﺮ ﻳﻨﻔﺮد ﺑﻠﻐﺔ أﻟﺔ ﺧﺎﺻﺔ ﺑﻪ ﻣﻤﺎ ﻳﻌﻨﻲ أن اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺻﻤﻤﺘﻪ ﻟﻠﺘﻌﺎﻣﻞ ﻣـﻊ ھـﺬا اﻟﺠﮫـﺎز‬
‫ﻗﺪ ﻻ ﻳﻌﻤﻞ ﻋﻠﻰ اﻟﺠﮫﺎز اﻷﺧﺮ و ھﺬا ﻣﺎ ﻳﺰﻳﺪ اﻷﻣﺮ ﺗﻌﻘﯿﺪا‪.‬أﻣﺎم ھﺬا اﻟﻮﺿﻊ اﻟﻤﻌﻘـﺪ ﺗـﻢ إﺑﺘﻜـﺎر ﻧﻈـﺎم ﻋـﺪ‬
‫آﺧﺮ ﻟﺘﻤﺜﯿﻞ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﻣﺜﻞ اﻟﻨﻈﺎم اﻟﺴﺖ ﻋﺸﺮي ) ‪ ( HEXADECIMAL‬اﻟﺬي ﻳﺤﺘـﻮي ﻋﻠـﻰ ﺳـﺘﺔ‬
‫ﻋﺸﺮ رﻣﺰا ‪.‬اﻟﻌﺸﺮ أرﻗﺎم اﻷوﻟﻰ )‪ (9 - 0‬زاﺋﺪ اﻟﺴﺖ أﺣﺮف اﻷوﻟﻰ )‪ . (A-F‬ﻣﻤﺎ ﻳﺠﻌﻞ اﻷﻣﺮ أﺳﮫﻞ ﻧﻮﻋـﺎ‬
‫ﻣ ﺎ‪.‬‬

‫‪ -2‬ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ)اﻟﺘﺠﻤﯿﻊ( ‪ :‬ھﻲ ﻋﺒﺎرة ﻋﻦ وﺳﯿﻂ ﺑﯿﻦ ﻟﻐﺔ اﻹﻧﺴﺎن و ﻟﻐـﺔ اﻷﻟـﺔ ‪,‬ﺣﯿـﺚ أﻧﮫـﺎ اﻟﻠﻐـﺔ‬
‫اﻷوﻟﻰ اﻟﺘﻲ ﺑﺪأت اﻻﻋﺘﻤﺎد ﻋﻠﻰ اﻟﺮﻣﻮز اﻟﮫﺠﺎﺋﯿﺔ ﺑﺪﻻ ﻣﻦ اﻟﻨﻈﺎم اﻟﺜﻨـﺎﺋﻲ اﻟﺮﻗﻤـﻲ‪.‬ﻳﻘـﻮم اﻟﻤﺒـﺮﻣﺞ‬
‫ﺑﺘﺼﻤﯿﻢ ﺗﻄﺒﯿﻘﺎت و ﺑﺮاﻣﺞ ﻣﻌﯿﻨﺔ ﻣﻌﺘﻤﺪا ﻋﻠـﻰ ﺗﺮﻛﯿـﺐ ھـﺬه اﻟﻠﻐـﺔ ﺗﺎرﻛـﺎ ﻣﮫـﺎم ﺗﺮﺟﻤـﺔ اﻷواﻣـﺮ أو‬
‫ﺗﺤﻮﻳﻠﮫﺎ إﻟﻰ ﻟﻐﺔ اﻵﻟﺔ ﻟﻠﻤﻔﺴﺮ ) اﺳﻤﺒﻠﺮ(‪.‬و ﻧﻈﺮا ﻟﻜﻮن ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ ﻗﺮﻳﺒﺔ ﻣـﻦ ﻟﻐـﺔ اﻵﻟـﺔ ﻓـﺈن‬
‫اﻟﻤﺒﺮﻣﺞ ﻳـﺴﺘﻄﯿﻊ اﻻﺳـﺘﻐﻼل اﻷﻣﺜـﻞ ﻟﻤـﻮارد اﻟﺤﺎﺳـﺐ ‪ .‬ﺣﯿـﺚ أن ﺑـﺮاﻣﺞ ﻟﻐـﺔ اﻷﺳـﻤﺒﻠﻲ ﺗﺘﻤﯿـﺰ‬
‫ﺑﺴﺮﻋﺔ اﻟﺘﻨﻔﯿﺬ و ﻗﻠﺔ اﻟﺤﺠﻢ ﻟﺬا ھﻲ اﻟﻠﻐﺔ اﻟﻤﻔﻀﻠﺔ ﻟﺪى اﻟﮫﺎﻛﺮز و اﻟﻜﺮاﻛﺮز ‪.‬‬

‫‪ -3‬ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻟﻌﻠﯿﺎ‪ :‬ﺗﺸﻜﻞ ھﺬه اﻟﻠﻐﺎت ﻗﻔﺰة ﻧﻮﻋﯿﺔ ﻓﻲ ﻋﺎﻟﻢ اﻟﺒﺮﻣﺠﺔ ‪ ,‬ﺣﯿﺚ ﻟﻢ ﻳﻌﺪ ﻟﺰاﻣﺎ ﻋﻠـﻰ‬
‫اﻟﻤﺒﺮﻣﺞ أن ﻳﻜﻮن ﻋﻠﻰ ﻋﻠﻢ ﺑﻤﻮاﻗﻊ اﻟﺘﺨﺰﻳﻦ و ﺗﻔﺎﺻﯿﻞ اﻟﺠﮫﺎز‪ .‬ﻳﻤﻜـﻦ ﻟﻠﺒـﺮاﻣﺞ اﻟﺘـﻲ ﺗـﺼﻤﻢ ﺑﮫـﺬه‬
‫اﻟﻠﻐﺔ اﻟﻌﻤﻞ ﻋﻠﻰ ﻣﺨﺘﻠﻒ اﻷﺟﮫﺰة‪.‬ﻛﻤﺎ أن ﺗﺮﻛﯿﺒﮫﺎ ﺑﺎت أﻛﺜـﺮ ﻳـﺴﺮا ﻣـﻦ ﻟﻐـﺎت اﻷﺳـﻤﺒﻠﻲ ﻛـﻮن أن‬
‫اﻟﻌﺒﺎرات اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﯿﮫﺎ ھﻲ أﻗﺮب ﻟﻠﻐﺔ اﻹﻧﺴﺎن ﻣﻦ ﻟﻐﺔ اﻵﻟﺔ‪.‬ﺗﻮﺟﺪ اﻟﻜﺜﯿـﺮ ﻣـﻦ ﻟﻐـﺎت اﻟﺒﺮﻣﺠـﺔ‬
‫اﻟﻌﻠﯿﺎ‪ ,‬ﻓﻤﻨﮫﺎ اﻟﻜﻮﺑﻮل و اﻟﻔﻮرﺗﺮان و اﻟﺴﻲ و اﻟﺴﻲ ‪ , ++‬اﻟﺒﯿﺴﻚ و ﺑﺎﺳﻜﺎل‪.‬‬

‫ﻋﻠﻰ اﻟﺮﻏﻢ ﻣﻦ اﻟﺴﮫﻮﻟﺔ اﻟﺘﻲ ﺗﻤﯿﺰت ﺑﮫ ﺎ ھﺬه اﻟﻠﻐﺎت ﺑﺎﻟﻤﻘﺎرﻧـﺔ ﻟﻤـﺎ ﺳـﺒﻘﮫﺎ‪ ,‬إﻻ أﻧﮫـﺎ ﻇﻠـﺖ ﻣﻘـﺼﻮرة‬
‫ﻋﻠﻰ ﻓﺌﺔ ﻣﻌﯿﻨﺔ ‪ ,‬ﺑﺎﻋﺘﺒﺎر أن ﺗﺼﻤﯿﻢ أي ﺑﺮﻧﺎﻣﺞ ﺳﯿﺴﺘﻐﺮق وﻗﺖ ﻃﻮﻳﻞ ‪ .‬ﻓﻤﺜﻼ ﻹﻇﮫﺎر ﻧﺎﻓﺬة ﻓﺎرﻏﺔ ﻛﺎن‬
‫ﻳﻨﺒﻐﻲ ﻋﻠﻰ اﻟﻤﺒﺮﻣﺞ ﻛﺘﺎﺑﺔ ﺻﻔﺤﺔ أو اﺛﻨﺘﯿﻦ ﻣﻦ اﻷﻛﻮاد‪ .‬ﻟﻘﺪ دﻓﻊ ھـﺬا اﻷﻣـﺮ ﺷـﺮﻛﺎت اﻟﺒﺮﻣﺠـﺔ ﻟﺘﻄـﻮﻳﺮ‬
‫ﺑﺮاﻣﺞ ﻣﻦ أﺟﻞ ﺗﺴﮫﯿﻞ اﻟﻌﻤﻞ ﻋﻠﻰ اﻟﻤﻄﻮرﻳﻦ ‪ ,‬ﻓﻘﺪ ﺗﻢ دﻣﺞ ﺑﻌﺾ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﺿﻤﻦ ﺑﯿﺌﺎت ﻣﺘﻜﺎﻣﻠـﺔ‬
‫ﺗﺤﺘﻮي ﻋﻠﻰ أدوات ﻣﺮﺋﯿﺔ و ھﺬا ﻣـﻦ أﺟـﻞ ﺗﻄـﻮﻳﺮ اﻟﺒـﺮاﻣﺞ ﺑـﺸﻜﻞ ﺳـﺮﻳﻊ‪ .‬ﻓﻨﺠـﺪ أن ﻟﻐـﺔ اﻟﺒﯿـﺴﻚ ﺗـﻢ‬
‫ﺗﻄﻮﻳﺮھﺎ إﻟﻰ ﻓﯿﺰوال ﺑﯿﺴﻚ‪ ,‬أﻣﺎ اﻟﺒﺎﺳﻜﺎل ﻓﻘﺪ ﻇﮫﺮ ﻋﻨﮫﺎ اﻟﺪﻟﻔﻲ اﻟﺬي ﻧﺤﻦ ﺑﺼﺪد اﻟﻌﻤـﻞ ﻋﻠﯿـﻪ ﻓـﻲ‬
‫ھﺬا اﻟﻜﺘﺎب‪ .‬ﺣﯿﺚ ﻳﺘﻤﯿﺰ اﻟﺪﻟﻔﻲ ﺑﺎﻟﺨﺎﺻﯿﺔ ‪ RAD‬و اﻟﺘﻲ ﺗﻌﻨﻲ) ‪ (Rapid Application Developmen‬أي‬
‫اﻟﺘﻄﻮﻳﺮ اﻟﺴﺮﻳﻊ ﻟﻠﺒﺮﻣﺠﯿﺎت‪.‬‬

‫إن اﻟﺒﺮﻣﺠﺔ ﻻ ﺗﻘﺘﺼﺮ ﻋﻠﻰ ﻣﺎ ﺳـﺒﻖ ذﻛـﺮه ﻓﺤـﺴﺐ‪ ,‬ﺑـﻞ ﺗﻮﺟـﺪ اﻟﻜﺜﯿـﺮ ﻣـﻦ ﻟﻐـﺎت اﻟﺒﺮﻣﺠـﺔ ﻓـﻲ ﻋـﺎﻟﻢ‬
‫اﻟﻜﻤﺒﯿﻮﺗﺮ ‪ .‬ﻧﺠﺪ ﺑﺮﻣﺠﺔ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت و اﻟﺘﻲ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﻟﻐﺔ اﻹﺳﺘﻌﻼم اﻟﺒﻨﯿﻮﻳﺔ )‪ (SQL‬و ھﻮ إﺧﺘﺼﺎر‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫ل‪ . (strucured query language) :‬ﻛﻤﺎ ﻧﺠﺪ ﻟﻐﺎت ﺑﺮﻣﺠـﺔ وﻳـﺐ أو ﻣـﺎ ﻳـﺴﻤﻰ ‪scripting languages‬‬
‫ﻣﺜﻞ ﻟﻐﺔ ‪ . ASP.net , ASP , PHP ,javascript , HTML‬وھﻲ ﻟﻐﺎت ﺑﺮﻣﺠﺔ ﻟﺘﻄﻮﻳﺮ ﻣﻮاﻗﻊ اﻹﻧﺘﺮﻧﺖ‪.‬‬
‫ھﻨﺎﻟـﻚ أﻳـﻀﺎ ﻟﻐـﺎت ﺑﺮﻣﺠـﺔ ﺧﺎﺻـﺔ ﺑـﺒﻌﺾ اﻟﺒـﺮاﻣﺞ ﻣﺜـﻞ ﻟﻐـﺔ ‪ cold fusion‬و ‪ action script‬اﻟﺨﺎﺻـﺔ‬
‫ﺑﺎﻟﻔﻼش ﺑﻼﻳﺮ‪.‬‬
‫ﻋﻤﻮﻣﺎ‪ ,‬ﻳﻤﻜﻦ اﻟﻘﻮل أن ﺗﻌﻠﻢ ﻟﻐﺔ ﺑﺮﻣﺠﺔ واﺣﺪة ﻳﻤﻜﻦ أن ﻳﻜـﻮّن ﻓﻜـﺮا ﺑﺮﻣﺠﯿـﺎ ﻟـﺪى اﻟﻤـﺘﻌﻠّﻢ ‪ .‬ﻓﻤﻌﻈـﻢ‬
‫ﻟﻐﺎت اﻟﺒﺮﻣﺠـﺔ ﺗـﺸﺘﺮك ﻓـﻲ ﺑﻌـﺾ اﻟﻤﻔـﺎھﯿﻢ ﻣﺜـﻞ اﻟﻜﻠﻤـﺎت اﻟﻤﺤﺠـﻮزة‪ ,‬اﻟﻤﺘﻐﯿـﺮات ‪,‬اﻟﺜﻮاﺑـﺖ‪ ,‬اﻟـﺪوال‬
‫اﻟﺸﺮﻃﯿﺔ و اﻟﻜﺜﯿﺮ ﻣﻦ اﻷﻣﻮر اﻷﺧﺮى ‪.‬‬

‫ﻣﻘﺪﻣــﺔ ﻟﻠﻐــﺔ اﻟﺒﺮﻣﺠــﺔ دﻟﻔــﻲ ‪ :‬إن ﻟﻐــﺔ ‪ visual basic‬ﺗﻌﻠــﻦ ﻣــﻦ ﺗــﺴﻤﯿﺘﮫﺎ أﻧﮫــﺎ ﻟﻐــﺔ اﻟﺒﯿــﺴﻚ اﻟﻤﺮﺋﯿــﺔ أو‬
‫اﻟﺮﺳﻮﻣﯿﺔ ‪ ,‬ﺑﯿﻨﻤﺎ اﻟﺘﺴ ﻤﯿﺔ اﻟﻐﯿﺮ ﻣﻌﻠﻨـﺔ ﻟﻠـﺪﻟﻔﻲ ھـﻲ ﺑﺎﺳـﻜﺎل اﻟﻤﺮﺋﯿـﺔ‪ .‬و اﻟﻤﻘـﺼﻮد ﺑﮫـﺬا أن ﺑﯿﺌـﺔ اﻟﺘﻄـﻮﻳﺮ‬
‫دﻟﻔﻰ ﺗﻌﺘﻤﺪ ﻓﻲ اﻷﺳﺎس ﻋﻠﻰ ﺗﺮﻛﯿﺐ ﻟﻐﺔ ﺑﺎﺳﻜﺎل ﻣﺼﺤﻮﺑﺔ ﺑﻤﻜﺘﺒﺔ ﺿﺨﻤﺔ ﻣﻦ اﻷدوات اﻟﻤﺮﺋﯿﺔ اﻟﺠـﺎھﺰة‬
‫و اﻟﺘﻲ ﻳﻤﻜﻦ ﻟﻠﻤﺒﺮﻣﺞ اﺳﺘﺨﺪاﻣﮫﺎ ﻣﺒﺎﺷﺮة‪ .‬و ھﺬه اﻷدوات ﻓـﻲ ﻣﻌﻈـﻢ اﻷﺣـﻮال ﻻ ﻳﺨـﻞ ﻣﻨﮫـﺎ ﺑﺮﻧـﺎﻣﺞ ﻣـﻦ‬
‫اﻟﺒﺮاﻣﺞ‪.‬ﻓﻼ ﻳﻤﻜﻦ أن ﻧﺘﺼﻮر ﺑﺮﻧﺎﻣﺞ ﺑﺪون أزرار أو ﻧﻤﻮذج إﻻ ﻓﯿﻤﺎ ﻧﺪر‪.‬‬

‫ﻛﻤﺎ ﺳﺒﻖ اﻟﺬﻛﺮ ﻓﺈن ﻟﻐﺔ دﻟﻔﻲ ھﻲ ﻟﻐﺔ اﻟﺘﻄﻮﻳﺮ اﻟﺴﺮﻳﻊ ﻟﻠﺒﺮاﻣﺞ ﺑﺎﺳـﺘﺨﺪام اﻷدوات أو اﻟﻤﻜﻮﻧـﺎت اﻟﻤﺘـﻮﻓﺮة‬
‫ﻣﺜﻞ اﻷزرار و اﻟﻨﻤﻮذج و أداة اﻟﻨﺺ و اﻟﻜﺜﯿﺮ ﻣﻦ اﻷدوات اﻷﺧﺮى ‪.‬ﻳﻌﺘﺒﺮ اﻟﻨﻤﻮذج ھﻮ اﻟﺤ ﺎﺿﻦ اﻷﺳﺎﺳﻲ ﻟﮫـﺬه‬
‫اﻟﻤﻜﻮﻧﺎت ﺣﯿﺚ ﻳﺘﻢ ﺗﻨﺴﯿﻘﮫﺎ و ﻓﻖ ﻧﻤﻂ ﻣﻌﯿﻦ ﻳﺘ ﻨﺎﺳﺐ و اﻟﻌﻤﻞ اﻟﻤﻨﺸﻮد‪.‬ﻳﻌﺒﺮ ﻋﻦ اﻷدوات ﺑﻌـﺪة ﺗـﺴﻤﯿﺎت‬
‫ﻣﻨﮫﺎ اﻟﻤﻜﻮﻧﺎت أو اﻟﻜﺎﺋﻨﺎت‪.‬إن اﻟﺘﺴﻤﯿﺔ اﻷﺧﯿﺮة ﺗﺒـﺪو أﻛﺜـﺮ ﺑﻼﻏـﺔ ‪ ,‬ﺣﯿـﺚ ﻧﻔﮫـﻢ ﻣـﻦ ذﻟـﻚ أن ﻛـﻞ ﻛـﺎﺋﻦ ﻟـﻪ‬
‫ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟ ﺨﺼﺎﺋﺺ ‪ ,‬ﻣﻦ ﻃﻮل و ﻋﺮض ‪ ,‬ﻣـﺴﻄﺢ أو ﺛﻼﺛـﻲ اﻷﺑﻌـﺎد ‪ ,‬ﻣﺮﺋـﻲ أو ﻏﯿـﺮ ﻣﺮﺋـﻲ ‪ ,‬ﻟـﻪ ﻋﻨـﻮان‬
‫ﻣﻌﯿﻦ و إﺳﻢ ﻳﺨﺘﻠﻒ ﺑﺎﻟﻀﺮورة ﻋﻦ ﺑﺎﻗﻲ اﻟﻤﻜﻮﻧﺎت اﻟﺘـﻲ ﺗـﺸﺘﺮك ﻣﻌـﻪ ﻓـﻲ اﻟﺠـﻨﺲ‪ .‬ﻋﻠـﻰ ﺳـﺒﯿﻞ اﻟﻤﺜـﺎل‬
‫ﻳﻤﻜــﻦ أن ﻧﻌﻄــﻲ ﺗــﺴﻤﯿﺔ ﻟــﺰر ﻣﻌــﯿﻦ ‪ Button1‬ﻛﻤــﺎ ﻳﻤﻜــﻦ أن ﻧــﺴﻤﻲ اﻟﻨﻤــﻮذج أﻳــﻀﺎ ﺑــﻨﻔﺲ اﻟﺘــﺴﻤﯿﺔ‬
‫ﻻﺧﺘﺎﻟﻔﮫﻤﺎ ﻓﻲ اﻟﺠﻨﺲ‪.‬ﺑﯿﻨﻤﺎ ﻟﻮ أﺿـﻔﻨﺎ زر أﺧـﺮ و أﻋﻄﯿﻨـﺎه ﻧﻔـﺲ اﻟﺘـﺴﻤﯿﺔ )‪ (Button1‬ﻓـﺈن ﺑﺮﻧـﺎﻣﺞ دﻟﻔـﻲ‬
‫ﻳﺮﻓﻀﮫﺎ ﻷﻧﮫﻤﺎ ﻣﻦ ﻧﻔﺲ اﻟﺠﻨﺲ ‪.‬‬

‫ﺗﻤﺜﻞ ھﺬه اﻟﺼﻮرة ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻣﻜﻮﻧﺎت دﻟﻔﻲ ﺿﻤﻦ ﻧﻤﻮذج رﺋﯿﺴﻲ‪.‬ﻛﻤﺎ ھـﻮ واﺿـﺢ ﻣـﻦ اﻟـﺼﻮرة ﻓـﺈن ﻛـﻞ‬
‫ﻣﻜﻮن ﻳﺤﻤﻞ اﻟﺘﺴﻤﯿﺔ اﻟﺨﺎﺻـﺔ ﺑـﻪ‪ ,‬ﺣﺘـﻰ اﻟﻨﻤـﻮذج ﻳﻌﺘﺒـﺮ ﻣﻜـﻮن و ھـﻮ اﻟـﺬي ﻳـﺸﻜﻞ واﺟﮫـﺔ اﻟﻤـﺴﺘﺨﺪم‪.‬‬
‫ﻣﻦ اﻵن و ﺻﺎﻋﺪا ﻓﺈن اﻟﺘﺴﻤﯿﺎت اﻟﺨﺎﺻﺔ ﺑﻤﻜﻮﻧﺎت دﻟﻔﻲ ﻳﺠﺐ أن ﺗﺤﻔﻆ ﻓﻲ اﻟﺬھﻦ ﺑﻠﻐﺘﮫـﺎ اﻷم ‪.‬ﻓـﺈذا ﻗﻠﻨـﺎ‬
‫اﻷداة ‪ ComboBox‬ﻳﺬھﺐ ذھﻦ اﻟﻤﺒﺮﻣﺞ ﻣﺒﺎﺷﺮة إﻟﻰ ﺗﻠﻜﻢ اﻷداة اﻟﺘﻲ ﺗﺤﻤﻞ ﻧﻔﺲ اﻟﺘﺴﻤﯿﺔ ﻓﻲ اﻟﺼﻮرة ‪.‬‬

‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻤﻔﮫﻮم اﻟﺨﺼﺎﺋﺺ ﺳﯿﺘﻀﺢ ﻟﻮ ﻗﻤﻨﺎ ﺑﺎﻟﺘﻼﻋﺐ ﺑـﺒﻌﺾ اﻟﻤﻜﻮﻧـﺎت ‪.‬ﻓﻠـﻮ ﻗﻤﻨـﺎ ﺑﺘﻐﯿﯿـﺮ ﻋﻨـﻮان اﻟﻨﻤـﻮذج‬
‫)‪ (caption‬إﻟﻰ " اﻟﺒﺮﻧﺎﻣﺞ اﻷول" ﺑﺪﻻ ﻣﻦ "‪ "form1‬ﻧﻜﻮن ﻗﺪ ﺗﻌﺎﻣﻠﻨﺎ ﻣﻊ ﺧﺼﺎﺋﺺ ھﺬا اﻟﻜﺎﺋﻦ و ﻛـﺬﻟﻚ ﻧﻔـﺲ‬
‫اﻟﺸﻲء ﻟﻮ ﻗﻤﻨﺎ ﺑﺈﻋﻄﺎء ﻣﺴﺎﺣﺔ أﻛﺒﺮ ﻟﻸداة ‪. Edit1‬إن ﻋﻤﻞ ھـﺬه اﻟﻤﻜﻮﻧـﺎت ﻳﺘﻮﻗـﻒ ﻋﻠـﻰ ﻣﺠﻤﻮﻋـﺔ ﻣـﻦ‬
‫اﻷﻛﻮاد و اﻹﺟﺮاءات )‪ (procedures‬اﻟﺘﻲ ﺗﻨﻔﺬ إﺛﺮ اﻟﻘﯿﺎم ﺑﺤﺪث ﻣﻌﯿﻦ )‪ (event‬ﻟﻤﻜﻮن ﻣﺎ ‪.‬ﻓـﺎﻟﻨﻘﺮ ﻣـﺜﻼ ﻳﻌﺘﺒـﺮ‬
‫ﺣﺪث و ﺗﻤﺮﻳﺮ اﻟﻔﺄرة ﻋﻠﻰ أداة ﻣﻌﯿﻨﺔ ﻳﻌﺘﺒﺮ ﻛﺬﻟﻚ ﺣﺪﺛﺎ ‪ .‬ﻓﯿﻤﻜﻨﻨﺎ ﻣﺜﻼ إﻋﻄﺎء أﻣﺮ ﺑﺈﻏﻼق اﻟﺒﺮﻧـﺎﻣﺞ إﺛـﺮ ﺗﻨﻔﯿـﺬ‬
‫ﺣﺪث ﺗﻤﺮﻳﺮ اﻟﻔﺄرة ﻋﻠﻰ اﻷداة ‪ .CheckBox1‬و ھﻜﺬا ﻟﻮ ﻗﺎم اﻟﻤﺴﺘﺨﺪم ﺑﺘﻤﺮﻳﺮ اﻟﻔـﺄرة ﻋﻠـﻰ ھـﺬه اﻷداة ﻓـﺈن‬
‫اﻟﺒﺮﻧﺎﻣﺞ ﺳﻮف ﻳﻐﻠﻖ ﻣﺒﺎﺷﺮة‪.‬‬

‫ﺗﻤﺮ اﻟﺒﺮﻣﺠﺔ ﺑﺪﻟﻔﻲ ﺑﻤﺮﺣﻠﺘﯿﻦ أﺳﺎﺳﯿﺘﯿﻦ ‪ ,‬ﻳﺘﻢ ﻓﻲ اﻟﻤﺮﺣﻠﺔ اﻷوﻟـﻰ ﺗﻨـﺴﯿﻖ و ﺿـﺒﻂ ﺧـﺼﺎﺋﺺ اﻟﻤﻜﻮﻧـﺎت‬
‫ﻋﻠﻰ اﻟﻨﻤﻮذج‪.‬ﺑﯿﻨﻤﺎ ﻳﺘﻢ ﻓﻲ اﻟﻤﺮﺣﻠﺔ اﻟﺜﺎﻧﯿﺔ ﻛﺘﺎﺑﺔ أﻛﻮاد ﺑﺮﻣﺠﯿﺔ ﺿﻤﻦ إﺟﺮاءات ﻣﺮﺗﺒﻄﺔ ﺑﺄﺣﺪاث ﻣﻌﯿﻨﺔ‪.‬‬

‫ﻋﻨﺪ ﻓﺘﺢ ﺑﺮﻧﺎﻣﺞ دﻟﻔﻲ ﻓﺈﻧﻪ ﻳﻘﻮم ﺗﻠﻘﺎﺋﯿﺎ ﺑﺈﻧﺸﺎء ﻧﻤﻮذج ﻳﺤﻤﻞ اﻟﺨﺼﺎﺋﺺ اﻹﻓﺘﺮاﺿﯿﺔ و اﻟﺘـﻲ ﻳﻤﻜـﻦ ﺗﻐﯿﯿﺮھـﺎ‬
‫ﻣﻦ ﻗﺒﻞ اﻟﻤﺒﺮﻣﺞ‪.‬ﻓﺈذا ﻋﺮﻓﻨﺎ ﺳﺎﺑﻘﺎ أن اﻟﻤﺮﺣﻠﺔ اﻷوﻟﻰ ﺗﺘﻢ ﻋﻠﻰ اﻟﻨﻤﻮذج ﻓﺄﻳﻦ ﻳﺎ ﺗﺮى ﻳﺘﻢ ﻛﺘﺎﺑﺔ اﻹﺟﺮاءات؟‪.‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫ﻣﺜﻠﻤﺎ ﻳﻘﻮم ﺑﺈﻧﺸﺎء اﻟﻨﻤﻮذج ﺑﺸﻜﻞ ﺗﻠﻘﺎﺋﻲ‪ ,‬ﻓﺈن دﻟﻔﻲ ﻳﻘﻮم ﺑﻨﻔﺲ اﻟﻌﻤﻞ ﻣﻊ اﻟﻮﺣـﺪات ‪ units‬و اﻟﺘـﻲ ﻳـﺘﻢ‬
‫ﻓﯿﮫﺎ ﻛﺘﺎﺑﺔ اﻹﺟﺮاءات و اﻟﻮﺿﺎﺋﻒ ‪,‬ﻣﻊ اﻟﻌﻠﻢ أن ﻛﻞ ﻧﻤﻮذج ﻳﻨﻔﺮد ﺑﻮﺣﺪة ﺧﺎﺻﺔ ﺑﻪ ‪.‬‬
‫ﻋﺎدة ﻣﺎ ﺗﻜﺘﺐ اﻷواﻣﺮ ﺑﯿﻦ اﻟﻜﻠﻤﺘﯿﻦ اﻟﻤﺤﺠﻮزﺗﯿﻦ ‪ begin‬و ‪. end‬‬

‫;)‪procedure Tform1.Button1Click(Sender: TObject‬‬


‫‪begin‬‬
‫ھﻨﺎ ﺗﻜﺘﺐ اﻷواﻣﺮ‬
‫;‪end‬‬

‫‪end.‬‬

‫اﻟﺴﻄﺮ اﻷول ﻳﻀﻢ إﺳﻢ اﻹﺟﺮاء وھﻮ اﻹﺟﺮاء اﻟﻤﺮﺗﺒﻂ ﺑﺤﺪث اﻟﻨﻘﺮ ﻋﻠﻰ اﻷداة ‪.button1‬‬
‫أﻣﺎ اﻟﺴﻄﺮ اﻷﺧﯿﺮ ﻓﮫﻮ ﻳﻌﻠﻦ ﻋﻦ ﻧﮫﺎﻳﺔ ﻛﻞ اﻹﺟﺮاءات ﺣﯿﺚ ﻣﺎ ﻳﺘﻢ ﻛﺘﺎﺑﺘﻪ ﺑﻌﺪ ھﺬا اﻷﻣﺮ ﺳﯿﺘﻢ ﺗﺠﺎھﻠﻪ أﺛﻨـﺎء‬
‫ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ‪ .‬و ﻣﻌﻨﻰ اﻟﺘﻨﻔﯿﺬ ھﻮ ﺗﺸﻐﯿﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻌﺪ اﻹﻧﺘﮫﺎء ﻣﻦ ﺑﺮﻣﺠﺘﻪ ﺟﺰﺋﯿﺎ أو ﻛﻠﯿﺎ‪ .‬أي ﺑﻌـﺪ اﻹﻧﺘﮫـﺎء‬
‫ﻣﻦ وﺿﻊ اﻟﺘﺼﻤﯿﻢ ﺗﺄﺗﻲ ﻣﺮﺣﻠﺔ اﻟﺘﻨﻔﯿﺬ و اﻟﺘﻲ ﻣﻦ ﺧﻼﻟﮫـﺎ ﻧﻜﺘـﺸﻒ ﻣـﺎ إذا ارﺗﻜﺒﻨـﺎ أﺧﻄـﺎء ﺑﺮﻣﺠﯿـﺔ ﻣـﺎ ‪ .‬ﻷن‬
‫دﻟﻔﻲ ﻋﺎدة ﻣﺎ ﻳﻔﻀﺢ اﻟﻤﺒﺮﻣﺠﯿﻦ ﻓﻲ ھﺬه اﻟﻤﺮﺣﻠﺔ)ﻣﺠﺮد ﻣﺰﺣﺔ‪ ,‬أﻗﺼﺪ ﻳﻨﺒﮫﮫﻢ ﻟﻮﺟﻮد ﻟﺒﺲ ﻣﺎ ﻓﻲ اﻟﻜﻮد(‬
‫ﻗﺪ ﻳﺒﺪو اﻟﺠﺎﻧﺐ اﻟﻨﻈﺮي ﺻﻌﺐ اﻟﻔﮫﻢ ﻧﻮﻋﺎ ﻣﺎ ﻟﻜﻨﻨﺎ ﺑﻤﺠﺮد اﻟﺒﺪء ﻓﻲ اﻟﻌﻤﻞ اﻟﺘﻄﺒﯿﻘﻲ ﺳﺘﺘﻀﺢ اﻷﻣﻮر‪.‬‬

‫‪( Integrated‬‬ ‫ﺑﯿﺌﺔ اﻟﺘﻄﻮﻳﺮ اﻟﻤﺘﻜﺎﻣﻠﺔ ) ‪Development Environment‬‬

‫‪1‬‬
‫‪2‬‬

‫‪7‬‬ ‫‪3‬‬

‫‪5‬‬

‫‪4‬‬

‫‪6‬‬

‫ﺗﻤﺜﻞ ھﺬه اﻟﺼﻮرة اﻟﻮاﺟﮫﺔ اﻟﺮﺋﯿﺴﯿﺔ ﻟﺒﯿﺌﺔ اﻟﺘﻄﻮﻳﺮ اﻟﻤﺘﻜﺎﻣﻠﺔ اﻟﺨﺎﺻﺔ ﺑﻠﻐﺔ دﻟﻔﻲ‪.‬ﺣﯿﺚ ﺗﺤﺘﻮي ﻋﻠﻰ ﻛﻞ ﻣـﺎ‬
‫ﻳﺤﺘﺎﺟﻪ اﻟﻤﺒـﺮﻣﺞ ﻣـﻦ أدوات ﻟﺒﻨـﺎء ﺑﺮﻧﺎﻣﺠـﻪ و ﺗﺠﺮﻳﺒـﻪ ‪ .‬و ﻳـﺄﺗﻲ ﻣـﻊ ﺑﻌـﺾ ﻧـﺴﺦ دﻟﻔـﻲ ﺑﺮﻧـﺎﻣﺞ ‪INSTALL‬‬
‫‪ SHIELD‬اﻟﺬي ﻳﺴﻤﺢ ﺑﺘﺤﺰﻳﻢ أو ﻋﻤﻞ ‪ setup‬ﻟﻠﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺗﻢ ﺗﺼﻤﯿﻤﻪ ‪ ,‬وھﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻳﺄﺗﻲ ﻣﻨﻔـﺼﻞ ﻋـﻦ‬
‫ﺑﯿﺌﺔ اﻟﺘﻄﻮﻳﺮ اﻟﻤﺘﻜﺎﻣﻠﺔ‪.‬ﻟﻜﻦ ﻟﻦ ﺗﺤﺘﺎج إﻟﻰ ھﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻟﺘﻮزﻳﻊ ﺑﺮﻧﺎﻣﺠﻚ ﻓﻲ ﻛﻞ اﻷﺣـﻮال‪.‬ﻷن دﻟﻔـﻲ ﻳـﺪﻋﻢ‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫ﺧﺎﺻﯿﺔ ‪ stand alone‬ﻣﻤـﺎ ﻳﺠﻌـﻞ اﻟﻤﺒـﺮﻣﺞ ﻳـﺸﻐﻞ ﺑﺮﻧﺎﻣﺠـﻪ ﺧـﺼﻮﺻﺎ إذا ﻛـﺎن ﺻـﻐﯿﺮ اﻟﺤﺠـﻢ دون اﻟﺤﺎﺟـﺔ‬
‫ﻟﺘﺤﻤﯿﻞ أي ﻣﻠﻒ إﻟﻰ ﺟﮫﺎز اﻟﺰﺑﻮن‪.‬و ﻛﻲ ﻧﻔﮫﻢ ﺧﺎﺻﯿﺔ ‪ stand alone‬ﻳﻤﻜـﻦ أن ﻧﻌﻄـﻲ ﻣﺜـﺎﻻ ﻋـﻦ اﻟﻔـﺎﻛﺲ‬
‫ﻓﮫﺬا اﻟﺠﮫﺎز ﻻ ﻳﺤﺘﺎج ﻷي ﺟﮫﺎز آﺧﺮ ﻟﻜﻲ ﻳﻌﻤﻞ‪ ,‬ﺑﯿﻨﻤﺎ اﻟﻄﺎﺑﻌﺔ ﻻ ﺗـﺪﻋﻢ ھـﺬه اﻟﺨﺎﺻـﯿﺔ ﻷﻧﮫـﺎ ﺗﺤﺘـﺎج ﻟﺠﮫـﺎز‬
‫ﻛﻤﺒﯿﻮﺗﺮ ﻟﻜﻲ ﺗﻌﻤﻞ‪.‬ھﺬا اﻟﻤﺜﺎل ﻳﺘﻌﻠـﻖ ﺑﺎﻟﻌﺘـﺎد و ﻳﻤﻜـﻦ ﺗﻔـﺴﯿﺮه ﻋﻠـﻰ ‪.SOFTWARE‬ﻣـﻊ ھـﺬا ﻳﺠـﺐ أن ﻻ‬
‫ﻧﻌﺘﻘﺪ ﺑﺄن اﻟﺪﻟﻔﻲ ﻟﻦ ﻳﺤﺘﺎج ﻷي ﻣﻠﻒ ﻣﺮﻓﻖ ﻟﻜﻲ ﻳﻌﻤﻞ‪ ,‬ﺑﻞ ﺳﯿﺤﺘﺎج اﻟﻤﺒﺮﻣﺞ إﻟﻰ ﻋﻤـﻞ ‪ setup‬ﻟﺒﺮﻧﺎﻣﺤـﻪ‬
‫ﻟﻜﻲ ﻳﺮﻓﻖ اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻤﻠﻔﺎت‪ ,‬ﻓﻔﻲ أﺑﺴﻂ اﻷﺣﻮال ﺳﺘﺤﺘﺎج ﻟﺘﺤﺰﻳﻢ ﺑﻌﺾ ﻣﻠﻔﺎت اﻟﺨﻄـﻮط ﻣـﻊ ﺑﺮﻧﺎﻣﺠـﻚ و‬
‫اﻟﺘﻲ ﻳﻌﺘﻘﺪ أﻧﮫﺎ ﻏﯿﺮ ﻣﻮﺟﻮدة ﻋﻨـﺪ ﺟﮫـﺎز اﻟﺰﺑـﻮن‪ ,‬ﻓـﻀﻼ ﻋـﻦ اﻟﻤﻠﻔـﺎت اﻷﺳﺎﺳـﯿﺔ اﻟﺘـﻲ ﺑـﺪوﻧﮫﺎ ﻟـﻦ ﻳﻌﻤـﻞ‬
‫اﻟﺒﺮﻧﺎﻣﺞ ﺑﺸﻜﻞ ﻣﻼﺋﻢ أو ﻻ ﻳﻌﻤﻞ ﻋﻠﻰ اﻹﻃﻼق‪.‬‬

‫ﻋﻤﻮﻣﺎ ﻳﻤﻜﻦ ﺗﻘﺴﯿﻢ ﺑﯿﺌﺔ اﻟﺘﻄﻮﻳﺮ دﻟﻔﻲ إﻟﻰ ‪ 6‬أﺟﺰاء ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‪:‬‬

‫اﻟﻤﮫﺎم‬ ‫اﻟﻌﻨﻮان‬
‫أو ﺷﺮﻳﻂ اﻟﻌﻨﻮان ﺣﯿﺚ ﻳﻈﮫﺮ ﻓﯿﻪ إﺳﻢ اﻟﻤﺸﺮوع ﺑﻌﺪ رﻗﻢ إﺻﺪار دﻟﻔـﻲ‪ ,‬و ﻳﻤﻜـﻦ‬ ‫‪title bar‬‬
‫ﺗﻐﯿﯿﺮ إﺳﻢ اﻟﻤﺸﺮوع ﻋﻨﺪ ﻋﻤﻠﯿﺔ اﻟﺘﺨﺰﻳﻦ‪.‬‬ ‫‪1‬‬

‫أو ﺷﺮﻳﻂ اﻟﻘﻮاﺋﻢ و ﻳﻀﻢ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻘﻮاﺋﻢ ﻣﻨﮫﺎ ﻣﺎ ھﻮ ﺷﺎﺋﻊ ﻓـﻲ ﻣﺨﺘﻠـﻒ اﻟﺒـﺮاﻣﺞ‬ ‫‪main menu‬‬
‫ﻣﺜﻞ اﻟﻘﺎﺋﻤﺔ ‪ FILE‬و ‪ EDIT‬و ﻣﻨﮫﺎ ﻣﺎ ھﻮ ﺧﺎص ﺑﺒﯿﺌﺔ دﻟﻔﻲ‪:‬‬ ‫‪2‬‬

‫ﺗﺴﺘﺨﺪم ﻟﻔﺘﺢ و إﻋﺎدة ﻓﺘﺢ و ﻛﺬا ﺣﻔـﻆ اﻟﻤـﺸﺎرﻳﻊ و‬ ‫‪file‬‬


‫إﻏﻼق ﺑﯿﺌﺔ اﻟﺘﻄﻮﻳﺮ ‪.‬‬

‫ﺗﻀﻢ ﺑﻌـﺾ اﻷواﻣـﺮ اﻟﮫﺎﻣـﺔ ﻛـﺎﻟﺘﺮاﺟﻊ ﻋـﻦ آﺧـﺮ ﻋﻤـﻞ‬ ‫‪edit‬‬


‫ﻗﻤﺖ ﺑﻪ‪,‬ﻓﻀﻼ ﻋﻦ أواﻣﺮ اﻟﻨﺴﺦ و اﻟﻠﺼﻖ و اﻟﺘﻨﺴﯿﻖ‪.‬‬

‫ﻟﻠﻘﯿــﺎم ﺑﻌﻤﻠﯿــﺔ اﻟﺒ ﺤــﺚ ﻋــﻦ أي ﻛــﺎﺋﻦ أو ﻋﺒــﺎرة داﺧــﻞ‬ ‫‪search‬‬


‫اﻟﺒﺮﻧﺎﻣﺞ‬
‫ﺗﺴﺘﺨﺪم ﻹﻇﮫﺎر ﺑﻌﺾ اﻟﻨﻮاﻓﺬ ﻓﻲ ﺑﯿﺌﺔ اﻟﺘﻄﻮﻳﺮ‪.‬‬ ‫‪View‬‬
‫ﻹدارة اﻟﻤــﺸﺮوع و ﺑﻨــﺎءه ﻓــﻀﻼ ﻋــﻦ إﺳــﺘﯿﺮاد و إﺿــﺎﻓﺔ‬ ‫‪project‬‬
‫ﻣﻜﺘﺒــﺎت أﺧــﺮى و ﻛــﺬا ﺿــﺒﻂ ﺧﺼﺎﺋــﺼﻪ ﻣــﻦ ﺣﯿــﺚ ﻇﮫــﻮر‬
‫اﻟﻨﻤﺎذج و اﻷﻳﻘﻮﻧﺔ‪.‬‬
‫ﻟﺘﻨﻔﯿــﺬ اﻟﺒﺮﻧــﺎﻣﺞ‪ ,‬و ﻳﻤﻜــﻦ ﻋﻤــﻞ ذﻟــﻚ ﻣــﻦ ﺧــﻼل‬ ‫‪run‬‬
‫اﻟﻤﺆﺷﺮ اﻷﺧﻀﺮ اﻟﺬي ﻳﻈﮫـﺮ ﻓـﻲ اﻟـﺼﻮرة أﻋـﻼه ‪.‬ﻛﻤـﺎ‬
‫ﺗﺘﻤﯿــﺰ ھــﺬه اﻟﻘﺎﺋﻤــﺔ ﺑﺘــﻮﻓﺮ ﻋــﺪة أواﻣــﺮ ﻟﻠﺘﻌﺎﻣــﻞ ﻣــﻊ‬
‫ﺗﻨﻘﯿﺢ اﻟﺒﺮﻧﺎﻣﺞ أو ﻣﺎ ﻳﻌﺮف ﺑـ ‪. debugging‬‬

‫ﻟﻠﺘﻌﺎﻣــﻞ ﻣــﻊ اﻟﻤﻜﻮﻧــﺎت ﻛﺈﺿــﺎﻓﺔ أدوات ﺟﺪﻳــﺪة ﻏﯿــﺮ‬ ‫‪Component‬‬


‫ﻣﻮﺟـــﻮدة ﺿـــﻤﻦ ﻗﺎﺋﻤـــﺔ اﻷدوات‪ ,‬أو اﻟﻌﻤـــﻞ ﻋﻠـــﻰ‬
‫إﻧﺸﺎءھﺎ ‪.‬‬

‫ﺗﺴﺘﺨﺪم ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻷدوات اﻟﻤﺮﺗﺒﻄﺔ ﺑﻘﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت‬ ‫‪Database‬‬


‫ﺗﻈﻢ ﻗﺎﺋﻤﺔ ﻣﻦ اﻷدوات و اﻟﺒﺮاﻣﺞ اﻟﻤﻨﻔﺼﻠﺔ و اﻟﺘﻲ ﻳﻤﻜﻦ‬ ‫‪Tools‬‬
‫اﺳــﺘﺪﻋﺎﺋﮫﺎ ﻣــﻦ ھــﺬه اﻟﻘﺎﺋﻤــﺔ ﻟﺘــﺴﮫﯿﻞ اﻟﻤﮫــﺎم ﻋﻠــﻰ‬
‫اﻟﻤﺒﺮﻣﺞ‬
‫ﻣــﻦ اﻟﻘــﻮاﺋﻢ اﻟــﺸﺎﺋﻌﺔ ﻓــﻲ ﻣﺨﺘﻠــﻒ اﻟﺒــﺮاﻣﺞ و وﻇﯿﻔﺘﮫــﺎ‬ ‫‪Windows‬‬
‫اﻟﺘﺤﻜﻢ ﻓﻲ ﻇﮫﻮر اﻟﻨﻮاﻓﺬ اﻟﻤﻔﺘﻮﺣﺔ داﺧﻞ ﺑﯿﺌﺔ دﻟﻔﻲ‪.‬‬
‫ﺗﻌﺘﺒـــﺮ إﺣـــﺪى أھـــﻢ اﻟﻘـــﻮاﺋﻢ ﻻﺣﺘﻮاﺋﮫـــﺎ ﻋﻠـــﻰ ﻣﻠﻔـــﺎت‬ ‫‪Help‬‬
‫اﻟﻤــــﺴﺎﻋﺪة اﻟﺨﺎﺻــــﺔ ﺑﻠﻐــــﺔ دﻟﻔــــﻲ و ﺑﯿﺌــــﺔ اﻟﺘﻄــــﻮﻳﺮ‬
‫اﻟﻤﺘﻜﺎﻣﻠــﺔ‪.‬ﻛﻤــﺎ أﻧﮫــﺎ ﺗﺤﺘــﻮي ﻋﻠــﻰ اﻷﻣــﺮ ‪ about‬و اﻟــﺬي‬
‫ﻳﻤﻜّﻦ اﻟﻤﺒﺮﻣﺞ ﻣﻦ ﻣﻌﺮﻓـﺔ ﺗﻔﺎﺻـﯿﻞ إﺻـﺪار اﻟـﺪﻟﻔﻲ اﻟﺘـﻲ‬
‫ﻳﻌﻤــﻞ ﻋﻠﯿﮫــﺎ‪.‬ﻛﻤــﺎ ﻧﺠــﺪ ﻗــﺴﻤﺎ ﻣﺨﺼــﺼﺎ ﻟــﺒﻌﺾ اﻟﻤﻮاﻗــﻊ‬
‫اﻟﺨﺎﺻﺔ ﺑﺸﺮﻛﺔ ﺑﻮرﻻﻧﺪ و ﻟﻐﺔ دﻟﻔﻲ ﺑﺼﻔﺔ ﺧﺎﺻﺔ و اﻟﺘـﻲ‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫ﻳﻤﻜﻦ ﻟﻠﻤﺒﺮﻣﺞ زﻳﺎرﺗﮫـﺎ ﺧـﺼﻮﺻﺎ إذا أراد ﻣﻄﺎﻟﻌـﺔ اﻷﺳـﺌﻠﺔ‬
‫اﻟﺸﺎﺋﻌﺔ ﻋﻦ دﻟﻔﻲ‪.‬‬
‫‪ 3‬ﺷــــــﺮﻳﻂ اﻷدوات أو و ﺗﺤﺘﻮي ﻋﻠﻰ ﻣﻜﺘﺒﺔ ﺿﺨﻤﺔ ﻣﻦ اﻷدوات اﻟﻤﺮﺋﯿـﺔ اﻟﺘـﻲ ﺗﻤﯿـﺰ ﻟﻐـﺔ دﻟﻔـﻲ ﻋـﻦ ﺑـﺎﻗﻲ‬
‫ﻣﻜﺘﺒــــﺔ اﻟﻤﻜﻮﻧــــﺎت ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ‪.‬ﻳﻤﻜﻨﻨﺎ ﺗﺼﻨﯿﻒ ھﺬه اﻷدوات ﺣﺴﺐ وﻇﯿﻔﺘﮫـﺎ إﻟـﻰ أﺑـﻮاب ﺣﯿـﺚ أن ﻛـﻞ‬
‫ﺑﺎب ﻳﺤﺘﻮي ﻋﻠﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷدوات اﻟﺨﺎﺻﺔ ﺑﻪ‪ .‬ﻳﻤﻜﻨﻨﺎ ﺑﺼﻔﺔ ﻋﺎﻣﺔ ﻋـﺮض اﻷﺑـﻮاب‬ ‫اﻟﻤﺮﺋﯿﺔ "‪" VCL‬‬
‫‪ Visual component‬اﻷﺳﺎﺳﯿﺔ ﻓﻲ ھﺬا اﻟﺠﺪول‪.‬‬
‫أﺑــــــﻮاب اﻷدوات اﻷﻛﺜــــــﺮ ﻧﺠﺪ ﻓـﻲ اﻟﻘﺎﺋﻤـﺔ ‪ standard‬اﻷدوات اﻟﻘﯿﺎﺳـﯿﺔ و‬ ‫‪Library‬‬
‫اﻟﺘــﻲ ﻻ ﻳﻤﻜﻨﻨــﺎ اﻹﺳـــﺘﻐﻨﺎء ﻋﻨﮫــﺎ ‪,‬ﻣﺜـــﻞ اﻷداة‬ ‫إﺳﺘﻌﻤﺎﻻ‬
‫‪.Panel,Label,ComboBox,Button‬ﻛﻤـــــﺎ ﻧﺠـــــﺪ‬
‫ﻗـــــﻮاﺋﻢ أﺧـــــﺮى ﻣﺜـــــﻞ ‪Win3.1,Additional :‬‬
‫‪ . dialogs ,Win32, Sample, System,‬و اﻟﺘـــــــﻲ‬
‫ﺗﺘﻌﺪى ﻣﮫـﺎم اﻷدوات اﻟﻤﻮﺟـﻮدة ﻓﯿﮫـﺎ ﻣـﻦ أدوات‬
‫ﺗﺤﺎﻛﻲ أﻧﻈﻤﺔ اﻟﺘﺸﻐﯿﻞ إﻟﻰ أدوات ﻟﻠﺘﻌﺎﻣـﻞ ﻣـﻊ‬
‫ﺻﻨﺎدﻳﻖ اﻟﺤﻮار ‪ ,‬ﻓﻀﻼ ﻋﻦ أدوات اﻟﺘﻨﺴﯿﻖ‪.‬‬
‫أﺑــــــﻮاب أدوات ﻗﻮاﻋــــــﺪ ﺗﻮﺟــﺪ اﻟﻜﺜﯿــﺮ ﻣــﻦ اﻷدوات ﻟﻠﺘﻌﺎﻣــﻞ ﻣــﻊ ﻗﻮاﻋــﺪ‬
‫اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﺣﯿﺚ اﻹﺗﺼﺎل و إﻧﺸﺎء اﻹﺳـﺘﻌﻼﻣﺎت‬ ‫اﻟﺒﯿﺎﻧﺎت‬
‫و اﻟﺘﻲ ﻳﻤﻜﻦ اﻟﻮﺻﻮل إﻟﯿﮫﺎ ﻣﻦ ﺧﻼل ﻋﺪة ﻗﻮاﺋﻢ‪:‬‬
‫‪ADO,DBE,DataSnap,Dbexpress,Interbase,‬‬
‫‪Data access, Data contorols.‬‬
‫و ﺗﻀﻢ ھﺬه اﻷﺧﯿﺮة اﻷدوات اﻷﻛﺜﺮ إﺳﺘﻌﻤﺎﻻ ﻓـﻲ‬
‫ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻣﺜﻞ‪:‬‬
‫‪DBGrid,DBNavigator,DBEdit‬‬
‫أﺑــﻮاب أدوات اﻟﺘﻌﺎﻣــﻞ ﻣــﻊ و ﺗﺘﻨـــﻮع ﻓﯿﮫـــﺎ اﻷدوات ﺣـــﺴﺐ اﻟﺘﺒﻮﻳـــﺐ اﻟﺘـــﻲ‬
‫ﺗﻨﻀﻮي ﺗﺤﺘﻪ و إن ﻛﺎﻧﺖ ﻓﻲ ﻣﺠﻤﻠﮫﺎ ﺗـﺼﺐ ﻓـﻲ‬ ‫اﻟﻮﻳﺐ‬
‫ﻣﻔﮫــﻮم ﺑﺮﻣﺠــﺔ ﺗﻄﺒﯿﻘــﺎت وﻳــﺐ و اﻟﺘﻌﺎﻣــﻞ ﻣــﻊ‬
‫اﻟﻤــﺰود و اﻟﺰﺑــﻮن ‪.‬أھــﻢ اﻷﺑــﻮاب اﻟﻤﺆدﻳــﺔ ﻟﮫــﺬه‬
‫اﻷدوات ھﻲ ‪:‬‬
‫‪WebServices,InternetExpress,Internet,‬‬
‫‪WebSnap,‬‬
‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻸدوات اﻟﺘﻲ ﻳﻤﻜﻦ إﺳﺘﺪﻋﺎﺋﮫﺎ ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪ component‬ﻓﻲ ﺷﺮﻳﻂ اﻟﻘﻮاﺋﻢ‪ ,‬ﻓﮫﻲ ﻋـﺎدة ﻣـﺎ ﺗﻈﮫـﺮ ﻓـﻲ‬
‫اﻟﺘﺒﻮﻳﺐ ‪.ActiveX‬‬

‫و ھﻮ اﻟﺤﺎﺿﻨﺔ اﻟﺘـﻲ ﺗﺠﻤـﻊ اﻷدوات اﻟﻤـﺴﺘﺨﺪﻣﺔ ﻓـﻲ اﻟﻤـﺸﺮوع‪ ,‬ﺣﯿـﺚ أﻧـﻪ ﻳـﺸﻜﻞ‬ ‫‪ 4‬اﻟﻨﻤﻮذج )‪( Form‬‬
‫واﺟﮫﺔ اﻟﺘﻄﺒﯿﻖ ‪.‬‬
‫ﻳﻘﻮم ھﺬا اﻹﻳﻄﺎر ﺑﻌﺮض اﻷدوات اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ اﻟﻤـﺸﺮوع ﺑـﺸﻜﻞ ﻋﻼﺋﻘـﻲ‪ .‬ﺣﯿـﺚ‬ ‫‪Object 5‬‬
‫ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪم ﻣﺸﺎھﺪة اﻷدوات و ﺗﺤﺪﻳﺪھﺎ ﻣﻦ أﺟـﻞ ﺿـﺒﻂ ﺧﺼﺎﺋـﺼﮫﺎ ﻣـﻦ ﻧﺎﻓـﺬة‬ ‫‪TreeView‬‬
‫اﻟﺨﺼﺎﺋﺺ‪.‬‬
‫ﻳﺤﺘﻮي ھﺬا اﻹﻳﻄﺎر ﻋﻠﻰ ﺻﻔﺤﺘﯿﻦ أﺳﺎﺳﯿﺘﯿﻦ ‪:‬‬ ‫‪Object 6‬‬
‫‪ :Properties‬و ﺗــﻀﻢ ﺧــﺼﺎﺋﺺ ﻛــﻞ أداة ﻣــﺴﺘﺨﺪﻣﺔ ‪ ,‬ﺣﯿــﺚ ﻳﻤﻜــﻦ ﻟﻠﻤﺒ ـﺮﻣﺞ اﻟﺘﻌــﺪﻳﻞ‬ ‫‪Inspector‬‬
‫ﻋﻠﯿﮫﺎ‪.‬‬
‫‪ :Events‬ﺻﻔﺤﺔ اﻷﺣﺪاث ﺗﻤﻜﻨﻨﺎ ﻣﻦ إﺧﺘﯿﺎر اﻟﺤﺪث اﻟﻤﺮﺗﺒﻂ اﻟﺬي ﻧﺮﻳﺪ إﻧﺸﺎء إﺟﺮاء إﺛـﺮ‬
‫ﺣﺪوﺛﻪ‪ ,‬ﻳﻤﻜﻦ إﺧﺘﯿﺎر أي ﺣﺪث ﺑﺎﻟﻨﻘﺮ اﻟﻤﺰدوج ﻋﻠﻰ اﻹﻳﻄﺎر اﻟﻤﻘﺎﺑﻞ ﻟﻪ‪ ,‬و ﺳﻮف ﺗﻔـﺘﺢ‬
‫ﻧﺎﻓﺬة ﺗﺤﺮﻳﺮ اﻟﻜﻮد ﻣﺼﺤﻮﺑﺔ ﺑﺎﻹﺟﺮاء اﻟﻤﺮﺗﺒﻂ ﺑﺎﻟﺤﺪث اﻟﻤﺤﺪد‪.‬‬
‫ﺗﻀﻢ ھﺬه اﻷﺷﺮﻃﺔ أزرارا ﻟﻠﻮﺻﻮل اﻟﺴﺮﻳﻊ ﻷھﻢ أواﻣﺮ دﻟﻔﻲ ‪.‬ﻳﻤﻜﻦ ﺗﻨﻔﯿـﺬ اﻟﺒﺮﻧـﺎﻣﺞ أو‬ ‫‪Speed Buttons 7‬‬
‫إﺿﺎﻓﺔ ﻧﻤﻮذج ﻣﻦ ﺧﻼل ھﺬا اﻟﺸﺮﻳﻂ‪ .‬ﻳﺠﺪر ﺑﻨﺎ اﻟﺬﻛﺮ أن أﺳﻤﺎء و وﺿﺎﺋﻒ أدوات دﻟﻔـﻲ‬ ‫‪Bars‬‬
‫ﻋﺎدة ﻣﺎ ﺗﻈﮫﺮ ﻋﻨﺪ وﺿﻊ اﻟﻤﺆﺷﺮ ﻋﻠﯿﮫﺎ ‪.‬ﻓﻠﻮ ﻗﻤﺖ ﻣﺜﻼ ﺑﻮﺿﻊ اﻟﻤﺆﺷﺮ ﻓﻮق اﻟﺰر اﻷﺧﻀﺮ ‪,‬‬
‫ﺳﯿﻈﮫﺮ اﻟﺘﻌﻠﯿﻖ اﻟﺘﺎﻟﻲ "‪ . "Run F9‬و اﻟﺬي ﻳﺨﺒﺮﻧﺎ ﺑﻤﮫﺎم اﻟﺰر اﻟﻤﺤﺪد‪.‬‬
‫ﺗﻈﮫﺮ ھﺬه اﻟﻨﺎﻓﺬة ﺧﻠﻒ اﻟﻨﻤﻮذج ‪ ,‬و ﺗﺴﺘﺨﺪم ﻛﻤﺤﺮر ﻟﻸﻛـﻮاد ‪.‬و ﻛﻤـﺎ ﺳـﺘﻼﺣﻆ ﻓﮫـﻲ‬ ‫‪UNIT 8‬‬
‫ﺗﺘﻜﻮن ﻣﻦ اﻟﺘﺮﻛﯿﺐ اﻟﺨﺎص ﺑﻠﻐﺔ دﻟﻔﻲ ﺣﯿﺚ ﺗﺒﺪأ ﺑﺈﺳﻢ اﻟﻮﺣﺪة و ﺗﻨﺘﮫﻲ ﺑﺎﻟﻜﻠﻤﺔ ‪End‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫ﻻ ﻳﻤﻜﻨﻨﺎ ﻓﮫﻢ اﻟﺪور اﻟﺤﻘﯿﻘﻲ ﻟﻠﻌﻨﺎﺻﺮ اﻟﺴﺎﺑﻘﺔ اﻟﺬﻛﺮ ﻣﺎ ﻟﻢ ﻧﻘﻢ ﺑﺘﺠﺮﻳـﺐ اﻟﻌﻤـﻞ ﻋﻠﯿﮫـﺎ ‪.‬ﻟﮫـﺬا ﺳﻨـﺴﺘﻌﺠﻞ‬
‫ﻗﻠﯿﻼ ﻹﻧﺸﺎء أول ﻣﺸﺮوع ﺑﻠﻐﺔ دﻟﻔﻲ‪.‬‬
‫أول ﻣﺸﺮوع ﺑﻠﻐﺔ دﻟﻔﻲ‪:‬‬
‫ﻋﻨﺪ ﺗﺸﻐﯿﻞ دﻟﻔﻲ ﻓﺈﻧﻪ ﻳﻘﻮم ﺗﻠﻘﺎﺋﯿﺎ ﺑﺈﻧﺸﺎء ﻧﻤﻮذج ﻛﻲ ﻳﺤﻮي اﻷدوات اﻟﺘﻲ ﺗﻮد اﺳﺘﺨﺪاﻣﮫﺎ‪.‬ﻟﮫـﺬا ﻣـﺎ ﻳﺠـﺐ‬
‫ﻋﻠﯿﻚ اﻟﻘﯿﺎم ﺑﻪ ھﻮ وﺿﻊ اﻷداة ‪ Button‬ﻋﻠﻰ اﻟﻨﻤﻮذج ‪,‬ﺣﯿﺚ ﻳﻤﻜـﻦ اﻟﻮﺻـﻮل ﻟﮫـﺬه اﻷداة ﻣـﻦ ﻗﺎﺋﻤـﺔ اﻷدوات‬
‫‪. Standard‬‬
‫ﻗﻢ ﺑﺘﺤﺪﻳﺪ ھﺬه اﻷداة ﺑﻮﺿﻊ ﻣﺆﺷﺮ اﻟﻔﺄرة ﻋﻠﯿﮫﺎ ﺛﻢ اﻧﺘﻘﻞ إﻟﻰ ﻧﺎﻓﺬة اﻟﺨـﺼﺎﺋﺺ ﻟـﻀﺒﻂ ﺧﺼﺎﺋـﺼﮫﺎ ﻛﻤـﺎ ﻓـﻲ‬
‫اﻟﺼﻮرة ‪.‬‬

‫ﻳﻤﻜﻦ ﻣﻼﺣﻈﺔ أن إﺳﻢ اﻷداة ﻓﻲ أﻋﻠﻰ ﻧﺎﻓﺬة اﻟﺨﺼﺎﺋﺺ و ھﻮ "‪. "Button1‬أﻣـﺎ ﻋﻨـﻮان اﻷداة أي "‪"caption‬‬
‫ﻓﮫﻮ " ﻣﺮﺣﺒﺎ"‪ .‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺨﺎﺻﯿﺔ ‪ Cursor‬ﻓﮫﻲ " ‪. " crHand point‬ﻻﺣﻆ أن ﻋﻨﻮان اﻷداة ﻳﻈﮫﺮ ﻣﺒﺎﺷﺮة ﺑﻌـﺪ‬
‫اﻟﻘﯿﺎم ﺑﺘﻌﺪﻳﻠﻪ ﺣﯿﺚ ﻛﺎن ﻓﻲ اﻟﺴﺎﺑﻖ ‪ , Button1‬أﻣـﺎ اﻟﺨﺎﺻـﯿﺔ اﻟﺜﺎﻧﯿـﺔ اﻟﺘـﻲ ﻗﻤﻨـﺎ ﺑﺘﻌـﺪﻳﻠﮫﺎ ‪ Cursor‬ﻓﮫـﻲ‬
‫ﻟﺘﺤﺪﻳﺪ ﻧﻮع اﻟﻤﺆﺷﺮ اﻟﺬي ﻳﻈﮫﺮ ﻋﻠﻰ اﻷداة ﻋﻨﺪ ﺗﻘﺮﻳﺐ ﻣﺆﺷﺮ اﻟﻔ ﺄرة ﻣﻨﮫﺎ‪.‬و ﻛﻤﺎ ﺗﺸﺎھﺪ ﻓﻲ اﻟﻘﺎﺋﻤـﺔ‪ ,‬ﻓﻘـﺪ‬
‫اﺧﺘﺮﻧﺎ ﻣﺆﺷﺮ اﻟﯿﺪ ‪.‬ﻟﻜﻦ ھﺬه اﻟﺨﺎﺻﯿﺔ ﻻ ﻳﻤﻜﻦ ﻣﻼﺣﻈﺘﮫﺎ أﺛﻨﺎء اﻟﺘﺼﻤﯿﻢ ﺑﻞ ﻻﺑﺪ أن ﻧﻨﺘﻈﺮ وﻗﺖ اﻟﺘﻨﻔﯿﺬ‪.‬ﺗﻮﺟﺪ‬
‫اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﺨﺼﺎﺋﺺ اﻟﺘﻲ ﻳﻤﻜﻦ اﻟﺘﻌﺪﻳﻞ ﻓﯿﮫﺎ‪ ,‬ﻟﻜﻨﻨﺎ ﻣﻊ ذﻟﻚ ﻟﻦ ﻧﺜﻘﻞ ﻋﻠﯿﻚ ﻓﻲ ﻣﺸﺮوﻋﻚ اﻷول‪.‬‬

‫اﻵن ﺣﺎن وﻗﺖ ﻛﺘﺎﺑﺔ اﻷﻛﻮاد‪.‬ﺣﺴﻨﺎ‪ ,‬ﻗـﻢ ﺑـﺎﻟﻨﻘﺮ اﻟﻤـﺰدوج ﻋﻠـﻰ اﻟـﺰر " ﻣﺮﺣﺒـﺎ" ﻓـﻲ اﻟﻨﻤـﻮذج أو ﻋﻠـﻰ اﻷداة‬
‫‪ Button1‬ﻓﻲ إﻳﻄﺎر ‪ Object TreeView‬ﻟﯿﻈﮫﺮ ﻟﻚ ﻣﺤﺮر اﻷﻛﻮاد‪.‬‬
‫ﺑﯿﻦ اﻟﻜﻠﻤﺘﯿﻦ اﻟﻤﺤﺠﻮزﺗﯿﻦ ‪ Begin‬و ‪ End‬أﻛﺘﺐ اﻷﻣﺮ اﻟﺬي ﻳﻈﮫﺮ ﺑﺎﻟﻠﻮن اﻷزرق‪:‬‬

‫;)‪procedure Tform1.Button1Click(Sender: TObject‬‬


‫‪begin‬‬
‫;) ' ﻣﺮﺣﺒﺎ ﺑﻜﻢ ﻓﻲ ﻋﺎﻟﻢ دﻟﻔﻲ' (‪ShowMessage‬‬
‫;‪end‬‬

‫‪end.‬‬

‫ﻣﻔﺎد اﻷﻣﺮ اﻟﺴﺎﺑﻖ ھﻮ ‪:‬ﻋﻨﺪ اﻟﻨﻘـﺮ ﻋﻠـﻰ اﻷداة ‪ , Button1‬أﻇﮫـﺮ اﻟﺮﺳـﺎﻟﺔ اﻟﺘﺎﻟﯿـﺔ " ﻣﺮﺣﺒـﺎ ﺑﻜـﻢ ﻓـﻲ ﻋـﺎﻟﻢ‬
‫دﻟﻔﻲ"‪.‬‬
‫ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﺻﺤﺔ ﻣﺎ ﻗﻤﺖ ﺑﻪ ‪ ,‬ﻳﺠﺐ ﺗﻨﻔﯿـﺬ اﻟﺒﺮﻧـﺎﻣﺞ و ذﻟـﻚ إﻣـﺎ ﻣـﻦ اﻟﻘﺎﺋﻤـﺔ ‪ Run‬ﺿـﻤﻦ ﺷـﺮﻳﻂ اﻟﻘـﻮاﺋﻢ أو‬
‫اﻟﺴﮫﻢ اﻷﺧﻀﺮ ﺿﻤﻦ ‪ , Speed Buttons Bars‬أو ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪. F9‬ﻗـﻢ ﺑﺎﻟـﻀﻐﻂ ﻋﻠـﻰ اﻷداة اﻟﺘـﻲ ﺗﺤﻤـﻞ‬
‫اﻟﻌﻨﻮان" ﻣﺮﺣﺒﺎ " و ﺳﯿﻈﮫﺮ ﻣﺎ ﻳﻠﻲ‪:‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫إذا ﻧﺠﺤﺖ اﻟﻌﻤﻠﯿﺔ ﻓﮫﺬا أﻣﺮ ﺟﯿﺪ ‪ .‬إذا ﻟﻢ ﺗﻨﺠﺢ ﻗﻢ ﺑﻤﺮاﺟﻌﺔ اﻟﻜﻮد ‪,‬ﻓﻠﻌﻠﻚ ﻧـﺴﯿﺖ ﻗﻮﺳـﺎ أو ﺣﺮﻓـﺎ ﻣـﺎ ﺿـﻤﻦ‬
‫اﻟﻜﻮد اﻟﻤﺴﺘﺨﺪم ‪.‬ﻓﻠﻮ ﻗﻤﺖ ﺑﻜﺘﺎﺑﺔ ‪ showmesage‬ﻓﺈن ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻟﻦ ﻳﻨﺠﺢ ﻷﻧﻚ ارﺗﻜﺒﺖ ﺧﻄﺄ اﻣﻼﺋﯿﺎ‪.‬‬
‫ﺑﻌﺪ ﻧﺠﺎح اﻟﻌﻤﻠﯿﺔ‪ ,‬ﻗﻢ ﺑﺈﻏﻼق اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ زر اﻹﻏـﻼق أو ﻣـﻦ ﺧـﻼل ‪ Program Reset‬ﻓـﻲ ﻗﺎﺋﻤـﺔ ‪ , Run‬و‬
‫ﺗﻮﺟﻪ ﻣﺒﺎﺷﺮة إﻟﻰ اﻟﻘﺎﺋﻤﺔ ‪ File‬و اﺧﺘﺮ ‪ Save project as‬ﻣـﻦ أﺟـﻞ ﺣﻔـﻆ اﻟﻤـﺸﺮوع ‪.‬ﻳﺴﺘﺤـﺴﻦ أن ﺗﻨـﺸﺄ‬
‫ﻣﺠﻠﺪ ﻣﺴﺒﻘﺎ ﻟﻠﻤﺸﺮوع و ﻟﯿﻜﻦ ﻓﻲ اﻟﻘﺮص ‪ C‬ﺗﺤﺖ ﻋﻨﻮان ‪. Program‬ﻃﺒﻌﺎ ﻟﻚ اﻟﺤﺮﻳﺔ ﻓﻲ إﺳﻢ اﻟﻤﺠﻠـﺪ و‬
‫ﻣﻜﺎﻧﻪ و ﻟﻜﻦ ﻣﺎ اﻗﺘﺮﺣﺘﻪ ﻟﺘﺴﮫﯿﻞ اﻟﻮﺻﻮل ﻟﻠﻤﺠﻠـﺪ ﻓﻘـﻂ‪.‬ﺣـﺴﻨﺎ ﺑﻌـﺪ ﻗﯿﺎﻣـﻚ ﺑﺎﺧﺘﯿـﺎر ‪ Save Project As‬ﻗـﻢ‬
‫ﺑﺘﻐﯿﯿﺮ إﺳﻢ اﻟﻮﺣﺪة ﻣﻦ ‪ Unit1‬إﻟﻰ ‪ HELLOF‬ﺛﻢ ﻗﻢ ﺑﺎﻟﺤﻔﻆ ﻓﻲ اﻟﻤﺠﻠﺪ اﻟﻤﺤﺪد ‪.‬ﺛﻢ ﻗﻢ ﺑﺘﻐﯿﯿـﺮ إﺳـﻢ ﻣﻠـﻒ‬
‫اﻟﻤﺸﺮوع ﻣﻦ ‪ Project1‬إﻟﻰ ‪ .HELLO‬ﻗﺒﻞ إﻏﻼق ﺑﯿﺌﺔ دﻟﻔﻲ ﻗﻢ ﺑﻔﺘﺢ اﻟﻤﺠﻠـﺪ اﻟـﺬي ﺣﻔﻈـﺖ ﺑـﻪ اﻟﻤﻠﻔـﺎت‬
‫اﻟﺴﺎﺑﻘﺔ‪.‬ﺣﯿﺚ ﺳﺘﺠﺪ ﺳﺖ ﻣﻠﻔﺎت ‪ .‬ﻟﻜﻦ أﻳﻦ اﻟﻤﻠﻒ اﻟﺘﻨﻔﯿﺬي اﻟﺬي ﻳﺤﻤﻞ اﻹﻣﺘﺪاد ‪EXE‬؟‪.‬‬
‫ﻻ ﻋﻠﯿﻚ ﻗﻢ ﺑﺘﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺻﻤﻤﺘﻪ ﻣﺠﺪدا ﻣﻦ ﺑﯿﺌﺔ دﻟﻔﻲ ‪ ,‬ﺛﻢ ﻗﻢ ﺑﺈﻏﻼﻗﻪ و إﻏﻼق ﺑﯿﺌﺔ دﻟﻔﻲ ﻛﻜﻞ‪,‬‬
‫و اﻧﺘﻘﻞ إﻟﻰ اﻟﻤﺠﻠﺪ و ﺳﺘﺠﺪ اﻟﻤﻠﻒ اﻟﺘﻨﻔﯿﺬي ‪ ,‬ﺣﯿﺚ ﻳﻤﻜﻨﻚ اﻟﻨﻘﺮ ﻋﻠﯿﻪ ﺑﺸﻜﻞ ﻣـﺰدوج ﻟﯿﻌﻤـﻞ ﺧـﺎرج ﺑﯿﺌـﺔ‬
‫دﻟﻔﻲ‪.‬‬
‫إن ﻣﺎ ﻗﻤﺖ ﺑﻪ ھﻮ ﻣﺠﺮد ﺑﺮﻧﺎﻣﺞ ﺻﻐﯿﺮ ﻳﻤﻜﻦ أن ﺗﻨﻘﻠﻪ ﻟﺠﮫﺎز آﺧﺮ ﻻ ﻳﺤﺘﻮي ﻋﻠﻰ ﺑﯿﺌﺔ دﻟﻔﻲ‪ ,‬و ﺳﻮف ﺗﻼﺣﻆ‬
‫أﻧﻪ ﺳﯿﻌﻤﻞ دون أي ﻣﺸﻜﻠﺔ‪.‬ﻃﺒﻌﺎ ﻳﻤﻜﻨﻚ أن ﺗﺒﻨﻲ ﺑﺮاﻣﺞ ﻣﺤﺘﺮﻣﺔ و ﺗﻮزﻳﻌﮫـﺎ ﺑﮫـﺬا اﻟـﺸﻜﻞ ﻟﻜـﻦ ﻳﻨﺒﻐـﻲ أن‬
‫ﺗﻜﻮن ﻣﻠﻤﺎ ﺑﺒﻌﺾ اﻷﻣﻮر اﻟﮫﺎﻣﺔ اﻟﺘﻲ ﺗﺴﺎﻋﺪك ﻓﻲ ﺑﻨﺎء ﺑﺮاﻣﺠﻚ ‪ ,‬ﻣﺜﻞ اﻟﺘﺮﻛﯿﺐ اﻟﺪاﺧﻠﻲ ﻟﻠﻐﺔ دﻟﻔـﻲ و ﻛـﺬا‬
‫ﻛﯿﻔﯿﺔ إﻧﺸﺎء واﺟﮫﺔ ﻣﺴﺘﺨﺪم ﺳﮫﻠﺔ و أﻧﯿﻘﺔ ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ‪.‬‬
‫ﻓﻲ اﻟﺨﻄﻮات اﻟﻘﺎدﻣﺔ ﻟﻦ ﻧﻜﺮر ﻣﺎ ذﻛﺮﻧﺎه ﺳﺎﺑﻘﺎ ﻣﺜﻞ ﻛﯿﻔﯿﺔ ﺗﻨﻔﯿﺬ اﻟﻤـﺸﺮوع أو ﺣﻔﻈـﻪ أو إﺿـﺎﻓﺔ أدوات إﻟـﻰ‬
‫اﻟﻨﻤﻮذج ‪.‬إﻻ إذا دﻋﺖ اﻟﺤﺎﺟﺔ إﻟﻰ ذﻟﻚ ‪.‬‬
‫ﻣﻼﺣﻈﺔ ھﺎﻣﺔ‪ :‬إن ﻛﻞ أداة ﻓﻲ ﻟﻐﺔ دﻟﻔﻲ ﺗﺤﻤﻞ إﺳﻢ ﺧﺎص ﺑﮫﺎ ﻳﻈﮫﺮ ﻓﻲ ﻧﺎﻓﺬة اﻟﺨﺼﺎﺋﺺ ﻋﻠﻰ اﻟﺸﻜﻞ‬
‫‪. Name‬ﻛﻤﺎ أن ﻟﻤﻌﻀﻢ اﻷدوات ﻋﻨﻮان ‪ . Caption‬اﻟﻌﻨـﻮان ﻳﻈﮫـﺮ ﻋﻠـﻰ اﻷداة ﺑﻤﺠـﺮد ﺗﻌـﺪﻳﻠﮫﺎ‪.‬ﺑﯿﻨﻤـﺎ ا ﻹﺳـﻢ‬
‫ﻳﻘﺘﺼﺮ إﺳﺘﺨﺪاﻣﻪ ﺿﻤﻦ اﻷﻛﻮاد اﻟﺒﺮﻣﺠﯿﺔ ‪.‬ﺑﺒﺴﺎﻃﺔ ﻳﻤﻜﻦ أن ﺗﻜﺘﺐ ﻋﻨﻮاﻧﺎ ﺑﺎﻟﻠﻐﺔ اﻟﻌﺮﺑﯿـﺔ ﻛﻤـﺎ ﻋﻤﻠﻨـﺎ ﺳـﺎﺑﻘﺎ‬
‫)ﻣﺮﺣﺒﺎ( ﺑﯿﻨﻤﺎ ﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام إﺳﻢ ﺑﺎﻟﻠﻐﺔ اﻟﻌﺮﺑﯿﺔ‪.‬‬
‫ﺑﻌﺾ اﻷدوات ﻻ ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﺨﺎﺻﯿﺔ ‪ Caption‬ﺣﯿـﺚ ﻳﻨـﻮب ﻋﻨﮫـﺎ اﻟﺨﺎﺻـﯿﺔ ‪ Text‬أو أﻣـﻮر أﺧـﺮى‪ ,‬ﻛﻤـﺎ ھـﻮ‬
‫اﻟﺤﺎل ﻟﻸداة ‪.Edit‬‬

‫اﻟﺨﺼﺎﺋﺺ و اﻷﺣﺪاث‬

‫‪ -1‬اﻟﺨﺼﺎﺋﺺ‬

‫ﺗﺸﺘﺮك اﻟﻜﺜﯿﺮ ﻣﻦ اﻷدوات ﻓﻲ ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ اﻟﺘﻲ ﻻﺑﺪ ﻣﻦ ﻣﻌﺮﻓﺘﮫﺎ‪ .‬ﺑﯿﻨﻤﺎ ﺗﺒﻘـﻰ ﺑﻌـﺾ اﻟﺨـﺼﺎﺋﺺ ﺣﻜـﺮا‬
‫ﻋﻠﻰ أداة دون أﺧﺮى‪.‬‬
‫ﻓﻲ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﺳﻨﻘﻮم ﺑﺎﻟﺘﻌﺮف ﻋﻠﻰ أھﻢ اﻟﺨﺼﺎﺋﺺ‪ .‬و ﻧﺄﺧﺬ اﻷداة ‪ Form‬ﻛﻤﺜﺎل ﻟﻌﻤﻠﻨﺎ ھـﺬا ‪ ,‬ﺑﯿﻨﻤـﺎ‬
‫ﻳﺴﺘﻄﯿﻊ ﻛﻞ ﺷﺨﺺ اﺧﺘﺒﺎر ﺧﺼﺎﺋﺺ ﺑﺎﻗﻲ اﻷدوات ﺑﻤﻔﺮده ‪.‬‬
‫ﻃﺒﻌﺎ ﻻ ﻳﺴﻌﻨﺎ اﻟﻮﻗﺖ ﻟﻠﺤﺪﻳﺚ ﻋﻦ ﺟﻤﯿﻊ اﻟﺨﺼﺎﺋﺺ و إﻧﻤﺎ ﺳﻨﺮﻛﺰ ﻋﻠﻰ اﻷھﻢ ﻓﺎﻷھﻢ‪.‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫اﻟﺸﺮح‬ ‫اﻟﺨﺎﺻﯿﺔ‬
‫ﻟﺠﻌــﻞ اﻟﻤﺤــﺎذاة ﻟﻠﯿﻤــﯿﻦ أو اﻟﯿــﺴﺎر ‪ .‬أﻋﻠــﻰ أو‬ ‫‪Align‬‬
‫أﺳﻔﻞ أو ﺗﺄﺧﺬ ﺟﻤﯿﻊ اﻟﻤﺴﺎﺣﺔ‪ .‬ﻋﻠﻰ أﻳـﺔ ﺣـﺎل‬
‫ﻓــﻲ ﺣﺎﻟــﺔ اﻟﻨﻤــﻮذج ﺳــﺘﻨﻄﺒﻖ اﻟﻤﺤــﺎذاة ﻋﻠــﻰ‬
‫اﻟﺸﺎﺷﺔ‪.‬ﺑﯿﻨﻤﺎ ﻟﻮ و ﺿﻌﺖ أداة ﻣﺎ ﻋﻠـﻰ ﻧﻤـﻮذج‬
‫و ﺿــﺒﻄﺖ اﻟﻤﺤــﺎذاة ﻓــﺴﺘﻜﻮن ھــﺬه اﻟﻤﺤــﺎذاة‬
‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻨﻤﻮذج‪.‬‬
‫ﻟﺘﻤﻜـﯿﻦ ﺷـﺮﻳﻂ اﻟﺘﻤﺮﻳـﺮ ﻓـﻲ اﻟﻨﻤـﻮذج‪.‬ﻣـﺜﻼ ﻗــﻢ‬ ‫‪AutoScroll‬‬
‫ﺑﻮﺿﻊ أداة ﻣﺎ و اﻋﻄﮫﺎ ﻣﺴﺎﺣﺔ أﻛﺒﺮ ﻣﻦ ﻣﺴﺎﺣﺔ‬
‫اﻟﻨﻤـــﻮذج‪ .‬و ﺳـــﺘﻼﺣﻆ ﻇﮫـــﻮر ﺷـــﺮﻳﻂ اﻟﺘﻤﺮﻳـــﺮ‬
‫‪.‬ﻳﻤﻜﻨﻚ ﺗﻌﻄﯿﻞ اﻟﺨﺎﺻﯿﺔ ﺑﺎﺧﺘﯿﺎر ‪False‬‬
‫ﻟﺘﻐﯿﯿﺮ اﻹﺗﺠـﺎه ﻣـﻦ اﻟﯿـﺴﺎر إﻟـﻰ اﻟﯿﻤـﯿﻦ ‪ .‬ھـﺬه‬ ‫‪BiDiMode‬‬
‫اﻟﺨﺎﺻــﯿﺔ ﻣﮫﻤــﺔ ﺟــﺪا ﻓــﻲ اﻟﺒــﺮاﻣﺞ اﻟﻤﻮﺟﮫــﺔ‬
‫ﻟﻠﺴﻮق اﻟﻌﺮﺑﯿﺔ‪.‬‬
‫ﻟﺘﻤﻜــﯿﻦ أو ﺗﻌﻄﯿــﻞ ﺧﺎﺻــﯿﺔ اﻟﺘﻜﺒﯿــﺮ و اﻟﺘــﺼﻐﯿﺮ‬ ‫‪BorderIcons‬‬
‫ﻟﻮاﺟﮫﺔ اﻟﻨﻤﻮذج‪ ).‬ﻓﻲ ﺑﻌـﺾ اﻷﺣﯿـﺎن ﺗﺤﺘـﺎج أن‬
‫ﻳﺒﻘﻰ ﺑﺮﻧﺎﻣﺠﻚ ﻋﻠﻰ ﻣﺴﺎﺣﺔ ﻣﻌﯿﻨﺔ(‬
‫ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺤﺎﻓﺔ اﻟﻌﻠﯿﺎ ﻟﻠﻨﻤﻮذج‪.‬‬ ‫‪BorderStyle‬‬
‫ﻋﻨﻮان اﻷداة‬ ‫‪Caption‬‬
‫ﻟﻮن اﻟﻨﻤﻮذج‬ ‫‪Color‬‬
‫ﻧﻮع اﻟﻤﺆﺷﺮ‬ ‫‪Cursor‬‬
‫ﺗﻤﻜﯿﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻨﻤﻮذج ﻣﻦ ﻗﺒﻞ اﻟﻤﺴﺘﺨﺪم‬ ‫‪Enable‬‬
‫أو ﺗﻌﻄﯿﻠﻪ‪.‬‬
‫ﻧﻮع اﻟﺨﻂ ‪,‬ﻟﻮﻧﻪ و ﺣﺠﻤﻪ‬ ‫‪Font‬‬
‫اﻟﺨﺎﺻﯿﺔ ‪ fsStayOnTop‬ﺗﺠﻌﻞ اﻟﺒﺮﻧﺎﻣﺞ دوﻣﺎ ﻓﻲ‬ ‫‪FormStyle‬‬
‫اﻟﻤﻘﺪﻣﺔ‬
‫ﻹﺿﮫﺎر ﺗﻠﻤﯿﺤـﺎت‪.‬ﺳـﺒﻖ و أن ذﻛﺮﻧـﺎ أﻧـﻪ ﺑﻤﺠـﺮد‬ ‫‪Hint‬‬
‫وﺿﻊ اﻟﻔـﺄرة ﻋﻠـﻰ أﺣـﺪ أدوات دﻟﻔـﻲ إﻻ و ﻳﻈﮫـﺮ‬
‫ﺗﻠﻤــﯿﺢ ﺑﻤﮫﺎﻣﮫــﺎ‪ .‬ﺣــﺴﻨﺎ ﻳﻤﻜﻨــﻚ ﻓﻌــﻞ ﻧﻔــﺲ‬
‫اﻟﺸﻲء ﺷﺮﻳﻄﺔ ﺿﺒﻂ ﺧﺎﺻﯿﺔ ‪ ShowHint‬ﻋﻠﻰ‬
‫‪True‬‬
‫ﻻﺧﺘﯿﺎر أﻳﻘﻮﻧﺔ ﻟﻠﺒﺮﻧﺎﻣﺞ‬ ‫‪Icon‬‬
‫إﺳﻢ اﻷداة‬ ‫‪Name‬‬
‫ﻣﻮﺿﻊ اﻟﻨﻤﻮذج ﻣﻦ اﻟﺸﺎﺷﺔ‬ ‫‪Position‬‬
‫ﻟﺘﻤﻜﯿﻦ أو ﺗﻌﻄﯿﻞ اﻟﺘﻠﻤﯿﺤﺎت‬ ‫‪ShowHint‬‬
‫ﻟﺘﻤﻜﯿﻦ رؤﻳﺔ اﻷداة أو ﺗﻌﻄﯿﻠﮫﺎ‬ ‫‪Visible‬‬
‫ﻟﺘﺤﺪﻳﺪ ﺣﺎﻟـﺔ ﻧﺎﻓـﺬة اﻟﺒﺮﻧـﺎﻣﺞ‪.‬إﻣـﺎ ﺗـﺸﻐﻞ ﻛﺎﻣـﻞ‬ ‫‪WindowState‬‬
‫اﻟـﺸﺎﺷﺔ أو أن ﺗﻔــﺘﺢ ﻋﻠـﻰ ﺣﺎﻟــﺔ اﻟﺘـﺼﻐﯿﺮ‪.‬ﻛﻤــﺎ‬
‫ﻳـﻮﻓﺮ دﻟﻔــﻲ إﻣﻜﺎﻧﯿــﺔ ﺗــﺮك اﻟﻨﺎﻓــﺬة ﻋﻠــﻰ اﻟﺤﺎﻟــﺔ‬
‫اﻟﺘﻲ ﺻﻤﻤﺖ ﻋﻠﯿﮫﺎ‬
‫ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﻣﺴﺎﺣﺔ اﻟﻨﻤﻮذج‬ ‫‪Height/Width‬‬
‫ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﺷﺮﻳﻂ اﻟﺘﻤﺮﻳﺮ اﻷﻓﻘﻲ و اﻟﻌﻤﻮدي‪.‬‬ ‫‪Horz/vertScrollBar‬‬

‫ﻳﻤﻜﻨﻚ ﺗﺠﺮﺑﺔ ﻛﻞ ھﺬه اﻟﺨﺼﺎﺋﺺ ﻟﻤﻌﺮﻓﺔ ﻋﻤﻠﮫﺎ‬


‫ﺑــﺸﻜﻞ واﺿــﺢ‪.‬و ﻣــﻦ اﻟﻤﺆﻛــﺪ أﻧﮫــﺎ ﺟــﺪ ﻣﻔﯿــﺪة‬
‫ﻟﻠﻤﺒﺮﻣﺞ ﻓﻲ اﻟﺘﻄﻮﻳﺮ اﻟﺴﺮﻳﻊ ﻟﺒﺮﻧﺎﻣﺠﻪ‪.‬‬
‫ﻋﻤﻮﻣﺎ‪ ,‬ﻳﻤﻜـﻦ ﺿـﺒﻂ ﻣﻌﻈـﻢ اﻟﺨـﺼﺎﺋﺺ ﺑﺮﻣﺠﯿـﺎ ‪.‬‬
‫ﻣﻦ ﺧﻼل ﺑﻌـﺾ اﻷﻛـﻮاد ‪.‬ﻓﻤـﺜﻼ ﻟـﻮ أردﻧـﺎ أن ﻧﻐﯿـﺮ‬
‫ﺧﺎﺻــﯿﺔ ﻋﻨــﻮان اﻟﻨﻤــﻮذج ﺑﺮﻣﺠﯿــﺎ ﻓﮫــﺬا اﻟﻜــﻮد‬
‫ﺳﯿﻜﻮن ﻛﻔﯿﻼ ﺑﺎﻟﻌﻤﻠﯿﺔ‬
‫' ‪Form1.caption:=' PROG‬‬
‫ﻳﻤﻜﻦ ﺟﻌﻞ اﻟﻜـﻮد ﻳﻌﻤـﻞ ﻣـﻊ ﺑﺪاﻳـﺔ اﻟﺒﺮﻧـﺎﻣﺞ ﻟـﻮ‬
‫اﺧﺘﺮﻧــﺎ اﻟﺤــﺪث ‪ OnCreate‬و اﻟــﺬي ﺳــﻨﺘﻌﺮف‬
‫ﻋﻠﯿﻪ ﺿﻤﻦ ﻗﺎﺋﻤﺔ اﻷﺣﺪاث اﻟﺘﺎﻟﯿﺔ‪.‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫‪ - 2‬اﻷﺣﺪاث‬

‫ﻳﻤﻜﻨﻚ إﺧﺘﯿﺎر اﻟﺤﺪث اﻟﻤﻨﺎﺳﺐ ﻣﻦ ﺧﻼل اﻟﻘﺎﺋﻤﺔ اﻟﺘﺎﻟﯿﺔ و ذﻟﻚ ﺑﺎﻟﻨﻘﺮ اﻟﻤﺰدوج ﻋﻠـﻰ اﻹﻳﻄـﺎر اﻟﻤﻘﺎﺑـﻞ ﻟﮫـﺎ‪,‬‬
‫ﻟﺘﻔﺘﺢ ﻧﺎﻓﺬة ﺗﺤﺮﻳﺮ اﻷﻛﻮاد ‪ .‬ﺳﻨﺄﺧﺬ اﻟﻜﻮد اﻟﺴﺎﺑﻖ اﻟﺬي ﻳﻘﻮم ﺑﻌﺮض رﺳﺎﻟﺔ ﻟﻠﻤﺴﺘﺨﺪم ﻣﻊ اﻷﺣـﺪاث اﻟﺘﺎﻟﯿـﺔ‬
‫ﻛﻲ ﻧﻔﮫﻢ ﺟﯿﺪا وﺿﯿﻔﺘﮫﺎ‬

‫اﻟﺸﺮح‬ ‫اﺳﻢ اﻟﺤﺪث‬


‫ﺣﺪث ﺗﻨﺸﯿﻂ اﻟﻨﻤﻮذج‬ ‫‪OnActivate‬‬
‫ﺣﺪث اﻟﻨﻘﺮ‬ ‫‪OnClick‬‬
‫ﺣﺪث ﻏﻠﻖ اﻟﻨﻤﻮذج‬ ‫‪OnClose‬‬
‫ﺣﺪث إﻧﺸﺎء أو ﻓﺘﺢ اﻟﺒﺮﻧﺎﻣﺞ‬ ‫‪Oncreate‬‬
‫ﺣﺪث اﻟﻨﻘﺮ اﻟﻤﺰدوج‬ ‫‪OnDblClick‬‬
‫ﺣﺪث ﻋﺪم اﻟﺘﻨﺸﯿﻂ‬ ‫‪OnDeactivate‬‬
‫ﺣــﺪث اﻟــﻀﻐﻂ ﻋﻠــﻰ ﻟــﻮح اﻟﻤﻔــﺎﺗﯿﺢ) ﻓــﻲ ﺑﻌــﺾ‬ ‫‪OnKeyPress‬‬
‫اﻷﺣﯿــﺎن ﺗﻘــﻮم ﺑــﺎدراج ﻋﺒــﺎرة ﻓــﻲ ﻣﺤــﺮك ﺑﺤــﺚ‬
‫ﻟﺒﺮﻧﺎﻣﺞ أو ﻣﻮﻗﻊ ﻣﺎ و ﺗﻘﻮم ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟـﺰر ‪Entr‬‬
‫ﻟﺘﺒــﺪأ ﻋﻤﻠﯿــﺔ اﻟﺒﺤــﺚ‪ ,‬أي دون إﺳــﺘﺨﺪام اﻟﻔــﺄرة ‪.‬‬
‫ﻳﻤﻜﻨــﻚ ﻓﻌــﻞ ﻧﻔــﺲ اﻟــﺸﻲء‪ ,‬و ھــﺬا اﻟﺤــﺪث ﺟــﺪ‬
‫ﻣﻔﯿﺪ ﻓﻲ ﺣﺎﻟﺔ اﻟﺘﻌﺎﻣﻞ اﻟﺴﺮﻳﻊ ﻣﻊ أداة ﻣﺎ ‪.‬‬
‫ﺣﺪث ﺗﻤﺮﻳﺮ اﻟﻔﺄرة‬ ‫‪OnMouseMove‬‬
‫ﺣﺪث ﺗﻜﺒﯿﺮ أو ﺗﺼﻐﯿﺮ اﻟﻨﻤﻮذج‬ ‫‪OnResize‬‬
‫ﺗﻮﺟــﺪ ﺑﻌــﺾ اﻷﺣــﺪاث ﻓــﻲ أدوات و ﻻ ﺗﻮﺟــﺪ‬ ‫ﺗﻠﻤﯿﺢ‬
‫ﻓــــﻲ أﺧــــﺮى ‪.‬ﻓﻤــــﺜﻼ اﻷداة ‪WebBrowse‬‬
‫ﺗﺤﺘــﻮي ﻋﻠــﻰ اﻟﻜﺜﯿــﺮ ﻣــﻦ اﻷﺣــﺪاث اﻟﻐﯿــﺮ‬
‫ﻣﺘﻮاﺟﺪة ﻓﻲ اﻷدوات اﻷﺧﺮى‪.‬‬
‫ﺑﻤﺮور اﻟﻮﻗﺖ ﻳﻤﻜﻦ ﻟﻠﻤﺒـﺮﻣﺞ اﻛﺘـﺴﺎب ﺧﺒـﺮة‬
‫أﻛﺒﺮ ﻓﻲ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻷﺣﺪاث ‪.‬‬

‫ﻗﻢ ﺑﺎﻟﻨﻘﺮ اﻟﻤﺰدوج ﻋﻠﻰ اﻟﺤﺪث ‪OnClose‬‬ ‫ﻣﺜﺎل‬


‫و اﻛﺘﺐ اﻟﻜﻮد اﻟﺘﺎﻟﻲ‪:‬‬
‫;) 'إﻟﻰ اﻟﻠﻘﺎء' (‪ShowMessage‬‬
‫ﻗـــﻢ ﺑﺘﺠﺮﺑـــﺔ اﻟﺒﺮﻧـــﺎﻣﺞ ‪ .‬ﺣـــﺴﻨﺎ ‪ ,‬ﻗـــﻢ ﺑﺈﻏﻼﻗـــﻪ و‬
‫ﺳﺘﻼﺣﻆ ﻇﮫﻮر اﻟﺮﺳﺎﻟﺔ ‪.‬إن ﻣﺎ ﻗﻤﻨﺎ ﺑﻪ ھﻮ ﻣﺎﻳﻠﻲ‪.‬‬
‫ﻋﻨﺪ إﻏﻼق اﻟﻨﻤﻮذج ) ھﺬا ﻳﻤﺜﻞ اﻟﺤﺪث(‬
‫أﻇﮫﺮ اﻟﺮﺳﺎﻟﺔ ' إﻟﻰ اﻟﻠﻘﺎء' )و ھﺬا ھﻮ اﻟﻜﻮد(‬

‫ﻳﻤﻜﻦ ﺗﻨﻔﯿﺬ ﻧﻔﺲ اﻟﺸﯿﺊ ﻣﻊ ﺑﺎﻗﻲ اﻷﺣﺪاث ‪.‬‬

‫ﻓﻜﺮة اﻷﺣﺪاث ﺟﻤﯿﻠﺔ ﺟﺪا ‪ .‬وھـﻲ ﺗـﺴﺎﻋﺪك ﻋﻠـﻰ‬


‫اﻟﺘﻌﺎﻣــﻞ ﻣــﻊ اﻟﻤــﺴﺘﺨﺪم ‪.‬ﺗــﺴﺘﻄﯿﻊ اﺳــﺘﻐﻼﻟﮫﺎ‬
‫ﻻﻓﺘﺘــﺎح ﺑﺮﻧﺎﻣﺠــﻚ ﺑﻤﻠــﻒ ﺻــﻮﺗﻲ ﻣﻌــﯿﻦ ) آﻳــﺔ أو‬
‫ﺳــﻮرة ﻣــﻦ اﻟﻘــﺮآن اﻟﻜــﺮﻳﻢ ‪. (....‬و اﻧﮫﺎﺋــﻪ ﺑــﻨﻔﺲ‬
‫اﻟﺸﻲء‪ ,‬ﻟﻜﻦ ﻳﺮﺟﻰ اﻹﻧﺘﺒﺎه ﻟﻤﺜﻞ ھﺬا اﻹﺟﺮاء ﻷﻧﻪ‬
‫ﻓﻲ ﺑﻌﺾ اﻷﺣﯿﺎن ﻳﺄﺧﺮ ﻓﺘﺢ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻤـﺎ ﻳـﺴﺒﺐ‬
‫اﺳــﺘﯿﺎء ﻟــﺪى اﻟﻤــﺴﺘﺨﺪم‪ .‬ﺧــﺼﻮﺻﺎ اﻟﻤــﺴﺘﺨﺪم‬
‫اﻟﻌﺮﺑﻲ ﻓﮫﻮ ﻗـﺼﯿﺮ اﻟـﻨﻔﺲ ‪.‬ﻟـﺬا ھـﻮ ﻻ ﻳﺤﺘﻤـﻞ أن‬
‫ﺗﺄﺧﺮه ﺑﺤﺪث ﻣﺎ ﻣﻊ ﻛﻞ ﺗﺸﻐﯿﻞ ﻟﻠﺒﺮﻧﺎﻣﺞ ‪.‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫ﻣﺸﺎرﻳﻊ ﻋﻤﻠﯿﺔ‬

‫ﺑﻌﺪﻣﺎ ﺗﻌﺮﻓﻨﺎ ﻋﻠﻰ اﻟﺨﺼﺎﺋﺺ و اﻷﺣﺪاث ‪ ,‬ﻧﻨﺘﻘﻞ اﻵن ﻹﻧﺠﺎز ﺑﻌﺾ اﻟﻤﺸﺎرﻳﻊ اﻟﻌﻤﻠﯿـﺔ اﻟﺘـﻲ ﺗـﺴﺎﻋﺪﻧﺎ ﻋﻠـﻰ‬
‫ﻓﮫﻢ اﻟﺘﺮﻛﯿﺐ اﻟﺪاﺧﻠﻲ ﻟﻠﻐﺔ ﺑﺎﺳﻜﺎل‪.‬ﻧﺤﻦ ﻓﻲ ھﺬا اﻟﻜﺘﯿﺐ ﻟﻦ ﻧﺘﻌﻤﻖ ﻓﻲ ﻓﮫـﻢ ﺗﺮﻛﯿـﺐ ھـﺬه اﻟﻠﻐـﺔ و إﻧﻤـﺎ‬
‫ﺳﻨﻜﺘﻔﻲ ﺑﺒﻌﺾ اﻟﻨﻤﺎذج اﻟﺘﻲ ﺗﺠﻌﻠﻨﺎ ﻧﻌﺘﺎد ﻋﻠﻰ اﻟﺘﻌﺎﻣﻞ ﻣﻌﮫﺎ ﻓﻲ ﻣﻌﻈﻢ اﻟﻤﺸﺎرﻳﻊ‪.‬‬
‫إذا ﻛﻨﺖ ﺗﺮﻏﺐ ﻓﻲ ﻓﮫـﻢ ﻛـﻞ ﺻـﻐﯿﺮة و ﻛﺒﯿـﺮة ﻋـﻦ ﻟﻐـﺔ ﺑﺎﺳـﻜﺎل اﻟﻤﺪﻣﺠـﺔ ﻓـﻲ ﻟﻐـﺔ دﻟﻔـﻲ ﻓﺈﻧﻨـﺎ ﻧﻨـﺼﺤﻚ‬
‫ﺑﻤﻄﺎﻟﻌﺔ اﻟﻜﺘﺐ اﻟﻤﺘﻮﻓﺮة ﻓﻲ اﻟـﺴﻮق أو ﻋﻠـﻰ اﻟـﺸﺒﻜﺔ اﻟﻤﻌﻠﻮﻣﺎﺗﯿـﺔ)ﺳﻨﺨـﺼﺺ ﻓـﻲ آﺧـﺮ اﻟﻜﺘـﺎب ﻓـﺴﺤﺔ‬
‫ﻟﻠﺘﻌﺮف ﻋﻠﻰ اﻟﻜﺘﺐ و اﻟﻤﻮاﻗﻊ اﻟﻤﮫﺘﻤﺔ ﺑﮫﺬه اﻟﻠﻐﺔ(‪.‬‬

‫ﺑﺪاﻳﺔ ﻳﻤﻜﻦ اﻟﻘﻮل أن ﻣﻌﻈﻢ اﻟﻠﻐﺎت ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﺪوال اﻟﺸﺮﻃﯿﺔ و اﻟﺘﻲ ﺗﺴﺎﻋﺪﻧﺎ ﻋﻠﻰ اﻟﻘﯿﺎم ﺑﺤﺪث وﻓﻘـﺎ‬
‫ﻟﺘﺤﻘﻖ اﻟﺸﺮط ﻣﻦ ﻋﺪﻣﻪ ‪.‬‬
‫ﻣﺜﻼ ﻓﻲ ﺑﻌﺾ اﻟﺒﺮاﻣﺞ ﻳﻄﻠﺐ ﻣﻨﻚ إدراج ﻛﻠﻤﺔ اﻟﻤﺮور ‪ ,‬ﻓﺈذا ﻛﺎﻧـﺖ اﻟﻜﻠﻤـﺔ ﺻـﺤﯿﺤﺔ ﻳﻔـﺘﺢ اﻟﺒﺮﻧـﺎﻣﺞ أﻣـﺎ إذا‬
‫ﻛﺎﻧﺖ ﺧﺎﻃﺌﺔ ﻓﯿﻐﻠﻖ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺳــﻨﻘﻮم ﻓــﻲ اﻟﻤــﺸﺮوع اﻟﺘــﺎﻟﻲ ﺑــﻨﻔﺲ اﻟﻌﻤــﻞ ‪.‬ﺣﯿــﺚ ﺳــﯿﻄﻠﺐ ﻣــﻦ اﻟﻤــﺴﺘﺨﺪم إدراج ﻛﻠﻤــﺔ ﻣــﺮور ﻧﺤــﻦ‬
‫ﻧﺤﺪدھﺎ ‪.‬إذا ﺗﻮاﻓﻘﺖ ﻛﻠﻤﺔ اﻟﻤﺮور اﻟﻤﺪرﺟﺔ ﻓﻲ اﻹﻳﻄﺎر اﻟﻤﺨﺼﺺ ﻣﻊ اﻟﻜﻠﻤﺔ اﻟﺘﻲ ﺣـﺪدﻧﺎھﺎ ﺳـﻨﻘﻮم ﺑﺘﻐﯿﯿـﺮ‬
‫ﻋﻨﻮان اﻟﻨﻤﻮذج إﻟﻰ ﻋﺒﺎرة ' ھﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻣﺴﺠﻞ'‬
‫أﻣﺎ إذا ﻛﺎﻧﺖ ﻛﻠﻤﺔ اﻟﻤﺮور ﺧﺎﻃﺌﺔ ﻓﺈﻧﻨﺎ ﻧﻐﯿﺮ ﻋﻨﻮان اﻟﻨﻤﻮذج إﻟﻰ ﻋﺒﺎرة ' ﻏﯿﺮ ﻣﺴﺠﻞ'‬
‫اﻟﺼﻮرة اﻟﺘﺎﻟﯿﺔ ﺗﻮﺿﺢ ﻣﺎ ﺳﺒﻖ ذﻛﺮه‪.‬‬

‫ﻻ ﺣﻆ أن اﻟﻨﻤﻮذج ﻓﻲ اﻟﺨﻠﻒ ﻻ ﻳﺤﺘﻮي إﻻ ﻋﻠﻰ أداة و اﺣﺪة ھﻲ ‪. BUTTON‬‬


‫ﻗﻢ ﺑﺎﻧﺸﺎء ﻣﺸﺮوع ﺟﺪﻳﺪ و ﺿﻊ اﻷداة ‪ BUTTON‬ﻋﻠﻰ اﻟﻨﻤﻮذج ‪,‬ﺛﻢ اﻧﻘﺮ ﻧﻘﺮا ﻣﺰدوﺟﺎ ﻋﻠﯿﮫـﺎ و اﻛﺘـﺐ اﻟﻜـﻮد‬
‫اﻟﺘﺎﻟﻲ‪:‬‬

‫;)‪procedure TForm1.Button1Click(Sender: TObject‬‬


‫‪var‬‬
‫;‪InputString: string‬‬
‫‪begin‬‬
‫;) ' ' ‪',‬أدﺧﻞ ﻛﻠﻤﺔ اﻟﻤﺮور'‪ ' ,‬ﻛﻠﻤﺔ اﻟﻤﺮور' ( ‪InputString:= InputBox‬‬
‫‪if InputString = 'DELPHI' then‬‬
‫) ' ھﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻣﺴﺠﻞ ' (=‪Form1.Caption:‬‬
‫‪else‬‬
‫;)'ﻏﯿﺮ ﻣﺴﺠﻞ'(=‪Form1.Caption:‬‬
‫;‪end‬‬

‫ﻗﻢ ﺑﻜﺘﺎﺑﺔ اﻟﻜﻮد اﻟﻈﺎھﺮ ﺑﺎﻟﻠﻮن اﻷزرق ﻷن ﺑﺎﻗﻲ اﻟﻌﺒﺎرات ﺗﺪرج ﻣﻦ ﻗﺒﻞ دﻟﻔﻲ ﺗﻠﻘﺎﺋﯿﺎ‪.‬‬
‫ﺳﻨﺘﻌﺮف اﻵن ﻋﻠﻰ اﻟﻜﻮد ﺧﻄﻮة ﺧﻄﻮة‪.‬ﻛﻲ ﻳﻜﻮن ﺑﺎﺳﺘﻄﺎﻋﺘﻚ اﻧﺸﺎء ﻧﻤﺎذج ﻣﻤﺎﺛﻠﺔ ﻻ ﺣﻘﺎ‪.‬‬
‫ﻗﻤﻨﺎ أوﻻ ﺑﺎﻹﻋﻼن ﻋﻦ وﺟﻮد ﻣﺘﻐﯿﺮ ' ‪' var‬‬
‫اﺳﻢ اﻟﻤﺘﻐﯿﺮ ھﻮ ' ‪ ' InputSTRING‬و ھﻮ ﻣﻦ ﻧﻮع ‪ STRING‬أي ﺳﻠﺴﻠﺔ ﻧﺼﯿﺔ‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫ﺣﯿﺚ ﻳﻤﻜﻦ أن ﻳﻜﻮن اﻟﻤﺘﻐﯿﺮ ﻣﻦ ﻧﻮع ﺣﺮف ‪ , CHAR‬ﺳﻠﺴﻠﺔ ﻧﺼﯿﺔ ‪ , STRING‬ﺑـﻮﻟﯿﻦ ‪. BOOLEAN‬ﻋـﺪد‬
‫ﺻﺤﯿﺢ ‪...INTEGER‬‬
‫ﺑﺎﻟﻨﺴﺒﺔ ﻹﺳﻢ اﻟﻤﺘﻐﯿﯿﺮ ‪ ,‬ﻳﻤﻜﻨﻚ اﺳﺘﺒﺪاﻟﻪ ﺑﺄي ﺗﺴﻤﯿﺔ أﺧﺮى ‪.‬‬
‫ﺑﻌﺪ اﻟﻌﺒﺎرة ‪ begin‬اﻟﺘﻲ ﺗﻌﻨﻲ ﺑﺪاﻳﺔ ﺗﻨﻔﯿﺬ اﻟﻜﻮد‪ ,‬ﻧﺠﺪ أﻧﻨﺎ ﻗﺪ أﺳﻨﺪﻧﺎ ﻗﯿﻤﺔ ﻟﻠﻤﺘﻐﯿﺮ وھﻲ اﻟﺘﻲ ﺗﻈﮫـﺮ ﺑﻌـﺪ‬
‫اﻟﻤﺴﺎواة‪ .‬وھﺬه اﻟﻘﯿﻤﺔ ﻳﻤﻜﻦ إﺳﺘﺒﺪاﻟﮫﺎ و ﻓﻖ اﻟﺤﺎﺟـﺔ‪ .‬ﻣـﺎ ﻳﻈﮫـﺮ ﺑﻌـﺪ اﻟﻤـﺴﺎواة ھـﻮ ﻋﺒـﺎرة ﻋـﻦ ﺻـﻨﺪوق‬
‫اﻟﺤﻮار اﻟﺬي ﻳﻈﮫﺮ ﻓﻲ اﻟﺼﻮرة ‪.‬ﺣﯿﺚ أن ﻛﻠﻤﺔ اﻟﻤﺮور ﺗﻜﻮن ﻋﻨﻮاﻧﺎ ﻟﺼﻨﺪوق اﻟﺤﻮار أﻣﺎ اﻟﻌﺒﺎرة اﻟﺘﻲ ﺗﻠﯿﮫﺎ ﻓﮫﻲ‬
‫ﻟﺘﺤﺪﻳﺪ اﻟﻄﻠﺐ‪.‬ﻓﻲ ﺣﯿﻦ أن اﻟﻤﺰدوﺟﺘﯿﻦ اﻟﺘﻲ ﺗﻈﮫﺮ ﻓﻲ آﺧﺮ اﻟـﺴﻄﺮ ﺗﺘـﺮك ﺷـﺎﻏﺮة دون أي ﻣـﺴﺎﺣﺔ ﻹﻧﮫـﺎ‬
‫ﻣﺨﺼﺼﺔ ﻟﻠﻤﺴﺘﺨﺪم ﻷدراج ﻛﻠﻤﺔ اﻟﻤﺮور‪.‬‬
‫ﻻﺣﻆ أﻧﻨﻲ ﻗﻤﺖ ﺑﺘﺮك ﻣﺴﺎﺣﺔ ﺑﯿﻦ اﻟﻤﺰدوﺟﺘﯿﻦ ﻛﻲ ﻳﻔـﺮق اﻟﻘـﺎرئ ﻟﮫـﺬا اﻟﻜﺘـﺎب أﻧﮫـﺎ ﻟﯿـﺴﺖ اﻟﺮﻣـﺰ ) " (‪.‬‬
‫ﺑﺎﻋﺘﺒﺎر أﻧﻨﻲ أﺳﺘﺨﺪم ﻣﻌﺎﻟﺞ اﻟﻨﺼﻮص ‪ MICROSOFT WORD‬ﻓﻲ ﺗﺤﺮﻳﺮ ھﺬا اﻟﻜﺘﯿﺐ‪.‬‬
‫اﻟﺴﻄﺮ اﻟﻤﻮاﻟﻲ ﻳﺤﺘﻮي ﻋﻠﻰ اﻟﺒﻨﯿﺔ اﻟـﺸﺮﻃﯿﺔ و اﻟﺘـﻲ ﺗﺒﺘـﺪأ ﺑﺎﻟﻜﻠﻤـﺔ ‪ IF‬و ﺗﻨﺘﮫـﻲ ﻓـﻲ ﻧﻔـﺲ اﻟـﺴﻄﺮ ب‬
‫اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ‪Then‬‬
‫ﻣﻔﺎد اﻷﻣﺮ اﻟﺴﺎﺑﻖ ‪ :‬إذا ﻛﺎن اﻟﻨﺺ اﻟﻤﺪرج ﻓﻲ ﺻﻨﺪوق اﻟﺤـﻮار ﻳـﺴﺎوي اﻟﻜﻠﻤـﺔ ' ‪ ' DELPHI‬إذن ﺣﻘـﻖ‬
‫اﻟﺸﺮط اﻟﻤﻮاﻟﻲ ‪ ,‬أي اﺟﻌﻞ ﻋﻨﻮان اﻟﻨﻤﻮذج ھﻮ ' ھﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻣﺴﺠﻞ'‬
‫ﻋﺪا ذﻟﻚ ) أي إذا ﻛﺎﻧﺖ اﻟﻜﻠﻤﺔ اﻟﻤﺪرﺟﺔ ﻣﻦ ﻗﺒﻞ اﻟﻤﺴﺘﺨﺪم ﻟﯿﺴﺖ )' ‪( ' DELPHI‬‬
‫إﺟﻌﻞ ﻋﻨﻮان اﻟﻨﻤﻮذج ' ﻏﯿﺮ ﻣﺴﺠﻞ' ‪.‬‬

‫إذا‬ ‫‪IF‬‬
‫إذن ‪ /‬ﺑﺎﻟﺘﺎﻟﻲ‬ ‫‪THEN‬‬
‫ﻋﺪا ذﻟﻚ ) ﻋﺪم ﺗﺤﻘﻖ اﻟﺸﺮط(‬ ‫‪Else‬‬

‫ﻧﻔﺬ اﻟﺒﺮﻧﺎﻣﺞ و ﻗﻢ ﺑﺈدﺧﺎل ﻛﻠﻤﺔ اﻟﻤـﺮور اﻟـﺼﺤﯿﺤﺔ )‪ (DELPHI‬و ﺳـﺘﻼﺣﻆ ﺗ ﺤـﻮل ﻋﻨـﻮان اﻟﻨﻤـﻮذج إﻟـﻰ‬
‫ﻣﺎﻳﻠﻲ‪:‬‬

‫ﻗﻢ ﺑﺘﺠﺮﻳﺐ ﻛﻠﻤﺔ أﺧﺮى و ﺳﺘﻼﺣﻆ ﺗﺤﻮل اﻟﻌﻨﻮان إﻟﻰ ﻣﺎ ﻳﻠﻲ‪:‬‬

‫ﻧﺤﻦ ﻓﻲ ﻣﺜﺎﻟﻨﺎ ھﺬا رﺑﻄﻨﺎ ﻧﺘﯿﺠﺔ ﻋﺪم ﺗﺤﻘﻖ اﻟﺸﺮط ﺑﺘﺤﻮﻳﻞ ﻋﻨﻮان اﻟﻨﻤﻮذج إﻟﻰ ' ﻏﯿﺮ ﻣﺴﺠﻞ'‪.‬‬
‫ﻳﻤﻜﻨﻚ اﺳﺘﺒﺪال ھﺬا اﻟﺸﺮط ﺑﺸﺮط آﺧﺮ ‪.‬‬
‫ﻗﻢ ﺑﺤﺬف آﺧﺮ ﺳﻄﺮ ﻓﻲ اﻟﻜﻮد‬

‫;)'ﻏﯿﺮ ﻣﺴﺠﻞ'(=‪Form1.Caption:‬‬

‫و اﺳﺘﺒﺪاﻟﻪ ﺑﺎﻷﻣﺮ اﻟﺘﺎﻟﻲ‪:‬‬


‫;‪Close‬‬
‫و ﺳﺘﻼﺣﻆ اﻧﮫﺎء اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﺣﺎﻟﺔ ﻋﺪم ﺗﺤﻘﻖ اﻟﺸﺮط‪.‬‬

‫ﻛﺎن ھﺬا ﻣﺠﺮد ﻣﺜﺎل ﺑﺴﯿﻂ ﻋﻦ اﻟﺪاﻟﺔ اﻟﺸﺮﻃﯿﺔ ‪ IF‬و ﺳﺘﻼﺣﻆ ﻋﺪم ﻛﻔﺎﺋﺘﮫـﺎ ﻓـﻲ ﺑﻌـﺾ اﻷﺣـﻮال ‪ .‬ﻟﻜـﻦ ﻻ‬
‫ﻋﻠﯿﻚ ﻓﻠﻐﺔ دﻟﻔﻲ ﺗﻮﻓﺮ ﻟﻚ اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﺒﺪاﺋﻞ‪.‬‬
‫ﻣـﻦ ﺑـﯿﻦ اﻟـﺪوال اﻟـﺸﺮﻃﯿﺔ اﻷﻛﺜـﺮ ﺷـﮫﺮة ﻓـﻲ ﻟﻐـﺔ دﻟﻔـﻲ ﻧﺠـﺪ اﻟﺪاﻟـﺔ ‪. Case‬و اﻟﺘـﻲ ﺳﻨـﺴﺘﺜﻤﺮھﺎ ﻓـﻲ‬
‫ﻣﺸﺮوﻋﻨﺎ اﻟﺘﺎﻟﻲ‪.‬‬
‫اﻟﻤﺸﺮوع اﻟﺘﺎﻟﻲ ھﻮ ﻗﺎﻣﻮس إﻧﺠﻠﯿﺰي ﻋﺮﺑﻲ ﻧﺎﻃﻖ‪.‬‬
‫ﻃﺒﻌﺎ ﻟﻦ ﻧﻌﺘﻤﺪ ﻋﻠﻰ ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت ﻓﻲ ھﺬا اﻟﻤﺸﺮوع ﻧﻈﺮا ﻟﺘﻄﻠﺒﮫﺎ ﻟﻠﻜﺜﯿﺮ ﻣﻦ اﻟﻮﻗﺖ و اﻟﺘﺮﻛﯿﺰ‪.‬‬
‫ﻟﻜﻦ ﻗﺒﻞ ذﻟﻚ ﺧﺬ ﻟﻚ ﻧﻔﺴﺎ‪ .‬ﻗﺒﻞ اﻟﻤﺘﺎﺑﻌﺔ ‪.‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫اﻟﻘﺎﻣﻮس اﻹﻧﺠﻠﯿﺰي اﻟﻌﺮﺑﻲ اﻟﻨﺎﻃﻖ‪:‬‬
‫ﻓﻲ ھﺬا اﻟﻤﺸﺮوع ﻳﺮﺟﻰ اﻹﻧﺘﺒﺎه ﻟﻠﺪاﻟﺔ اﻟﺸﺮﻃﯿﺔ ﻓﮫﻲ اﻷﺳﺎس ﻓﻲ ﻣﺸﺮوﻋﻨﺎ ھﺬا‪.‬‬
‫ﻗﺒﻞ اﻟﺒﺪء ﻻ ﺑﺪ و أن ﻳﻜﻮن ﺑﺮﻧـﺎﻣﺞ ‪ Microsoft text to speech‬ﻣﺜﺒﺘـﺎ ﻋﻠـﻰ ﺟﮫـﺎزك ﻻﺿـﺎﻓﺔ ﺧﺎﺻـﯿﺔ اﻟﻨﻄـﻖ‬
‫ﻟﻠﺒﺮﻧﺎﻣﺞ ﻛﻤﺎ و ﻻﺑﺪ ﻣﻦ ﺗﻮﻓﺮ ﻧﻔﺲ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﻰ ﺟﮫﺎز اﻟﺰﺑﻮن ﻟﻜﻲ ﻳﻌﻤﻞ ﺑﻨﺠﺎح‪.‬‬
‫ﻳﻤﻜﻨﻚ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ ﻣﻮﻗﻊ اﻟﺸﺮﻛﺔ ﻋﻠـﻰ اﻟـﺸﺒﻜﺔ ‪ ,‬ﻛﻤـﺎ ﻳﻤﻜـﻦ اﻟﺤـﺼﻮل ﻋﻠ ﯿـﻪ ﺿـﻤﻦ ﺑـﺮاﻣﺞ‬
‫اﻟﻘﻮاﻣﯿﺲ اﻟﻨﺎﻃﻘﺔ إن ﻛﻨﺖ ﺗﻤﻠﻜﮫﺎ ‪.‬‬
‫إن ﻟﻢ ﺗﺴﺘﻄﻊ اﻟﺤﺼﻮل ﻋﻠﻰ ھﺬا اﻟﺒﺮﻧﺎﻣﺞ ‪ ,‬ﻓﻼ ﻳﻤﻜﻨﻚ اﻷﺳﺘﻔﺎدة ﻣﻦ ھﺬه اﻟﺨﺎﺻﯿﺔ ‪.‬‬

‫أوﻻ ﻳﺠـﺐ إﺿـﺎﻓﺔ اﻷداة ‪ DirectSS‬ﻟﻠﻘﺎﺋﻤـﺔ ‪ ActiveX‬و ذﻟـﻚ ﺑﺎﻹﻧﺘﻘـﺎل ﻟﻠﻘﺎﺋﻤـﺔ ‪ Component‬ﺿـﻤﻦ ﺷـﺮﻳﻂ‬
‫اﻟﻘﻮاﺋﻢ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة و اﺧﺘﯿﺎر ‪. Import ActiveX Control‬‬

‫ﻗﻢ ﺑﺘﺤﺪﻳﺪ اﻷداة ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‪..‬‬

‫ﺛﻢ اﺧﺘﺮ ‪. Install‬‬


‫ﺑﻌﺪ ذﻟـﻚ اﻧﺘﻘـﻞ ﻟﻘﺎﺋﻤـﺔ اﻷدوات ‪ ActiveX‬ﺿـﻤﻦ ﺷـﺮﻳﻂ اﻷدوات و ﺳـﺘﺠﺪ اﻷداة اﻟﺘـﻲ أﺿـﻔﻨﺎھﺎ ﻛﻤـﺎ ﻓـﻲ‬
‫اﻟﺸﻜﻞ‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫اﻵن ﻗﻢ ﺑﺎﻧﺸﺎء ﻣﺸﺮوع ﺟﺪﻳﺪ ‪File/new/application‬‬
‫ﺿﻊ اﻷدوات اﻟﺘﺎﻟﯿﺔ ﻋﻠﻰ اﻟﻨﻤﻮذج‪:‬‬
‫أوﻻ ﺿﻊ اﻷداة ‪ ControlBar‬اﻟﺘﻲ ﻳ ﻤﻜﻦ اﻟﻮﺻﻮل إﻟﯿﮫﺎ ﻣﻦ ﻗﺎﺋﻤﺔ اﻷدوات ‪ Additional‬و اﺿﺒﻂ ﺧﺼﺎﺋﺼﮫﺎ ﻋﻠﻰ‬
‫اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‬
‫‪Align = alTop‬‬
‫ﺛﺎﻧﯿﺎ‪,‬ﻗﻢ ﺑﻮﺿﻊ زرﻳﻦ ﻣﻦ ﻧﻮع ‪ Button‬ﻋﻠﻰ اﻷداة ‪ controlBar‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪ , Standard‬زاﺋﺪ زر آﺧﺮ ﻣﻦ ﻧـﻮع‬
‫‪ BitBtn‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪ Additional‬و اﺿﺒﻂ ﺧﺼﺎﺋﺼﮫﺎ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫إﺳﺘﻤﺎع =‪Caption‬‬ ‫‪Button1‬‬


‫ﺣﻮل =‪Caption‬‬ ‫‪Button2‬‬
‫‪Kind= bkClose‬‬ ‫ﺧﺮوج =‪Caption‬‬ ‫‪BitBtn1‬‬

‫ﺿﻊ أداﺗﯿﻦ ﻣﻦ ﻧﻮع ‪ Label‬و ﻏﯿﺮ ﺗﺴﻤﯿﺘﮫﻤﺎ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‬


‫ﺿﻊ أداﺗﯿﻦ ﻣﻦ ﻧﻮع ‪ Edit‬و اﺟﻌﻞ اﻟﺨﺎﺻﯿﺔ ‪ text‬ﻓﺎرﻏﺔ ‪ ,‬ﻛﻤﺎ ﻳﻤﻜﻨﻚ ﺗﻐﯿﯿﺮ ﻟﻮن اﻷداﺗﯿﻦ إﻟﻰ ‪.clInfoBk‬‬
‫ﻻ ﺗﻨﺴﻰ ﺟﻌﻞ ﻟﻮن اﻟﺨﻂ ھﻮ اﻷﺳﻮد ﻣﻦ ﺧﻼل اﻟﺨﺎﺻﯿﺔ ‪font‬‬

‫أﺿﻒ اﻷداة ‪ ListBox‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪ Standard‬واﺿﺒﻂ ﺧﺎﺋﺼﮫﺎ ﻛﻤﺎ ﻓﻌﻠﺖ ﻣﻌﺎ اﻷداة ‪Edit‬‬
‫إﺿﺎﻓﺔ إﻟﻰ اﻟﺨﺎﺻﯿﺔ اﻟﺘﺎﻟﯿﺔ‬
‫‪Align=alLeft‬‬
‫أﺿﻒ اﻷداة ‪ DirectSS‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪. ActiveX‬‬
‫واﺿﺒﻂ ﺧﺼﺎﺋﺼﮫﺎ ﻛﻤﺎ ﻳﻠﻲ‬
‫‪Visible=false‬‬
‫أﺿﺒﻂ ﺧﺼﺎﺋﺺ اﻟﻨﻤﻮذج ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪BiDiMode= bdRightToLeft‬‬
‫اﻟﻘﺎﻣﻮس اﻟﻨﺎﻃﻖ =‪Caption‬‬
‫‪Color= clMaroon‬‬
‫ﻣﻦ اﻟﺘﻔﺮع ‪font‬‬
‫‪Color= clWhite‬‬
‫ﻣﻦ اﻟﺘﻔﺮع ‪BorderIcons‬‬
‫‪BiMaximize=false‬‬
‫و ﺳﻮف ﻳﻜﻮن اﻟﻨﻤﻮذج ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‬

‫ﻛﻲ ﺗﻈﮫﺮ اﻷزرار ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺬي ﻳﺤـﺎﻛﻲ ﻧﻈـﺎم ‪ Windows Xp‬ﻳﻤﻜﻨـﻚ إﺿـﺎﻓﺔ اﻷداة ‪ XpManifest‬ﻣـﻦ‬
‫اﻟﻘﺎﺋﻤﺔ ‪ . Win32‬و ھﺬه اﻷداة ﻣﺘﻮﻓﺮة اﺑﺘﺪاءا ﻣﻦ اﻹﺻﺪار اﻟﺴﺎﺑﻊ ﻟﺒﺮﻧﺎﻣﺞ دﻟﻔﻲ‪.‬‬
‫ﻣﺎ ﺗﻼﺣﻆ أﻧﻪ ﻧﺎﻗﺺ ﺳﻮف ﻧﻘﻮم ﺑﺈﺿﺎﻓﺘﻪ ﻓﯿﻤﺎ ﻳﻠﻲ ‪:‬‬
‫ﺣﺪد اﻷداة ‪LisBox‬‬
‫ﻣﻦ اﻟﺨﺎﺻﯿﺔ ‪ Items‬ﻗﻢ ﺑﺘﻌﺒﺌﺔ اﻟﻨﺎﻓﺬة اﻟﺘﻲ ﺗﻈﮫﺮ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة‪.‬‬
‫اﻧﻘﺮ ﻧﻘﺮا ﻣﺰدوﺟﺎ ﻋﻠﻰ اﻷداة ‪ ListBox1‬و اﻛﺘﺐ اﻷﻣﺮ اﻟﺘﺎﻟﻲ ﺑﯿﻦ اﻟﻜﻠﻤﺘﯿﻦ اﻟﻤﺤﺠﻮزﺗﯿﻦ ‪ Begin‬و ‪End‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫‪Case ListBox1.ItemIndex of‬‬
‫; ' رأس' =‪0 : edit2.text :‬‬
‫; 'ﺷﻌﺮ '=‪1 : edit2.text :‬‬
‫; 'ﻳﺪ'=‪2 : edit2.text :‬‬
‫; 'أﻧﻒ' =‪3 : edit2.text :‬‬
‫; 'ﺟﺒﯿﻦ' =‪4 : edit2.text:‬‬
‫; 'وﺟﻪ'=‪5 : edit2.text:‬‬
‫; 'أﺳﻨﺎن'=‪6 : edit2.text:‬‬
‫; 'أذن'=‪7 :edit2.text :‬‬
‫; 'ﻋﯿﻦ'=‪8 : edit2.text :‬‬
‫; 'ﺧﺪ' =‪9 : edit2.text:‬‬
‫; ‪end‬‬ ‫‪Case ListBox1.ItemIndex of‬‬
‫; ]‪edit1.text:= ListBox1.Items[ListBox1.ItemIndex‬‬

‫ﻣﻔﺎد اﻟﻜﻮد اﻟﺴﺎﺑﻖ ھﻮ ﻓﻲ ﺣﺎﻟﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻋﻨﺎﺻﺮ اﻷداة ‪ ListBox1‬ﻓﺈن اﻟـﻀﻐﻂ ﻋﻠـﻰ اﻟﻌﻨـﺼﺮ اﻷول ﻓـﻲ‬
‫اﻟﻘﺎﺋﻤﺔ ﺳﯿﻨﺘﺞ ﻋﻨﻪ ﺗﻐﯿﯿﺮ ﻓﻲ ﻧـﺺ اﻷداة ‪ Edit2‬و ﻓـﻖ ﻣـﺎ ﻳﺤـﺪده اﻟﻤﺒـﺮﻣﺞ ‪.‬و ﻗـﺲ ﻋﻠـﻰ ھـﺬا اﻟﻨﺤـﻮ ﻣـﻊ‬
‫اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮاﻟﯿﺔ ‪.‬‬
‫اﻟﺴﻄﺮ اﻷﺧﯿﺮ ﻓﻲ اﻟﻜﻮد ﻳﺴﻤﺢ ﺑﺈﻇﮫﺎر اﻟﻌﻨﺼﺮ اﻟﻤﺤﺪد ﻓﻲ اﻟﻘﺎﺋﻤﺔ ﻓﻲ أداة اﻟﻨﺺ ‪ . Edit1‬و اﻟﻐﺎﻳﺔ ﻣﻦ ھﺬا‬
‫اﻷﻣﺮ ھﻮ ﺗﻤﻜﯿﻨﻨﺎ ﻣﻦ ﺗﺴﮫﯿﻞ ﻧﻄﻖ اﻟﻜﻠﻤﺔ اﻟﻤﺤﺪدة ‪.‬‬
‫ﺟﺮب اﻟﺒﺮﻧﺎﻣﺞ و ﺳﺘﻼﺣﻆ ﻋﻤﻠﯿﺔ اﻟﺘﺮﺟﻤﺔ‪.‬‬
‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﺨﺎﺻﯿﺔ ﻧﻄﻖ اﻟﻜﻠﻤﺎت اﻟﻤﺤﺪدة ﻓﮫﻲ ﺟﺪ ﺳﮫﻠﺔ‪ :‬ﻗﻢ ﺑﺎﻟﻨﻘﺮ اﻟﻤﺰدوج ﻋﻠـﻰ زر اﻹﺳـﺘﻤﺎع‪ ,‬و اﻛﺘـﺐ‬
‫اﻟﻜﻮد اﻟﺘﺎﻟﻲ‪:‬‬
‫; )‪DirectSS1.Speak(Edit1.text‬‬

‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﺰر اﻟﺨﺮوج ﻓﮫﻮ ﻻ ﻳﺤﺘﺎج ﻷي أﻣﺮ ﻟﻜﻦ ﻣﻊ ذﻟﻚ‪ .‬ﻳﻤﻜﻦ اﺳﺘﻌﻤﺎل اﻷﻣـﺮ ‪ Close‬إذا ﻣـﺎ دﻋـﺖ اﻟﺤﺎﺟـﺔ‬
‫إﻟﻰ ذﻟﻚ ‪.‬‬
‫أﻣﺎ اﻟﺰر ﺣﻮل اﻟﺒﺮﻧﺎﻣﺞ ﻓﯿﻤﻜﻨﻚ اﻇﮫﺎر رﺳﺎﻟﺔ ﺣﻮار ﻛﻤﺎ ﻓﻌﻠﻨﺎ ﺳﺎﺑﻘﺎ‪.‬‬
‫أﻣﺎ إذا أردت أن ﺗﺠﻌﻞ اﻟﻨﺎﻓﺬة اﻟﺘﻲ ﺗﻈﮫﺮ أﻛﺜﺮ ﺟﺎذﺑﯿﺔ ﻓﺴﯿﻜﻮن ﺑﺈﻣﻜﺎﻧﻚ إﺿﺎﻓﺔ ﻧﻤﻮذج ﺟﺪﻳـﺪ ﻟﻠﺒﺮﻧـﺎﻣﺞ و ﻗـﻢ‬
‫ﺑﺈﺿﺎﻓﺔ ﻣﺎ ﺗﺮﻳﺪه ﻣﻦ ﻣﻌﻠﻮﻣﺎت ﺻﻮر أو رواﺑﻂ ﻟﻤﻮاﻗﻊ ﻣﻌﯿﻨﺔ‪ .‬ﻣﺎ ﻋﻠﯿﻚ اﻟﻘﯿﺎم ﺑﻪ ﺑﻌﺪ ذﻟﻚ ھﻮ ﻣﺠﺮد و ﺿﻊ اﻟﻜﻮد‬
‫اﻟﺘﺎﻟﻲ‪ :‬إﺛﺮ ﺣﺪث اﻟﻨﻘﺮ ﻋﻠﻰ زر ﺣﻮل اﻟﺒﺮﻧﺎﻣﺞ‬
‫‪form2.show‬‬
‫و اﻟﺬي ﻳﻘﻮم ﺑﺈﻇﮫﺎر اﻟﻨﻤﻮذج اﻟﺜﺎﻧﻲ إذا ﻣﺎ اﻓﺘﺮﺿﻨﺎ أﻧﻚ ﻗﺪ ﻗﻤﺖ ﺣﻘﺎ ﺑﺈﻧﺸﺎﺋﻪ‪.‬‬

‫ﺑﺮﻧﺎﻣﺞ ﻋﺎرض اﻷﺣﺎدﻳﺚ اﻟﻨﺒﻮﻳﺔ‬

‫ﺳﻨﻘﻮم اﻵن ﺑﺈﻧﺸﺎء ﺑﺮﻧﺎﻣﺞ ﻻﺑﺪ و أن اﻟﻜﺜﯿﺮ ﻣﻨﺎ ﻛﺎﻧﺖ ﻟﮫﻢ رﻏﺒﺔ ﺟﻤﺔ ﻓﻲ ﺑﻨﺎء ﺑﺮاﻣﺞ ﻣﻤﺎﺛﻠـﺔ ﻟـﻪ‪ .‬ﻓﻨﺠـﺪ أن‬
‫اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻤﺒﺮﻣﺠﯿﻦ ﻳﺴﻌﻮن ﺣﺜﯿﺜﺎ ﻟﻤﺤﺎﻛﺎة اﻟﺘﻄﺒﯿﻘﺎت اﻟﺘﻲ ﺗﻌﻤﻞ ﻣـﻊ ﺑـﺪأ اﻟﺘـﺸﻐﯿﻞ ﻣﺜـﻞ ﺑﺮﻧـﺎﻣﺞ اﻵذان‬
‫اﻟﺸﮫﯿﺮ‪ .‬ﻧﺤﻦ ﻓﻲ ھﺬا اﻟﻤﺸﺮوع ﻟﻦ ﻧﻨﺸﺄ ﺑﺮﻧﺎﻣﺞ ﺑﺤﺠﻢ ھﺬا اﻷﺧﯿﺮ‪ ,‬ﺑﻞ ﺳﻨﻜﺘﻔﻲ ﺑﺒﺮﻧـﺎﻣﺞ ﻳﻌﻤـﻞ ﻣـﻊ ﺑـﺪء‬
‫ﺗﺸﻐﯿﻞ اﻟﻮﻳﻨﺪوز ﻟﯿﻈﮫﺮ ﻟﻨﺎ ﻓﻲ ﻛﻞ ﻣﺮة ﺣﺪﻳﺜﺎ ﻧﺒﻮﻳﺎ ) ﻳﻤﻜﻦ ﻟﻠﻤﺒﺮﻣﺞ اﺧﺘﯿﺎر ﻣﺎ ﻳﺸﺎء( ﻋﻠﻰ ھﯿﺌﺔ ﺻـﻮرة ‪jpg‬‬
‫ﺑﯿﻨﻤﺎ ﻳﻤﻜﻦ اﺳﺘﺒﺪال ھﺬه اﻟﮫﯿﺌﺔ ﺑﻨﺺ ‪ txt‬أو ﻣﻠﻒ ﺻﻮﺗﻲ ‪ mp3‬و ﻗـﺲ ﻋﻠـﻰ ذﻟـﻚ‪ .‬و اﻟﻤﻘـﺼﻮد ﻣـﻦ ھـﺬا‬
‫اﻟﺒﺮﻧﺎﻣﺞ ھﻮ إﻧﻌﺎش اﻟﻌﻘﻞ اﻟﺮﻳﺎﺿﻲ ﻟﻠﻤﺒﺮﻣﺞ ‪ .‬ﻓﯿﺎ ﺗﺮى ﻛﯿﻒ ﻳﺘﻢ ذﻟﻚ ؟‬

‫ﻛﻞ ﻣﺎ ﻧﺤﺘﺎﺟﻪ ھﻮ اﻷداة ‪ Timer , UpDown , edit‬أﻣﺎ ‪ XPManifest‬ﻓﻼ ﺣﺎﺟـﺔ ﻟﻨـﺎ ﺑـﻪ إذ وﻇﯿﻔﺘـﻪ إﻋﻄـﺎء‬
‫ﺷﻜﻞ وﻳﻨﺪوز أﻛﺲ ﺑﻲ ﻟﻠﻨﻤﻮذج‪ ,‬و ﻧﺤﻦ ﻓﻲ ھﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻟﻦ ﻧﻤﻜﻦ اﻟﻤﺴﺘﺨﺪم ﻣﻦ رؤﻳﺔ ھﺬه اﻟﻮاﺟﮫﺔ‪.‬‬
‫و ﻧﻀﺒﻂ ﺧﺼﺎﺋﺺ اﻷداة ‪ UpDown1‬ﻛﻤﺎ ﻳﻠﻲ‪Associate = Edit1 :‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫و ﻳﺘﻢ ھﺬا ﻋﻦ ﻃﺮﻳﻖ ﺗﺤﺪﻳﺪ اﻷداة ‪ UpDown1‬ﺛـﻢ اﻹﻧﺘﻘـﺎل إﻟـﻰ ﻗﺎﺋﻤـﺔ اﻟﺨـﺼﺎﺋﺺ و اﻟﺒﺤـﺚ ﻋـﻦ اﻟﺨﺎﺻـﯿﺔ‬
‫‪ Associate‬وﺿﺒﻄﮫﺎ ﻋﻠﻰ ‪Edit1‬‬

‫و ﻧﻀﺒﻂ ﺧﺼﺎﺋﺺ اﻷداة ‪ edit1‬ﻛﻤﺎ ﻳﻠﻲ‪edit1.text = 0 :‬‬


‫‪ Associate = Edit1‬ﻟﻸداة ‪ updown1‬ﻓﺈن ﺧﺎﺻﯿﺔ‬ ‫ﻓﻲ اﻟﺤﻘﯿﻘﺔ ﺑﻤﺠﺮد ﺿﺒﻂ اﻟﺨﺎﺻﯿﺔ‬
‫‪ edit1.text = 0‬ﺳﻮف ﺗﺤﺪث آﻟﯿﺎ ‪.‬‬
‫اﻵن ﻧﻘﻮم ﺑﺤﻔﻆ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﻣﺠﻠﺪ ﻧﺴﻤﯿﻪ ‪ islam‬ﻧﻘﻮم ﺑﺈﻧﺸﺎﺋﻪ ﻳﺪوﻳﺎ ﻓـﻲ اﻟﻘـﺮص اﻟـﺼﻠﺐ ‪ c‬و ﻧـﻀﻊ‬
‫داﺧﻞ ھﺬا اﻟﻤﺠﻠﺪ ﻣﺠﻠﺪا ﻓﺮﻋﯿﺎ و ﻧﺴﻤﯿﻪ ‪ . test‬و ﻧﻀﻊ ﻓﻲ ھﺬا اﻟﻤﺠﻠﺪ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺼﻮر ذات ﻧﻤﻂ ‪jpg‬‬
‫و ﻧﺮﻗﻤﮫﺎ ﻣﻦ ‪ 0‬إﻟﻰ ﻣﺎ ﻧﺸﺎء ) أﻧﺎ وﺿﻌﺖ ‪ 9‬ﺻﻮر ﻛﻞ ﺻﻮرة ﺗﺤﻤﻞ ﺣﺪﻳﺜﺎ ﻧﺒﻮﻳﺎ( ﻛﻤﺎ ﻳﻠﻲ‪:‬‬

‫وﻣﮫﺎم اﻟﺒﺮﻧﺎﻣﺞ ھﻮ ﻓﺘﺢ ﺻﻮرة ﻣﻦ اﻟﺼﻮر ﻓﻲ ﻛﻞ ﻣﺮة ﻳﺸﺘﻐﻞ ﻓﯿﮫﺎ اﻟﺒﺮﻧﺎﻣﺞ و ﻟﯿﺘﻢ ذﻟﻚ ﻗﻢ ﺑﺎﻟﻨﻘﺮ اﻟﻤـﺰدوج‬
‫ﻋﻠﻰ اﻟﻨﻤﻮذج و اﻛﺘﺐ اﻷﻣﺮ اﻟﺘﺎﻟﻲ‪:‬‬

‫;)‪procedure TForm1.FormCreate(Sender: TObject‬‬

‫‪begin‬‬
‫;)‪ShellExecute (Handle, 'open', PChar ('c:\islam\test\'+ edit1.text +'.jpg') , nil, nil, SW_SHOW‬‬
‫;‪end‬‬

‫ﻛﻲ ﻳﻌﻤﻞ ھﺬا اﻟﻜﻮد ﻗﻢ ﺑﺈﺿﺎﻓﺔ اﻟﻔﺌﺔ ‪ ShellAPI‬إﻟﻰ ‪uses‬‬

‫‪ c:\islam\test‬أﻣـﺎ اﺳـﻢ اﻟﻤﻠـﻒ ﻓﮫﻨـﺎ ﺗﻜﻤـﻞ‬ ‫ﺣﯿﺚ ﻳﻘﻮم ھﺬا اﻷﻣﺮ ﺑﻔﺘﺢ ﻣﻠﻒ ﻣـﺎ ﻣـﻦ اﻟﻤـﺴﺎر اﻟﺘـﺎﻟﻲ‬
‫اﻟﻤﺸﻜﻠﺔ ﻓﻠﻮ ﺣﺪدﻧﺎه ب ‪ 0.jpg‬ﻓﺴﯿﻜﻮن اﻟﻤﺴﺎر ﻋﻠﻰ ھﺬا اﻟﻨﺤـﻮ )‪ ('c:\islam\test\0.jpg‬ﻣﻤـﺎ ﻳﻌﻨـﻲ‬
‫أﻧﻨﺎ ﺳﻨﻜﺘﺐ ‪ 10‬أواﻣﺮ )ﻣﻦ ﺻﻔﺮ إﻟﻰ ‪ (9‬و إذا ﻛﺎن ﻋﺪد اﻟﺼﻮر ) اﻷﺣﺎدﻳﺚ( اﻟﺘﻲ أرﻏﺐ ﻓﻲ ﻋﺮﺿﮫﺎ ‪ 300‬ﻓﮫـﺬا‬
‫ﻳﻌﻨﻲ أﻧﻨﻲ ﻣﺠﺒﺮ ﻋﻠﻰ ﻛﺘﺎﺑﺔ ‪ 301‬ﻛﻮد ﻣﻊ ﺗﻐﯿﯿﺮ إﺳﻢ اﻟﻤﻠﻒ ‪ .300.jpg..... 2.jpg 1.jpg 0.jpg‬ﻟﺘﺠﻨـﺐ‬
‫ھﺬه اﻟﻤﺸﻘﺔ رأﻳﺖ أن أﺟﻌـﻞ إﺳـﻢ اﻟﻤﻠـﻒ ھـﻮ ﻣﺤﺘـﻮى ) ﻧـﺺ( اﻷداة ‪ + edit1‬اﻟـﻨﺺ '‪ '.jpg‬ﻓـﺈذا ﻗﻤﻨـﺎ‬
‫ﺑﺘﺸﻐﯿﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺳﯿﻘﻮم ﺑﺎﻟﺬھﺎب إﻟﻰ اﻟﻤﺠﻠﺪ ‪ test‬و اﻟﺒﺤﺚ ﻋﻦ اﻟﻤﻠﻒ اﻟﺬي ﻳﺤﻤﻞ اﻹﺳﻢ اﻟﺘﺎﻟﻲ‪:‬‬
‫إذا ﻛﺎن ﻣﺤﺘﻮى اﻷداة ‪ edit1‬ﻳﺴﺎوي ‪ 4‬ﻓﺈﻧﻪ ﺳﯿﺘﻢ إﺿﺎﻓﺘﮫﺎ إﻟﻰ اﻟﻨﺺ '‪ '.jpg‬ﻓﯿﺼﺒﺢ اﺳـﻢ اﻟـﺼﻮرة اﻟﺘـﻲ‬
‫ﺳﯿﻈﮫﺮھﺎ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻤﺴﺎر '\‪ 'c:\islam\test‬ھﻲ ‪ 4.jpg‬ﻓﯿﺼﺒﺢ و ﻛﺄﻧﻨﺎ ﻛﺘﺒﻨﺎ اﻷﻣﺮ اﻟﺘﺎﻟﻲ‬
‫;)‪ShellExecute (Handle, 'open', PChar ('c:\islam\test\4.jpg') , nil, nil, SW_SHOW‬‬

‫ﻻﺑﺪ و أﻧﻚ أدرﻛﺖ أﻧﻨﺎ أردﻧﺎ ﺟﻌﻞ ﻣﺤﺘﻮى اﻟﻨﺺ ﻣﺘﻐﯿﯿﺮا آﻟﯿﺎ ﻓﯿﻜﻮن اﻟﺼﻔﺮ ﻋﻨﺪ أول إﺳﺘﺨﺪام ﺛﻢ ﻳﻨﺘﻘﻞ ﻟﻠﺮﻗﻢ‬
‫‪..... 1‬إﻟﻰ ﻏﺎﻳﺔ ﺑﻠﻮغ اﻟﻌﺪد اﻟﻨﮫﺎﺋﻲ وﻓﻘﺎ ﻟﻌﺪد اﻟﺼﻮر اﻟﺘﻲ وﺿﻌﺘﮫﺎ ﻓﺈذا ﻛﻨﺖ ﻗﺪ وﺿﻌﺖ ﺗﺴﻊ ﺻﻮر ﻓﻼﺑﺪ ﻟـﻚ‬
‫ﻣﻦ إﻧﺸﺎء أﻣﺮ ﻳﺠﻌﻞ ﻣﺤﺘﻮى اﻟﻨﺺ ﻳﻌﻮد إﻟـﻰ اﻟـﺼﻔﺮ ) ﻳﺴﺘﺤـﺴﻦ وﺿـﻊ ﻣـﺎ ﻳﺰﻳـﺪ ﻋـﻦ ‪ 100‬ﺻـﻮرة ﺣﺘـﻰ ﻻ‬
‫ﻳﺸﻌﺮ اﻟﻤﺴﺘﺨﺪم ﺑﺄﻧﻪ ﻳﻘﺮأ ﻧﻔﺲ اﻷﺣﺎدﻳﺚ(‪.‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫ﻣﺎ ﻧﺮﻳﺪه اﻵن ھﻮ ﻛﯿﻔﯿﺔ ﺗﻐﯿﯿﺮ ﻣﺤﺘﻮى اﻟﻨﺺ آﻟﯿﺎ‪ .‬ﻳﻜﻮ ن ھﺬا وﻓﻖ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ‪:‬‬

‫;)‪procedure TForm1.FormCreate(Sender: TObject‬‬


‫‪begin‬‬
‫;)‪ShellExecute (Handle, 'open', PChar ('c:\islam\test\'+ edit1.text +'.jpg') , nil, nil, SW_SHOW‬‬
‫; ‪updown1.Position:=StrToint(Edit1.Text)+1‬‬
‫;‪end‬‬

‫اﻟﻜﻮد اﻟﺬي أﺿﻔﻨﺎه ﻳﻘﻮم ﺑﺠﻌﻞ وﺿﻊ اﻷداة ‪ = updown1‬ﻣﺤﺘﻮى اﻷداة ‪ edit1+1‬أﻣﺎ اﻟﺪاﻟﺔ ‪StrToint‬‬
‫ﻓﺘﻤﻜﻨﻨﺎ ﻣﻦ ﺗﺤﻮﻳﻞ ﻣﺤﺘﻮى اﻷداة اﻟﻨﺼﯿﺔ إﻟﻰ ﺣﺎﻟﺔ رﻗﻤﯿﺔ‪ .‬و ﻣﺠﻤﻞ اﻟﻘـﻮل ھـﻮ أن اﻟﺒﺮﻧـﺎﻣﺞ ﻋﻨـﺪ اﺷـﺘﻐﺎﻟﻪ‬
‫ﺳﯿﻘﻮم ﺑﺘﻨﻔﯿﺬ ﻣﺎﻳﻠﻲ‪:‬‬
‫;)‪ShellExecute (Handle, 'open', PChar ('c:\islam\test\0.jpg') , nil, nil, SW_SHOW‬‬

‫ﺛﻢ ﻳﻨﻈﺮ إﻟﻰ ﻣﺤﺘﻮى اﻷداة ‪ Edit1‬ﻓﺈذا و ﺟﺪه = ‪ 0‬ﻓﺈﻧﻪ ﻳﻀﯿﻒ ﻟﻪ اﻟﺮﻗﻢ ‪ 1‬ﻓﯿﺼﺒﺢ ‪1‬‬
‫ﻓﺘﺼﺒﺢ اﻟﺼﻮرة ) اﻟﺤﺪﻳﺚ( اﻟﺘﻲ ﺳﺘﻔﺘﺢ اﻟﻤﺮة اﻟﻘﺎدﻣﺔ ھﻲ‬
‫;)‪ShellExecute (Handle, 'open', PChar ('c:\islam\test\1.jpg') , nil, nil, SW_SHOW‬‬
‫ﺛﻢ ﻳﻨﻈﺮ إﻟﻰ ﻣﺤﺘﻮى اﻷداة ‪ Edit1‬ﻣﺠﺪدا ﻓﺈذا و ﺟﺪه = ‪ 1‬ﻓﺈﻧﻪ ﻳﻀﯿﻒ ﻟﻪ اﻟﺮﻗﻢ ‪ 1‬ﻓﯿﺼﺒﺢ ‪2‬‬
‫ﻓﺘﺼﺒﺢ اﻟﺼﻮرة ) اﻟﺤﺪﻳﺚ( اﻟﺘﻲ ﺳﺘﻔﺘﺢ اﻟﻤﺮة اﻟﻘﺎدﻣﺔ ھﻲ‬
‫;)‪ShellExecute (Handle, 'open', PChar ('c:\islam\test\2.jpg') , nil, nil, SW_SHOW‬‬
‫ﻓﺈذا ﺑﻠﻎ ﻋﺪد اﻟﺼﻮر ﺗﺴﻌﺔ ﺳﯿﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﻌﻮدة إﻟﻰ اﻟﺼﻮرة رﻗﻢ ‪ 0‬و ذﻟﻚ وﻓﻘﺎ ﻟﻠﻜﻮد اﻟﺘﺎﻟﻲ‬

‫;)‪procedure TForm1.FormCreate(Sender: TObject‬‬


‫‪begin‬‬
‫;)‪ShellExecute (Handle, 'open', PChar ('c:\islam\test\'+ edit1.text +'.jpg') , nil, nil, SW_SHOW‬‬
‫; ‪updown1.Position:=StrToint(Edit1.Text)+1‬‬
‫‪if strToint(edit1.text) =9 then‬‬
‫; ‪Updown1.position:= 0‬‬
‫;‪end‬‬
‫ﻟﻮ ﻗﻤﺖ ﺑﺘﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺛﻢ إﻏﻼﻗﻪ ﻓﺘﺸﻐﯿﻠﻪ ﻣﻦ ﺟﺪﻳﺪ ﻓﺈﻧﻚ ﺗﻼﺣﻆ أن ‪ Edit1.Text=1‬و ھﺬا ﻷن اﻟﺒﺮﻧﺎﻣﺞ ﻻ‬
‫ﻳﺤﺘﻔﻆ ﺑﺂﺧﺮ ﺣﺎﻟﺔ ﻛﺎن ﻋﻠﯿﮫﺎ ﺑﻞ إﻧﻪ ﻳﻌﻮد ﻟﺤﺎﻟﺔ اﻟﺘﺼﻤﯿﻢ و ھﻮ ‪ Edit1.Text=0‬ﻓﺈذا أﺿﯿﻒ ﻟﻪ اﻟـﺮﻗﻢ ‪ 1‬و ﻓﻘـﺎ‬
‫ﻟﻠﻜﻮد اﻟﺴﺎﻟﻒ اﻟﺬﻛﺮ ﻓﺴﯿﻜﻮن اﻟﻤﺤﺘﻮى ھﻮ ‪ 1‬و ﺳـﯿﺤﺪث ھـﺬا ﻓـﻲ ﻛـﻞ ﻣـﺮة ‪ .‬أﻣـﺎ ﻣـﺎ ﻳﺠـﺐ ﻓﻌﻠـﻪ ﻓﮫـﻮ أن‬
‫ﻳﺤﺘﻔﻆ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺂﺧﺮ ﺣﺎﻟﺔ ﻋﻠﯿﻪ‪ .‬ﻓﺈذا ﻛﺎﻧﺖ اﻟﻌﻤﻠﯿﺔ اﻟـﺴﺎﻟﻔﺔ ﻗـﺪ ﺗﻤـﺖ ﺑﻨﺠـﺎح و أن ‪ Edit1.Text= 1‬ﻓـﺈن‬
‫اﻟﺤﺎﻟﺔ ھﺬه ﻳﺠﺐ أﻻ ﺗﺘﻐﯿﺮ ﺣﺘﻰ ﺗﺼﺒﺢ اﻟﻌﻤﻠﯿﺔ اﻟﻘﺎدﻣﺔ ھﻲ ‪ 2 = 1+1‬وﺑﺎﻟﺘﺎﻟﻲ ﺗﺸﻐﯿﻞ اﻟﺼﻮرة اﻟﺘﻲ ﺗﺤﻤﻞ‬
‫ھﺬا اﻹﺳﻢ‪ .‬و ﻛﻲ ﻳﺤﺘﻔﻆ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺂﺧﺮ ﺣﺎﻟﺔ ﻛـﺎن ﻋﻠﯿﮫـﺎ ﺛﻤـﺔ داﻟـﺔ ﺳﻨـﻀﯿﻔﮫﺎ ﻟﻠﺒﺮﻧـﺎﻣﺞ ﻓـﻲ آﺧـﺮ ﻋﻤﻠﯿـﺔ‬
‫اﻟﺒﺮﻣﺠﺔ‪.‬‬
‫اﻵن وﺟﺐ ﻋﻠﯿﻨﺎ إﻧﺸﺎء اﻷﻣﺮ اﻟﺬي ﻳﺠﻌﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻌﻤﻞ ﻣﻊ ﺑﺪء اﻟﺘﺸﻐﯿﻞ‪.‬‬

‫;)‪procedure TForm1.FormCreate(Sender: TObject‬‬


‫‪var‬‬
‫;‪reg: TRegistry‬‬
‫‪begin‬‬
‫;)‪ShellExecute (Handle, 'open', PChar ('c:\islam\test\'+ edit1.text +'.jpg') , nil, nil, SW_SHOW‬‬
‫; ‪updown1.Position:=StrToint(Edit1.Text)+1‬‬
‫‪if strToint(edit1.text) =9 then‬‬
‫; ‪Updown1.position:= 0‬‬
‫;‪reg := TRegistry.Create‬‬
‫;‪reg.RootKey := HKEY_LOCAL_MACHINE‬‬
‫;‪reg.LazyWrite := false‬‬
‫‪reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',‬‬
‫;)‪false‬‬
‫;)‪reg.WriteString('My App', Application.ExeName‬‬
‫ﻛﻲ ﻳﻌﻤﻞ ھﺬا اﻟﻜﻮد ﻗﻢ ﺑﺈﺿﺎﻓﺔ اﻟﻔﺌﺔ ‪ Registry‬إﻟﻰ ‪ uses‬ﻛﻤﺎ ﻓﻌﻠﻨﺎ ﻣﻊ ‪ ShellAPI‬ﺳﺎﺑﻘﺎ‪.‬‬
‫;‪reg.CloseKey‬‬
‫;‪reg.free‬‬
‫;‪end‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫ و ﻛﺘﺎﺑﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻲ و اﻟـﺬي ﻳﻘـﻮم ﺑـﺈﻏﻼق اﻟﺒﺮﻧـﺎﻣﺞ ﺑﻌـﺪ‬Timer1 ‫أﻣﺎ اﻵن ﻧﻘﻮم ﺑﺎﻟﻨﻘﺮ اﻟﻤﺰدوج ﻋﻠﻰ اﻷداة‬
‫ و ﺑﺎﻟﺘﺎﻟﻲ ﻓﺈن ﻣﺎ ﻳﺸﺎھﺪه اﻟﻤﺴﺘﺨﺪم ھﻮ اﻟﺼﻮرة اﻟﺘﻲ ﺗﺤﻮي اﻟﺤﺪﻳﺚ اﻟﻨﺒﻮي و ﻟﯿﺲ‬.‫ﻟﺤﻀﺎت ﻣﻦ ﺗﺸﻐﯿﻠﺔ‬
.‫اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺻﻤﻤﻨﺎه‬

procedure TForm1.Timer1Timer(Sender: TObject);


begin
form1.close;
end;

‫ و ﺳﺘﻈﻞ ﻧﻔـﺲ اﻟـﺼﻮرة ﺗﻈﮫـﺮ‬1 ‫ﻳﻤﻜﻨﻚ ﺣﻔﻆ اﻟﺒﺮﻧﺎﻣﺞ ﺛﻢ إﻋﺎدة ﺗﺸﻐﯿﻞ اﻟﻮﻳﻨﺪوز و ﺳﺘﻈﮫﺮ ﻟﻚ اﻟﺼﻮرة رﻗﻢ‬
:‫ﻣﻊ ﻛﻞ ﺗﺸﻐﯿﻞ ﻣﺎﻟﻢ ﺗﻀﻒ اﻟﻜﻮد اﻟﺘﺎﻟﻲ‬
‫ ﻗﻢ ﺑﺈﺿﺎﻓﺔ ﻣﺎﻳﻠﻲ‬- 1
public
constructor Create(AOwner: TComponent); override; // (1)
procedure BeforeDestruction; override; // (2)
end;
-2

var
Form1: TForm1;
PreservePath: string; // (3)
implementation
-3
{$R *.dfm}

constructor TForm1.Create(AOwner: TComponent); // (4)


begin

PreservePath := ExtractFilePath(Application.ExeName) +
'Preserve';
if not DirectoryExists(PreservePath) then
CreateDir(PreservePath);
PreservePath := PreservePath + '\';

if FileExists(PreservePath + ClassName + '.sav') then


begin
CreateNew(AOwner, 0);
with TFileStream.Create(PreservePath + ClassName + '.sav',
fmOpenRead or fmShareDenyWrite) do
try
ReadComponent(Self);
finally
Free;
end;
end
else

inherited Create(AOwner);

end;

-4
procedure TForm1.BeforeDestruction; // (5)
begin
inherited;

with TFileStream.Create(PreservePath + ClassName + '.sav',


fmCreate) do

PDF created with pdfFactory trial version www.pdffactory.com


‫‪try‬‬
‫;)‪WriteComponent(Self‬‬
‫‪finally‬‬
‫;‪Free‬‬
‫;‪end‬‬
‫;‪end‬‬

‫‪end.‬‬

‫ﻣﻼﺣﻈﺔ ﺗﻢ اﻹﺳﺘﻌﺎﻧﺔ ﺑﮫﺬه اﻟﺪاﻟﺔ ﻣﻦ ﻣﻮﻗﻊ ﺧﺎﻟﺪ ﺷﻘﺮوﻧﻲ‪.‬‬

‫‪http://www.shagrouni.com/arabic/index.html‬‬

‫ﺑﮫﺬا ﻧﻜﻮن ﻗﺪ أﻧﮫﯿﻨﺎ ﺑﺮﻧﺎﻣﺠﻨﺎ و ﻻ ﻧﺤﺘﺎج ﻟﺸﻲء ﺳﻮى ﺗﺤﺰﻳﻤﻪ ﻋﻠﻰ ﺷﺮط اﺳﺘﺨﺮاج اﻟﺒﺮﻧﺎﻣﺞ و اﻟﻤﺠﻠﺪ‬
‫اﻟﻔﺮﻋﻲ ‪ TEST‬اﻟﺬي ﻳﻀﻢ اﻟﺼﻮر ﻓﻲ ھﺬا اﻟﻤﺴﺎر ‪ c:\islam‬و ھﺬا اﻟﻌﻤﻞ ﻻ ﻳﺤﺘﺎج إﻟﻰ ﻋﺒﻘﺮﻳﺔ ﺧﺼﻮﺻﺎ‬
‫ﻣﻊ ﺗﻮﻓﺮ ﻋﺪد ﻛﺒﯿﺮ ﻣﻦ اﻟﺒﺮاﻣﺞ اﻟﺨﺎﺻﺔ ﺑﻌﻤﻞ ‪. SETUP‬‬

‫ھﺬا ﻧﻤﻮذج ﻟﻤﺎ ﻳﻈﮫﺮ ﻣﻊ ﺑﻌﺪ اﻟﺘﺸﻐﯿﻞ‪ .‬ﻳﻤﻜﻨﻚ اﻟﺘﻼﻋﺐ ﺑﮫﯿﺌﺔ اﻟﻤﻠﻔﺎت ﻛﻤﺎ ﺗﺸﺎء ﻛﻤﺎ ﻳﻤﻜﻨﻚ إﻇﮫﺎر واﺟﮫﺔ‬
‫اﻟﺒﺮﻧﺎﻣﺞ و ﺗﻤﻜﯿﻦ اﻟﻤﺴﺘﺨﺪم ﻣﻦ ﺿﺒﻂ ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ ﻛﺄن ﻳﺨﺘﺎر ﻧﻮع اﻷﺣﺎدﻳﺚ وﻓﻘﺎ ﻟﻠﻤﻮﺿﻮع أو اﺧﺘﯿﺎر‬
‫ﻣﻠﻔﺎت ﺻﻮﺗﯿﺔ أو ﻣﻠﻔﺎت اﻟﻔﻼش ﺑﻼﻳﺮ اﻟﺘﻲ ﺗﻜﻮن ﻗﺪ ﺻﻤﻤﺘﮫﺎ أو ﺣﺼﻠﺖ ﻋﻠﯿﮫﺎ ﻣﻦ ﻋﻨﺪ زﻣﯿﻞ ﻣﺨﺘﺺ ﻓﻲ‬
‫ھﺬا اﻟﻤﺠﺎل ﻛﻲ ﺗﺒﻨﻲ ﺑﺮاﻣﺞ ﻣﺤﺘﺮﻣﺔ ‪.‬‬

‫ﻋﻤﻮﻣﺎ‪ ,‬ﻳﻤﻜﻨﻚ ﺑﻨﺎء ﻋﺪة ﺑﺮاﻣﺞ وﻓﻘﺎ ﻟﻠﻄﺮﻳﻘﺔ اﻟﺴﺎﺑﻘﺔ ‪.‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬


‫ﻓﻲ اﻷﺧﯿﺮ أﻧﻮه أن ﻣﺸﺎرﻳﻊ أﺧﺮى ﻛﻨﺖ ﺑﺼﺪد اﻋﺪادھﺎ ‪ ,‬ﻏﯿـﺮ أن اﻧـﺼﺮاﻓﻲ ﻋـﻦ ﻣﺠـﺎل اﻟﻤﺒﺮﻣﺠـﺔ ﻗـﺪ ﻳﻄـﻮل‬
‫ﻓﺄﺣﺒﺒﺖ أن أﺧﺘﻢ اﻟﻜﺘﯿﺐ ﻋﻨﺪ ھﺬا اﻟﺤﺪ ﻋﺴﻰ أن ﻳﻨﺘﻔﻊ اﻟﻘﺮاء ﺑﻤﺎ ﻳﺤﻮﻳﻪ ﻣﻦ ﻣﻌﻠﻮﻣﺎت‪.‬‬

‫ﻛﻤﺎ أﺣﯿﻠﻜﻢ إﻟﻰ ھﺬه اﻟﻤﺼﺎدر اﻟﮫﺎﻣﺔ ﻟﺘﻌﻠﻢ ﻟﻐﺔ دﻟﻔﻲ‬


‫ﻣﻮﻗﻊ اﻟﻤﺒﺮﻣﺞ اﻹﻳﻄﺎﻟﻲ ﻣﺎرﻛﻮ ﻛﺎﻧﺘﻮ‬
‫‪www.marcocantu.com‬‬

‫ﻳﻤﻜﻨﻜﻢ ﺗﺤﻤﯿﻞ ﻛﺘﺎﺑﻪ أﺳﺎﺳﯿﺎت ﺑﺎﺳﻜﺎل ﻣﺠﺎﻧﺎ و ﺑﺎﻟﻠﻐﺔ اﻟﻌﺮﺑﯿﺔ‬

‫ﻣﻮﻗﻊ اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‪ ,‬و ھﻮ أﺣﺪ أﻏﻨـﻰ اﻟﻤﻮاﻗـﻊ ﺑﺎﻟﻤـﺎدة اﻟﻌﻠﻤﯿـﺔ اﻟﺮاﻗﯿـﺔ اﻟﻤﺘـﻮﻓﺮة ﻋﻠـﻰ ﺻـﻔﺤﺎت‬
‫ﻣﻨﺘﺪﻳﺎﺗﻪ اﻟﻤﺨﺘﻠﻔﺔ‪.‬‬
‫‪www.arabteam2000.com‬‬
‫ﻟﻘﺪ ﺗﻢ اﻹﺳﺘﻌﺎﻧﺔ ﺑﺒﻌﺾ اﻟﻤﻮاﺿﯿﻊ اﻟﻤﻮﺟﻮدة ﻋﻠﻰ ﺻﻔﺤﺎت ھﺬا اﻟﻤﻮﻗﻊ ﻓﻲ ﻛﺘﺎﺑﻨﺎ ھﺬا‪.‬‬

‫إﻋﺪاد ‪ :‬ﻳﻮﺳﻒ ﺑﻮﺳﻌﯿﺪ‬


‫‪You_per7@hotmail.com‬‬

‫‪PDF created with pdfFactory trial version www.pdffactory.com‬‬

You might also like