Òåìà 5: Ñîçäàíèå ïåðâîãî ïðèëîæåíèÿ

Òðàäèöèîííî ïðè èçó÷åíèè ïðîãðàììèðîâàíèÿ ïðèíÿòî ñîçäàâàòü ïåðâóþ ïðîãðàììó, êîòîðàÿ âûâîäèò òåêñò "Hello, world!". Íå áóäåì îòñòóïàòü îò òðàäèöèè è ñîçäàäèì ïðîãðàììó, êîòîðàÿ âûâîäèò ýòîò òåêñò òðåìÿ ðàçíûìè ñïîñîáàìè. Íî âíà÷àëå ïîçíàêîìèìñÿ ñ ñàìîé ñðåäîé ïðîãðàììèðîâàíèÿ Delphi. Ïðåäïîëàãàåòñÿ, ÷òî íà ýòîò ìîìåíò Delphi 7 óæå óñòàíîâëåíà íà âàøåì ÏÊ. Åñëè ýòî íå òàê, òî ïåðåä äàëüíåéøèì ïðî÷òåíèåì ëåêöèè óñòàíîâèòå Delphi 7. Ïðè çàãðóçêå Delphi 7 âû âèäèòå òàêóþ êàðòèíó:

Ðàáî÷àÿ ñðåäà Delphi 7



óâåëè÷èòü èçîáðàæåíèå

Ðèñ. 1.1.  Ðàáî÷àÿ ñðåäà Delphi 7

Ïîçíàêîìüòåñü – ýòî Delphi. Ó íåå åñòü ìíîãî îêîí, ïàíåëåé, êîìïîíåíòîâ. Ñ áîëüøèíñòâîì èç íèõ ìû ïîçíàêîìèìñÿ ñî âðåìåíåì, à ïîêà íàì íóæíî îáðàòèòü âíèìàíèå íà 5 îêîí:

1.     Ãëàâíîå îêíî Delphi. Çäåñü íàõîäèòñÿ îñíîâíîå ìåíþ, ðàçëè÷íûå ïàíåëè èíñòðóìåíòîâ è ïàëèòðà êîìïîíåíòîâ, ñîñòîÿùàÿ èç ìíîæåñòâà âêëàäîê.

2.     Êîíñòðóêòîð ôîðìû. Çäåñü ìû âèçóàëüíî âèäèì, êàê áóäåò âûãëÿäåòü ôîðìà ïðîãðàììû, çäåñü ìû áóäåì ñîçäàâàòü èíòåðôåéñ, ïåðåíîñÿ íà ôîðìó ðàçëè÷íûå êîìïîíåíòû, è ðàññòàâëÿÿ èõ òàêèì îáðàçîì, ÷òîáû èíòåðôåéñ âûãëÿäåë ïðèâëåêàòåëüíûì. Íàì ÷àñòî ïðèäåòñÿ ïåðåêëþ÷àòüñÿ ìåæäó êîíñòðóêòîðîì ôîðì è ðåäàêòîðîì êîäà, äåëàåòñÿ ýòî êëàâèøåé F12.

3.     Ðåäàêòîð êîäà. Çäåñü ìû âèäèì èñõîäíûé êîä ïðîãðàììû, êîòîðûé ñîçäàí ñàìîé Delphi. Òóò æå ìû áóäåì ââîäèòü íàø ñîáñòâåííûé êîä.

4.     Îáúåêòíûé èíñïåêòîð. Îí ïðåäíàçíà÷åí äëÿ óïðàâëåíèÿ îáúåêòàìè ïðîåêòà è ñîñòîèò èç äâóõ âêëàäîê – Properties (Ñâîéñòâà) è Events (Ñîáûòèÿ).

5.     Äåðåâî îáúåêòîâ. Çäåñü ìû âèäèì, êàêîé èìåííî îáúåêò â äàííûé ìîìåíò ÿâëÿåòñÿ òåêóùèì. Ýòî îêíî áóäåò îñîáåííî ïîëåçíî, êîãäà íà ôîðìå ïîÿâèòñÿ ìíîæåñòâî êîìïîíåíòîâ.

Êîãäà îòêðûâàåòñÿ Delphi, îíà àâòîìàòè÷åñêè ñîçäàåò è îòîáðàæàåò íîâûé ïðîåêò (ïðîãðàììó). Íà ðèñóíêå âû âèäèòå ïðîåêò, êîòîðûé ñîäåðæèò òîëüêî îäíó ñòàíäàðòíóþ ôîðìó. Ôîðìà – ýòî òîæå îáúåêò, êîòîðûé ïðåäñòàâëÿåò ñîáîé îêíî ïðîãðàììû. ×òîáû ïðîãðàììà äåëàëà ÷òî-òî ïîëåçíîå, íàì ïðèäåòñÿ âíîñèòü èçìåíåíèÿ â íåå. Âûâåäåì òåêñò "Hello, world!" ïåðâûì ñïîñîáîì. Äëÿ ýòîãî â èíñïåêòîðå îáúåêòîâ íàéäèòå ñâîéñòâî Caption.  äàííûé ìîìåíò òåêóùèì ÿâëÿåòñÿ îáúåêò – ôîðìà, è ñâîéñòâî Caption ôîðìû îòâå÷àåò çà íàäïèñü íà ñèñòåìíîé ñòðîêå ïðîãðàììû (ñèíÿÿ ïîëîñà ââåðõó ëþáîãî ïðîãðàììíîãî îêíà). Ïî óìîë÷àíèþ, ñâîéñòâî Caption ñîäåðæèò íàäïèñü "Form1", òàêæå íàçûâàåòñÿ è ñàìà ôîðìà. Èçìåíèòå ýòó íàäïèñü íà "Hello, world!" (êîíå÷íî, áåç êàâû÷åê). Óæå â ïðîöåññå ââîäà òåêñòà âû âèäèòå, ÷òî íàäïèñü â ñèñòåìíîé ñòðîêå ïðèíèìàåò íîâûé âèä. Ìû ââåëè ýòîò òåêñò îäíèì ñïîñîáîì.

Òåïåðü íàì íóæíî ñîõðàíèòü ïðîåêò. Ïðîåêò – ñîâîêóïíîñòü ôàéëîâ ðàçíûõ ôîðìàòîâ, èç êîòîðûõ ñîçäàåòñÿ ïðîãðàììà. Îá ýòîì ìû ïîäðîáíåé ïîãîâîðèì â îäíîé èç ñëåäóþùèõ ëåêöèé, à ïîêà çàïîìíèòå ïðàâèëî – êàæäóþ ïðîãðàììó (ïðîåêò), êîòîðóþ âû ñîçäàåòå, íóæíî ñîõðàíÿòü â îòäåëüíîé ïàïêå. Åñëè âû âñå ïðîåêòû ñòàíåòå ñîõðàíÿòü â îäíó ïàïêó, òî î÷åíü ñêîðî çàïóòàåòåñü. ×òîáû ñîõðàíèòü ïðîåêò, âûïîëíèì ñëåäóþùèå äåéñòâèÿ:

1.     Âûáèðàåì êîìàíäó ìåíþ "File – Save All" (ñîõðàíèòü âñå), ëèáî íàæèìàåì ãîðÿ÷èå êëàâèøè <Shift+Ctrl+S>, ëèáî íàæèìàåì îäíîèìåííóþ êíîïêó íà ïàíåëè èíñòðóìåíòîâ

Êíîïêè Save (Ñîõðàíèòü) è Save All (Ñîõðàíèòü âñ¸) íà ïàíåëè èíñòðóìåíòîâ



Ðèñ. 1.2.  Êíîïêè Save (Ñîõðàíèòü) è Save All (Ñîõðàíèòü âñ¸) íà ïàíåëè èíñòðóìåíòîâ

2.     Çàòåì âûõîäèò îêíî ñ ïðåäëîæåíèåì ñîõðàíèòü ìîäóëü – òåêñòîâûé ôàéë ñ èñõîäíûì êîäîì, ïðèíàäëåæàùèé ôîðìå. Ôàéë èìååò ðàñøèðåíèå *.pas. Èìååì â âèäó, ÷òî êàæäûé ïðîåêò ñîõðàíÿåòñÿ â îòäåëüíóþ ïàïêó, ïîýòîìó âíà÷àëå ùåëêíåì ïðàâîé êíîïêîé ìûøè ïî ñâîáîäíîìó ìåñòó îêíà ñ ïàïêàìè, è âûáåðåì êîìàíäó "Ñîçäàòü - Ïàïêó". Äàäèì ïàïêå êàêîå-ëèáî èìÿ, íàïðèìåð, "01". Ïîñëå ñîçäàíèÿ ïàïêè îòêðûâàåì åå.

3.     Äàëåå â ïîëå "Èìÿ ôàéëà" óêàæåì èìÿ ñîõðàíÿåìîãî ìîäóëÿ. Èìÿ ìîæåò áûòü ëþáûì, íî îáÿçàòåëüíî ëàòèíñêèìè ñèìâîëàìè. Åùå èìÿ ìîäóëÿ íå äîëæíî ñîâïàäàòü ñ èìåíåì ôîðìû. Îáû÷íî, èìåíà ôîðìàì è ìîäóëÿì ñòàðàþòñÿ äåëàòü èíôîðìàòèâíûìè, òî åñòü, ïî èìåíè ìîæíî áóäåò äîãàäàòüñÿ, ÷òî ýòî çà ôàéë. Ïîñêîëüêó ýòî ãëàâíàÿ ôîðìà ïðîåêòà, äàäèì åé èìÿ "Main", è íàæìåì êíîïêó "Ñîõðàíèòü".

4.     Çàòåì íàì áóäåò ïðåäëîæåíî äàòü èìÿ ïðîåêòó â öåëîì. Èìÿ ïðîåêòà áóäåò ñîâïàäàòü ñ èìåíåì èñïîëíÿåìîãî ïðîãðàììíîãî ôàéëà. Åñëè ìû õîòèì, ê ïðèìåðó, ïîëó÷èòü ôàéë "hello.exe", òî äàäèì ïðîåêòó èìÿ "hello". Íàæìåì êíîïêó "Ñîõðàíèòü".

Äàëåå íàì íåîáõîäèìî ñêîìïèëèðîâàòü ïðîãðàììó, òî åñòü, ïåðåâåñòè èñõîäíûé êîä â âûïîëíÿåìûé exe-ôàéë. Äëÿ ýòîãî ìû ìîæåì âûáðàòü êîìàíäó ìåíþ "Run - Run", ëèáî íàæàòü ãîðÿ÷óþ êëàâèøó F9, ëèáî íàæàòü êíîïêó "Run" íà ïàíåëè èíñòðóìåíòîâ (íà êíîïêå èçîáðàæåíèå çåëåíîé ñòðåëêè, óêàçûâàþùåé âïðàâî).  ðåçóëüòàòå, ïðîãðàììà áûëà íå òîëüêî ñêîìïèëèðîâàíà, íî è çàïóùåíà. Åñëè âû ïîñìîòðèòå íà ñèñòåìíóþ ñòðîêó Delphi, òî óâèäèòå íàäïèñü "Delphi 7 – hello [Running]", à îêíà èíñïåêòîðà îáúåêòîâ è äåðåâà îáúåêòîâ èñ÷åçëè. Ýòî ãîâîðèò î òîì, ÷òî ïðîãðàììà íàõîäèòñÿ â ðåæèìå âûïîëíåíèÿ. Âûïîëíÿåìàÿ ïðîãðàììà èìååò òî÷íî òàêîé æå âèä, êàê íàøà ãëàâíàÿ ôîðìà, òîëüêî íà ôîðìå îòñóòñòâóåò òî÷å÷íàÿ ñåòêà, ïðåäíàçíà÷åííàÿ äëÿ îáëåã÷åíèÿ äèçàéíà. Îêíî ïîëó÷åííîé ïðîãðàììû ñîäåðæèò âñå ñòàíäàðòíûå êíîïêè Windows – ïðîãðàììû. Ùåëêíóâ ïî êðàñíîìó êðåñòèêó â ïðàâîé âåðõíåé ÷àñòè îêíà, çàêðîéòå ïðîãðàììó (íî íå Delphi), è âû óâèäèòå ïðåæíþþ ôîðìó.

Îáðàòèòå âíèìàíèå, ÷òî ñâîéñòâà â Îáúåêòíîì Èíñïåêòîðå ïðèíàäëåæàò âûäåëåííîìó â äàííûé ìîìåíò êîìïîíåíòó. Âûäåëÿþòñÿ êîìïîíåíòû ïðîñòûì ùåë÷êîì ìûøè. Èìåéòå â âèäó, ÷òî ùåëêàòü íóæíî îäèí ðàç. Äâîéíîé ùåë÷îê ñîçäàñò îáðàáîò÷èê ñîáûòèÿ – ïðîöåäóðó. Åñëè âû îøèáî÷íî ñîçäàäèòå òàêèì îáðàçîì ïðîöåäóðó, òî ïðîñòî ñîõðàíèòå ïðîåêò, íè÷åãî â íåå íå âïèñûâàÿ – ïðè ñîõðàíåíèè ïîñëåäíèå ïóñòûå ïðîöåäóðû àâòîìàòè÷åñêè óäàëÿþòñÿ. Óäàëÿòü èõ âðó÷íóþ íå ðåêîìåíäóåòñÿ.

Ïîïðîáóåì âòîðîé ñïîñîá. Îáðàòèòå âíèìàíèå íà Ïàëèòðó êîìïîíåíòîâ. Òåêóùåé ÿâëÿåòñÿ âêëàäêà Standard, è íà íåé íàõîäèòñÿ ìíîæåñòâî çíà÷êîâ – êîìïîíåíòîâ. Êîãäà âû ïîäâîäèòå óêàçàòåëü ìûøè ê êàêîìó-ëèáî êîìïîíåíòó, ÷åðåç íåêîòîðîå âðåìÿ âûñêàêèâàåò ïîäñêàçêà ñ èìåíåì êîìïîíåíòà. Íàì íóæåí êîìïîíåíò Label, êîòîðûé ïðåäñòàâëåí íà âêëàäêå â âèäå êíîïêè ñ èçîáðàæåíèåì æèðíîé áóêâû "À". Ùåëêíèòå ïî ýòîé êíîïêå, çàòåì ùåëêíèòå ïî ñâîáîäíîìó ìåñòó íà ôîðìå, ÷òîáû âñòàâèòü êîìïîíåíò. Ëó÷øå, åñëè âû ðàñïîëîæèòå åãî áëèæå ê ëåâîìó âåðõíåìó êðàþ ôîðìû. Êîìïîíåíò Label ïîÿâèëñÿ íà ôîðìå. Ýòîò êîìïîíåíò ïðåäñòàâëÿåò ñîáîé îáû÷íóþ íàäïèñü. Ñåé÷àñ îí âûäåëåí, è ñîäåðæèò íàäïèñü ïî óìîë÷àíèþ, - "Label1". Òåïåðü îáúåêòíûé èíñïåêòîð ïîêàçûâàåò ñâîéñòâà ýòîãî êîìïîíåíòà, à íå ôîðìû. Label òàêæå èìååò ñâîéñòâî Caption, êîòîðîå âû ìîæåòå èçìåíèòü â Èíñïåêòîðå îáúåêòîâ. Íàéäèòå ýòî ñâîéñòâî, è âìåñòî "Label1" âïèøèòå "Hello, world!". Òåêñò â êîìïîíåíòå Label èçìåíèëñÿ. Åñëè âàì íå íðàâèòñÿ ìåñòî, â êîòîðîì îêàçàëñÿ êîìïîíåíò, âû ìîæåòå ïåðåòàùèòü åãî ìûøüþ íà äðóãîå ìåñòî. Êðîìå òîãî, òî÷íîå ìåñòîïîëîæåíèå êîìïîíåíòà âû ìîæåòå çàäàòü, åñëè âûäåëèòå åãî, è áóäåòå íàæèìàòü êëàâèøè ïåðåìåùåíèÿ êóðñîðà, óäåðæèâàÿ ïðè ýòîì êëàâèøó <Ctrl>. Òåïåðü ïîïðîáóéòå åùå îäíî ñâîéñòâî êîìïîíåíòà Label – ñâîéñòâî Font (øðèôò). Íàéäèòå ýòî ñâîéñòâî â èíñïåêòîðå îáúåêòîâ, è âûäåëèòå åãî. Ñïðàâà ïîÿâèòñÿ êíîïî÷êà ñ òðåìÿ òî÷êàìè, íàæìèòå åå. Îòêðîåòñÿ ñòàíäàðòíîå îêíî âûáîðà øðèôòà. Çäåñü âû ìîæåòå âûáðàòü èìÿ øðèôòà, åãî ðàçìåðû, íà÷åðòàíèå (íàïðèìåð, æèðíûé êóðñèâ) è öâåò òåêñòà. Ïîýêñïåðèìåíòèðóéòå ñ ðàçìåðîì êîìïîíåíòà, åãî ïîëîæåíèåì è øðèôòîì. Ïî÷òè âñå êîìïîíåíòû, ñ êîòîðûìè íàì ïðèäåòñÿ èìåòü äåëî, èìåþò ýòè ñâîéñòâà, òàê ÷òî â äàëüíåéøåì âàì áóäåò ëåã÷å îñâàèâàòü íîâûé êîìïîíåíò.

Ñíîâà ñîõðàíèòå ïðîåêò è íàæìèòå êíîïêó Run (èëè <F9>). Óáåäèòåñü, ÷òî íàäïèñü ïîÿâèëàñü íà ôîðìå, ïîñëå ÷åãî çàêðîéòå ïðîãðàììó (íî íå Delphi) è âåðíèòåñü ê ôîðìå.

Ïîïðîáóåì òðåòèé, íåìíîãî áîëåå ñëîæíûé ñïîñîá. Ïîêà ÷òî ìû ñîçäàâàëè ïðîãðàììó, íå íàïèñàâ íè åäèíîé ñòðîêè êîäà. Ìû çàíèìàëèñü òîëüêî äèçàéíîì, âñå îñòàëüíûå òðóäíîñòè Delphi âçÿëà íà ñåáÿ. Òåïåðü ïîïðîáóåì âûâåñòè ýòî æå ñîîáùåíèå, êàê òîëüêî ïîëüçîâàòåëü íàæìåò êíîïêó íà ôîðìå.

Äëÿ íà÷àëà íóæíî óñòàíîâèòü íà ôîðìó êíîïêó. Ýòîò êîìïîíåíò òàêæå íàõîäèòñÿ íà âêëàäêå Standard ïàëèòðû êîìïîíåíòîâ, è âûãëÿäèò êàê êíîïî÷êà ñ íàäïèñüþ "ÎÊ". Ïðè íàâåäåíèè íà íåãî óêàçàòåëÿ ìûøè âûñêàêèâàåò ïîäñêàçêà "Button". Ùåëêíóâ ïî êîìïîíåíòó, ùåëêíèòå çàòåì ïî òîìó ìåñòó íà ôîðìå, ãäå âû õîòåëè áû âèäåòü ýòó êíîïêó. Èçìåíèì íàäïèñü íà êíîïêå. Óáåäèòåñü, ÷òî êíîïêà âûäåëåíà, è íàéäèòå â èíñïåêòîðå îáúåêòîâ åå ñâîéñòâî Caption. Çàìåíèòå íàäïèñü "Button1" íà "Íàæìè ìåíÿ!". Åñëè íàäïèñü íå óìåùàåòñÿ íà êíîïêå, âû ìîæåòå ðàñòÿíóòü êíîïêó ìûøüþ, èëè èñïîëüçîâàòü äëÿ ýòîãî êëàâèøè óïðàâëåíèÿ êóðñîðîì ñ íàæàòîé êíîïêîé <Shift>.

Äàëåå íàì íóæíî ñîçäàòü îáðàáîò÷èê íàæàòèÿ íà êíîïêó. Îáðàáîò÷èê ïðåäñòàâëÿåò ñîáîé ïðîöåäóðó, â êîòîðîé ìû áóäåì ïèñàòü íàø êîä. Ýòîò êîä áóäåò âûïîëíÿòüñÿ ïðîãðàììîé âñÿêèé ðàç, êîãäà ïîëüçîâàòåëü íàæìåò íà ýòó êíîïêó. ×òîáû ñîçäàòü ýòîò îáðàáîò÷èê, ñëåäóåò äâàæäû íàæàòü íà êíîïêó íà ôîðìå. Âû ñðàçó ïîïàäàåòå â ðåäàêòîð êîäà è âèäèòå, ÷òî ïðîöåäóðà óæå ñîçäàíà, êóðñîð ìèãàåò â òîì ìåñòå, ãäå ìû äîëæíû ââåñòè ñâîé êîä. Ïîêà ÷òî íå áóäåì ðàçáèðàòüñÿ, ÷òî òóò ê ÷åìó, à ïðîñòî âïèøåì ñòðîêó:

ShowMessage('Hello, world!');

Ïîëíûé òåêñò ïðîöåäóðû ïîëó÷èòñÿ òàêîé:

procedure TForm1.Button1Click(Sender: TObject);

begin

  ShowMessage('Hello, world!');

end;

Åñëè ó âàñ òàê è ïîëó÷èëîñü, ñîõðàíèòå ïðîåêò, îòêîìïèëèðóéòå åãî è çàïóñòèòå íà âûïîëíåíèå. Ïðè íàæàòèè íà êíîïêó áóäåò ïîÿâëÿòüñÿ óêàçàííàÿ íàäïèñü. Ìû ñîçäàëè ïîëíîöåííóþ ïðîãðàììó, âûâîäÿùóþ íàäïèñü "Hello, world!" òðåìÿ ðàçëè÷íûìè ñïîñîáàìè, âïèñàâ ïðè ýòîì ëèøü îäíó ñòðîêó èñõîäíîãî êîäà! Ïîëó÷åííûé ôàéë hello.exe íàõîäèòñÿ â óêàçàííîé âàìè ïàïêå C:\Program Files\Borland\Delphi7\Projects\01

Ïðè ñîõðàíåíèè ïðîåêòà âû ìîæåòå óêàçûâàòü è äðóãèå ïàïêè, è ïðîåêò áóäåò ñîõðàíåí ïî óêàçàííîìó àäðåñó. Ïîëó÷åííûé ïðîãðàììíûé ôàéë hello.exe âû ìîæåòå òåïåðü ðàñïðîñòðàíÿòü, íàïðèìåð, ïåðåñëàòü äðóãó, ÷òîáû îí ïîëþáîâàëñÿ âàøèìè äîñòèæåíèÿìè.

Ëåêöèÿ 2. Ïåðåìåííûå

Èç ýòîé ëåêöèè âû óçíàåòå, ÷òî òàêîå ïåðåìåííàÿ, è êàêèå òèïû ïåðåìåííûõ áûâàþò. Òàêæå ïîçíàêîìèòåñü ñ òèïîì "Ñòðîêà". Çàòåì ìû çàòðîíåì ñòèëè ïðîãðàììèðîâàíèÿ, ïîçíàêîìèìñÿ ñ êîììåíòàðèÿìè è íàïèøåì äâå ïðîãðàììû.

 ëþáîì ÿçûêå ïðîãðàììèðîâàíèÿ ïðèõîäèòñÿ èñïîëüçîâàòü ïåðåìåííûå. Ïðè çàãðóçêå ïðîãðàììû, êîìïüþòåð âíà÷àëå ñ÷èòûâàåò âñå íåîáõîäèìûå äàííûå â îïåðàòèâíóþ ïàìÿòü, ïîñëå ÷åãî óæå èìååò âîçìîæíîñòü ðàáîòàòü ñ íèìè. Ïåðåìåííàÿýòî ÿ÷åéêà îïåðàòèâíîé ïàìÿòè, êîòîðàÿ ìîæåò õðàíèòü äàííûå êàêîãî-òî îäíîãî òèïà. Ïåðåìåííàÿ ïîõîæà íà ÿ÷åéêó â MS Excel, òàì òîæå â ÿ÷åéêå ìîæíî óêàçàòü íóæíûé ôîðìàò äàííûõ. Åñëè ïåðåìåííàÿ èìååò òèï äàííûõ "ñòðîêà", òî â íåå íåëüçÿ çàïèñàòü ÷èñëî. À â ïåðåìåííóþ ñ òèïîì "öåëîå ÷èñëî" íåëüçÿ çàïèñàòü âåùåñòâåííîå ÷èñëî.  ÿçûêàõ ïðîãðàììèðîâàíèÿ âåùåñòâåííûì íàçûâàþò ÷èñëî, ó êîòîðîãî åñòü çàïÿòàÿ, ïîñëå êîòîðîé èìåþòñÿ öèôðû, õîòÿ áû íóëè:

125,00

348,24

Êàæäàÿ ïåðåìåííàÿ èìååò óíèêàëüíîå èìÿ. Äëÿ êîìïüþòåðà èìÿ ïåðåìåííîé – ýòî àäðåñ ÿ÷åéêè ïàìÿòè, ãäå õðàíÿòñÿ äàííûå. Ïðèñâàèâàíèåì èìåí (èäåíòèôèêàòîðîâ) ïåðåìåííûì çàíèìàåòñÿ ïðîãðàììèñò. Èìåíà ïåðåìåííûì â Delphi äàþòñÿ ïî îïðåäåëåííûì ïðàâèëàì:

1.     Èìÿ ïåðåìåííîé ìîæåò ñîäåðæàòü ëþáîå êîëè÷åñòâî àíãëèéñêèõ áóêâ, öèôð è çíàêà ïîä÷åðêèâàíèÿ, äðóãèå ñèìâîëû íåäîïóñòèìû.

2.     Ïåðâûì ñèìâîëîì îáÿçàòåëüíî äîëæíà áûòü áóêâà.

3.     Â Delphi íåò ðàçíèöû, êàêèå áóêâû âû äàåòå ïåðåìåííûì – áîëüøèå èëè ìàëåíüêèå. Òî åñòü, myperem, MyPerem, MYPEREM – ýòî îäíà è òà æå ïåðåìåííàÿ.

Ñîâåò: Ïåðåìåííóþ ìîæíî íàçâàòü îäíîé áóêâîé. Îäíàêî óæå ÷åðåç ìåñÿö èëè ðàíüøå âàì î÷åíü òðóäíî áóäåò âñïîìíèòü, çà÷åì âû äåëàëè ïåðåìåííóþ F, è êàêèå äàííûå â íåé õðàíÿòñÿ. Ïîýòîìó ñòàðàéòåñü äàâàòü ïåðåìåííûì îñìûñëåííûå èìåíà è ñî÷åòàéòå áîëüøèå áóêâû ñ ìàëåíüêèìè äëÿ ðàçäåëåíèÿ íà ñëîâà. Õîðîøèå ïðèìåðû – MinZarplata èëè Glav_Param.

Òèïû ïåðåìåííûõ

Êàæäàÿ ïåðåìåííàÿ èìååò ñâîé òèï. Òèï ïåðåìåííîé îáÿçàòåëüíî íóæíî óêàçûâàòü, ïîòîìó ÷òî ðàçíûå òèïû ïåðåìåííûõ çàíèìàþò ðàçíûé ðàçìåð, è êîìïüþòåðó íóæíî çíàòü, ñêîëüêî áàéò â îïåðàòèâíîé ïàìÿòè òðåáóåòñÿ îòâåñòè ïîä óêàçàííóþ ïåðåìåííóþ. Ñîçäàíèå ïåðåìåííîé ñîñòîèò èç äâóõ ýòàïîâ:

1.     Îáúÿâëåíèå ïåðåìåííîé (óêàçûâàåì èìÿ è òèï ïåðåìåííîé). Ïåðåìåííàÿ îáúÿâëÿåòñÿ â ñïåöèàëüíîì ðàçäåëå var (ïîçæå ìû ïîçíàêîìèìñÿ ñ ýòèì ðàçäåëîì).

2.     Ïðèñâîåíèå ïåðåìåííîé êàêîãî-òî çíà÷åíèÿ.

Îáúÿâëåíèå ïåðåìåííîé âûãëÿäèò òàê:

var

   Peremennaya1 : Real;

   Peremennaya2, Peremennaya3 : Integer;

Êàê âèäíî èç ïðèìåðà, âíà÷àëå óêàçûâàåòñÿ èìÿ ïåðåìåííîé, çàòåì, ïîñëå äâîåòî÷èÿ óêàçûâàåòñÿ òèï ïåðåìåííîé. Åñëè íóæíî îáúÿâèòü íåñêîëüêî ïåðåìåííûõ îäíîãî òèïà, èõ èìåíà ðàçäåëÿþòñÿ çàïÿòûìè.  ïðèâåäåííîì ïðèìåðå ìû îáúÿâèëè îäíó âåùåñòâåííóþ ïåðåìåííóþ òèïà Real è äâå öåëûå ïåðåìåííûå òèïà Integer.

Ïðèñâàèâàòü çíà÷åíèå ïåðåìåííûì ìîæíî íåîäíîêðàòíî. Ïåðåìåííàÿ ïîòîìó è íàçûâàåòñÿ òàê, ÷òî åå çíà÷åíèå â ïðîöåññå ðàáîòû ïðîãðàììû ìîæåò ìåíÿòüñÿ. Îïåðàòîð ïðèñâîåíèÿ çíà÷åíèÿ âûãëÿäèò òàê:

:=

Ïðèìåðû ïðèñâîåíèÿ çíà÷åíèé ïåðåìåííûì:

A := 10;

B := 20.35;

C := 'Ýòî ñòðîêà';

D := True;

A := 3+5-1;

Ìåõàíèçì ïðèñâîåíèÿ çíà÷åíèÿ ðàáîòàåò ñëåäóþùèì îáðàçîì: âíà÷àëå ðàññ÷èòûâàåòñÿ çíà÷åíèå â ïðàâîé ÷àñòè êîìàíäû, òî åñòü, ïîñëå çíàêà ":=". Çàòåì ðåçóëüòàò ýòîãî çíà÷åíèÿ çàïèñûâàåòñÿ â ïåðåìåííóþ.  ïîñëåäíåé ñòðîêå ïðèìåðà ìû èñïîëüçîâàëè âûðàæåíèå "3+5-1". Âíà÷àëå ïîëó÷àåòñÿ ðåçóëüòàò, â íàøåì ñëó÷àå îí ðàâåí 7. Çàòåì ýòîò ðåçóëüòàò çàïèñûâàåòñÿ â ïåðåìåííóþ.

 äàëüíåéøåì, èìÿ ïåðåìåííîé ìîæíî èñïîëüçîâàòü â ðàçëè÷íûõ âûðàæåíèÿõ, íàïðèìåð:

A1 := 3;

A2 := A1 + 7;

A1 := A1 + 1;

 ïåðâîé ñòðîêå ìû çàïèñàëè â ïåðåìåííóþ ÷èñëî 3. Âòîðàÿ ñòðîêà ñîäåðæèò âûðàæåíèå, ðåçóëüòàòîì êîòîðîãî áóäåò ÷èñëî 10. À âîò òðåòüÿ ñòðîêà èíòåðåñíåé. Êàê âû ïîëàãàåòå, ÷òî áóäåò çàïèñàíî â ïåðåìåííóþ A1? Åñëè âàø îòâåò 4, âû ñîâåðøåííî ïðàâû: âíà÷àëå ðàññ÷èòûâàåòñÿ ðåçóëüòàò ïðàâîé ÷àñòè êîìàíäû, ãäå â ïåðåìåííîé A1 åùå ñòàðîå çíà÷åíèå, çàòåì îí çàïèñûâàåòñÿ â ýòó æå ïåðåìåííóþ, èçìåíÿÿ åå çíà÷åíèå.

 òàáëèöå 2.1 ïåðå÷èñëåíû îñíîâíûå òèïû ïåðåìåííûõ:

Òàáëèöà 2.1.

Íàçâàíèå òèïà

Îïèñàíèå

Ïîÿñíåíèÿ

Integer

Öåëîå ÷èñëî

Ïåðåìåííàÿ ìîæåò ñîäåðæàòü òîëüêî öåëûå ÷èñëà, êàê ñî çíàêîì, òàê è áåç çíàêà.

Real

Âåùåñòâåííîå ÷èñëî

Ïåðåìåííàÿ ìîæåò ïðèíèìàòü â êà÷åñòâå çíà÷åíèÿ öåëûå è äðîáíûå ÷èñëà, ñî çíàêîì è áåç çíàêà.

String

Ñòðîêà

Ïåðåìåííàÿ ìîæåò õðàíèòü ëþáûå ñèìâîëû è íàáîðû ñèìâîëîâ. Â ïåðåìåííóþ String ìîæíî çàïèñàòü äî 2 Ãá ñèìâîëîâ.

Boolean

Ëîãè÷åñêèé òèï

Áóëåâà ïåðåìåííàÿ, ìîæåò áûòü ëèáî False (Ëîæü), ëèáî True (Èñòèíà).

Íà ñàìîì äåëå, òèïîâ ïåðåìåííûõ çíà÷èòåëüíî áîëüøå, è ïî ìåðå óñëîæíåíèÿ ïðîãðàìì ìû áóäåì èçó÷àòü ýòè òèïû.  òàáëèöå ïðåäñòàâëåíû òîëüêî îñíîâíûå òèïû.

Ñòðîêè

Ñ ýòèì òèïîì ïåðåìåííûõ ïðèõîäèòñÿ ðàáîòàòü äîâîëüíî ÷àñòî.  ïðèìåðå âûøå ìû óêàçûâàëè ñòðîêó 'Ýòî ñòðîêà', à â ïðîøëîé ëåêöèè èìåëè äåëî ñî ñòðîêîé 'Hello, world!'. Âû óæå çàìåòèëè, ÷òî âñå ñòðîêè äîëæíû áûòü çàêëþ÷åíû â îäèíàðíûå êàâû÷êè. Ðàçìåð ñòðîêè ïðàêòè÷åñêè íå îãðàíè÷åí. Âû ìîæåòå çàïèñàòü â ñòðîêó ëþáîé òåêñòîâûé ôàéë, âñå çàâèñèò îò òîãî, ñêîëüêî ìåñòà åñòü ó Âàñ íà äèñêå, è êàêîé îáúåì ÎÇÓ ó Âàñ óñòàíîâëåí.

Èçó÷àòü íîâîå óäîáíåé ñðàçó íà ïðàêòèêå, ïîýòîìó çàïóñêàéòå Delphi. Àâòîìàòè÷åñêè äîëæåí ñîçäàòüñÿ íîâûé ïðîåêò. Íàïèøåì ïðîñòåíüêóþ ïðîãðàììó, â êîòîðîé ïîðàáîòàåì ñî ñòðîêîé. Âñå êîìïîíåíòû, êîòîðûå íàì äëÿ ýòîãî ïîíàäîáÿòñÿ, íàõîäÿòñÿ íà âêëàäêå Standard Ïàëèòðû êîìïîíåíòîâ.

Ïîìåñòèòå íà ôîðìó, îäèí ïîä äðóãèì, ñëåäóþùèå êîìïîíåíòû:

Label, Edit è Button. Ñ Label è Button âû óæå çíàêîìû ïî ïðîøëîé ïðîãðàììå – Label ýòî ïðîñòàÿ íàäïèñü, à Button – êíîïêà íà ôîðìå. Êîìïîíåíò Edit ïðåäñòàâëÿåò ñîáîé ïîëå äëÿ ââîäà ïîëüçîâàòåëåì êàêîãî òî çíà÷åíèÿ, êàêîé òî ñòðîêè.

Ðàñòÿíèòå êîìïîíåíò Edit, ñäåëàâ åãî ïðèìåðíî âäâîå äëèííåé.

Âûäåëèòå êîìïîíåíò Label (îäíèì íàæàòèåì ìûøè!), è â åãî ñâîéñòâå Caption âìåñòî "Label1" âïèøèòå "Êàê òâîå èìÿ?".

Òåïåðü âûäåëèòå êîìïîíåíò Edit, è óäàëèòå "Edit1" èç ñâîéñòâà Text, îñòàâèâ òàì ïóñòîå ïîëå. Ñâîéñòâî Text ýòîãî êîìïîíåíòà ñîäåðæèò òîò òåêñò, êîòîðûé â äàííûé ìîìåíò íàõîäèòñÿ â ïîëå ââîäà. Âîîáùå, ñî ñâîéñòâàìè êîìïîíåíòà ìîæíî îáðàùàòüñÿ, êàê ñ ïåðåìåííûìè.  áîëüøèíñòâî ñâîéñòâ ìîæíî çàíîñèòü çíà÷åíèÿ íå òîëüêî â Èíñïåêòîðå îáúåêòîâ, â ìîìåíò ðàçðàáîòêè ôîðìû, íî è âî âðåìÿ âûïîëíåíèÿ ïðîãðàììû.

Âûäåëèòå êíîïêó, è â åå ñâîéñòâå Caption íàïèøèòå "Íàæìè ìåíÿ!". Äëÿ êðàñîòû, ïåðåìåñòèòå åå â öåíòð ôîðìû.

Èçìåíèòå ðàçìåð ôîðìû, ÷òîáû íà íåé íå áûëî ìíîãî ïóñòîãî ìåñòà. À òàêæå â ñâîéñòâå Caption ôîðìû íàïèøèòå "Ïðèâåòñòâèå". Íàïîìíèì, ÷òîáû âûäåëèòü ôîðìó, íóæíî îäèí ðàç ùåëêíóòü ìûøüþ ïî ëþáîìó ñâîáîäíîìó ìåñòó ôîðìû. Åñëè âû âñå ñäåëàëè ïðàâèëüíî, ó âàñ äîëæíà ïîëó÷èëñÿ òàêàÿ ôîðìà:

Âíåøíèé âèä ôîðìû



Ðèñ. 2.1.  Âíåøíèé âèä ôîðìû

Òåïåðü ñîçäàäèì îáðàáîò÷èê ñîáûòèÿ äëÿ êíîïêè. Äëÿ ýòîãî äâàæäû ùåëêíèòå ïî êíîïêå, êîòîðóþ âû ðàçìåñòèëè íà ôîðìå. Ñðàçó æå âû ïîïàäàåòå â Ðåäàêòîð êîäà, è êóðñîð ìèãàåò ìåæäó ñòðîêàìè begin è end. Begin – ýòî íà÷àëî ïðîöåäóðû, ïîñëå íåãî òî÷êà ñ çàïÿòîé íå ñòàâèòñÿ. End – êîíåö ïðîöåäóðû, ïîñëå ýòîãî îïåðàòîðà òî÷êà ñ çàïÿòîé îáÿçàòåëüíà. Åñëè âû ïðèñìîòðèòåñü, òî â ïîñëåäíåé ñòðîêå ðåäàêòîðà êîäà óâèäèòå end ñ òî÷êîé – ýòî êîíåö ïðîãðàììû. Ïåðåìåííûå óêàçûâàþòñÿ (îïèñûâàþòñÿ) ïåðåä íà÷àëîì ïðîöåäóðû. Ñëåäîâàòåëüíî, ñòðîêó begin íóæíî áóäåò îïóñòèòü, à ïåðåä íåé âïèñàòü ðàçäåë ïåðåìåííûõ var, è óêàçàòü ïåðåìåííóþ s. Ïðîöåäóðà äîëæíà âûãëÿäåòü òàê:

procedure TForm1.Button1Click(Sender: TObject);

var

  s: String;

begin

  s:= 'Ïðèâåò, ' + Edit1.Text + '!';

  ShowMessage(s);

end;

Îáðàòèòå âíèìàíèå, ÷òî êîãäà âû ïîñòàâèòå òî÷êó ïîñëå íàçâàíèÿ êîìïîíåíòà Edit1, âûéäåò ñïèñîê äîñòóïíûõ ñâîéñòâ, ìåòîäîâ è ñîáûòèé. Êîãäà ìû âïèøåì ïåðâóþ áóêâó "T", ñïèñîê ñîðòèðóåòñÿ – â íåì îñòàíóòñÿ òîëüêî êîìàíäû íà áóêâó "T", ïðè÷åì Delphi îöåíèâàåò êîíòåêñò, è îñòàâëÿåò â ñïèñêå òîëüêî òå êîìàíäû, êîòîðûå â ýòîì êîíòåêñòå ìîãóò áûòü èñïîëüçîâàíû.  íàøåì ñëó÷àå, ýòî ñòðîêà. Ñâîéñòâî Text, êîòîðîå îñòàíåòñÿ â ñïèñêå, ìîæåò áûòü èñïîëüçîâàíî â êà÷åñòâå ñòðîêè:

Âûáîð ñâîéñòâà èç ñïèñêà – ïîäñêàçêè



óâåëè÷èòü èçîáðàæåíèå

Ðèñ. 2.2.  Âûáîð ñâîéñòâà èç ñïèñêà – ïîäñêàçêè

Òåïåðü íåò íóæäû ââîäèòü "Text" ñàìèì – ýòî ñâîéñòâî âûäåëåíî â ñïèñêå, è íàì äîñòàòî÷íî íàæàòü <Enter>, ÷òîáû âñòàâèòü åãî â êîä. Íà áóäóùåå çàïîìíèòå: âñåãäà, êîãäà âû ñòàâèòå òî÷êó ïîñëå íàçâàíèÿ êîìïîíåíòà, äîæäèòåñü òàêîãî ñïèñêà. Äåëî íå òîëüêî â òîì, ÷òî òàê ëåã÷å ââîäèòü êîä. Åñëè ñïèñîê òàê è íå ïîÿâèëñÿ, çíà÷èò âû äîïóñòèëè îøèáêó. Âîçìîæíî, â íàçâàíèè êîìïîíåíòà, èëè äàæå â ïðåäûäóùåé ñòðîêå.

Òåïåðü ñîõðàíèòå ïðîåêò â îòäåëüíóþ ïàïêó, ìîäóëü, êàê îáû÷íî, íàçîâèòå Main, à ïðîåêò ìîæåòå íàçâàòü, íàïðèìåð, Privet. Ïîñëå ñîõðàíåíèÿ ñêîìïèëèðóéòå åãî è ïîñìîòðèòå, êàêîå ñîîáùåíèå áóäåò âûõîäèòü ïðè ðàçëè÷íûõ ñòðîêàõ, êîòîðûå ââåäåò ïîëüçîâàòåëü â ïîëå ââîäà Edit1.

Ñïðàâåäëèâîñòè ðàäè ñòîèò çàìåòèòü, ÷òî â äàííîì ïðèìåðå âîâñå íåîáÿçàòåëüíî áûëî èñïîëüçîâàòü ïåðåìåííóþ – ìû ýòî ñäåëàëè ëèøü â ó÷åáíûõ öåëÿõ. Òàêîãî æå ýôôåêòà ìîæíî áûëî äîáèòüñÿ, åñëè èñïîëüçîâàòü âûðàæåíèå

'Ïðèâåò, ' + Edit1.Text + '!'

ïðÿìî â êîìàíäå ShowMessage:

procedure TForm1.Button1Click(Sender: TObject);

begin

  ShowMessage('Ïðèâåò, ' + Edit1.Text + '!');

end;

Ñòèëü

Åñëè âû íàäóìàåòå ïîéòè óñòðàèâàòüñÿ íà ðàáîòó ïðîãðàììèñòîì, ïåðâûì äåëîì âàñ ïîïðîñÿò ïîêàçàòü âàøè èñõîäíûå êîäû. È äåëî òóò âîâñå íå â òîì, ÷òî êòî-òî õî÷åò óêðàñòü âàøó ïðîãðàììó, ÷òîáû ïîòîì âûäàòü åå çà ñâîþ. Ïîíèìàþùèå ëþäè â ïåðâóþ î÷åðåäü ñìîòðÿò íà ñòèëü îôîðìëåíèÿ êîäà. Äàâàéòå ðàññìîòðèì ïðåäûäóùèé ïðèìåð:

procedure TForm1.Button1Click(Sender: TObject);

var s: String; begin s:= 'Ïðèâåò, ' + Edit1.Text + '!';  ShowMessage(s); end;

Òàêîé êîä âïîëíå ðàáîòîñïîñîáåí, îäíàêî âûãëÿäèò îí íå î÷åíü "÷èòàáåëüíî", â íåì ëåãêî çàïóòàòüñÿ. Ïîñìîòðèòå òàêîé ïðèìåð:

procedure TForm1.Button1Click(Sender: TObject);

var

s: String;

begin

s:= 'Ïðèâåò, ' + Edit1.Text + '!';

ShowMessage(s);

end;

Óæå ëó÷øå, íå ïðàâäà ëè? Êàæäàÿ êîìàíäà ðàñïîëàãàåòñÿ íà ñâîåé ñîáñòâåííîé ñòðîêå, ÷èòàåìîñòü êîäà ñòàëà íàìíîãî ëåã÷å. Îäíàêî â òàêîì êîäå ñðàçó ñëîæíî ðàçîáðàòüñÿ, ãäå çàêàí÷èâàåòñÿ îäèí ðàçäåë è íà÷èíàåòñÿ äðóãîé. Êëàññè÷åñêèé ñòèëü òðåáóåò, ÷òîáû âëîæåííûå êîìàíäû âûäåëÿëèñü íåñêîëüêèìè ïðîáåëàìè, ñäâèãàëèñü âïðàâî:

procedure TForm1.Button1Click(Sender: TObject);

var

   s: String;

begin

   s:= 'Ïðèâåò, ' + Edit1.Text + '!';

   ShowMessage(s);

end;

Òàêîé êîä ÷èòàòü åùå ëåã÷å. Ñòàðàéòåñü ñðàçó ïðèâûêàòü ê òàêîìó ñòèëþ, ÷òîáû íå òîëüêî äðóãèì áûëî ëåãêî ÷èòàòü âàø êîä, íî è âû ñàìè íå çàïóòàëèñü â íåì. Ïîçäíåå ìû åùå âåðíåìñÿ ê ñòèëÿì ïðîãðàììèðîâàíèÿ.

Êîììåíòàðèè

Êîììåíòàðèé – ýòî òåêñò, êîòîðûé ïðîãðàììèñò â êà÷åñòâå ïîäñêàçêè âïèñûâàåò äëÿ ñåáÿ. Êîìïüþòåð òàêîé òåêñò èãíîðèðóåò, îí íóæåí òîëüêî äëÿ âàñ. Ïðè êîìïèëÿöèè âñå êîììåíòàðèè ïðîñòî âûðåçàþòñÿ.  õîðîøåì êîäå êîììåíòàðèåâ äîëæíî áûòü íå ìåíåå òðåòè îò âñåãî ðàçìåðà êîäà. Êîãäà Âû áóäåòå äåëàòü áîëüøèå ïðîåêòû, áåç êîììåíòàðèåâ íå îáîéòèñü. Óæå ÷åðåç ìåñÿö, îòêðûâ èñõîäíûé êîä áîëüøîé ïðîãðàììû, áóäåò î÷åíü ñëîæíî âñïîìíèòü, ÷òî òóò ê ÷åìó, è êàê ðàáîòàåò, ïîýòîìó íå ñêóïèòåñü íà êîììåíòàðèè!

Êîììåíòàðèè áûâàþò ìíîãîñòðî÷íûå è îäíîñòðî÷íûå. Ìíîãîñòðî÷íûé êîììåíòàðèé çàêëþ÷àåòñÿ â ôèãóðíûå ñêîáêè, è â ýòèõ ñòðîêàõ íå äîëæíî áûòü äåéñòâóþùèõ îïåðàòîðîâ. Ïðèìåð:

{Ýòî ìíîãîñòðî÷íûé

   êîììåíòàðèé!}

Êàê âèäèòå, êàâû÷êè ïîñëå çàêðûâàþùåé ñêîáêè ñòàâèòü íå íóæíî.

Îäíîñòðî÷íûé êîììåíòàðèé ñòàâèòñÿ ïîñëå ñèìâîëîâ "//", òî åñòü äâóõ ñëýøåé. Ýòîò êîììåíòàðèé ìîæåò íàõîäèòüñÿ êàê íà îòäåëüíîé ñòðîêå, òàê è ïîñëå (íî íå äî!) îïåðàòîðà. Ïðèìåðû:

//êîììåíòàðèé íà îòäåëüíîé ñòðîêå

a := "Äåéñòâóþùèé îïåðàòîð";  //êîììåíòàðèé ïîñëå îïåðàòîðà

Íå ñêóïèòåñü íà êîììåíòàðèè, îáÿçàòåëüíî óêàçûâàéòå, êàêóþ ïåðåìåííóþ è äëÿ ÷åãî âû ñîçäàâàëè, ÷òî äåëàåò òîò èëè èíîé áëîê êîäà. Ãîâîðÿò, â êîðïîðàöèè Microsoft óâîëüíÿþò ïðîãðàììèñòîâ, åñëè êîììåíòàðèè â èõ ïðîãðàììàõ ñîñòàâëÿþò ìåíåå òðåòè îáùåãî êîäà!

Ñîáñòâåííûé Áëîêíîò

Êàæäûé ïîëüçîâàòåëü, ðàáîòàþùèé ñ Windows, õîòü ðàç äà èñïîëüçîâàë ïðîñòîé òåêñòîâûé ðåäàêòîð Áëîêíîò. Ñåé÷àñ ìû ñîçäàäèì íåìíîãî óïðîùåííóþ âåðñèþ Áëîêíîòà, êîòîðàÿ ïîçâîëÿåò ââîäèòü òåêñò, ñîõðàíÿòü åãî íà äèñê, è çàãðóæàòü ñ äèñêà. Äëÿ ýòîãî íàì òðåáóåòñÿ ñîçäàòü íîâûé ïðîåêò. Åñëè â äàííûé ìîìåíò ó âàñ óæå îòêðûò êàêîé ëèáî ïðîåêò, âûáåðèòå êîìàíäó ìåíþ "File – Close All (ÔàéëÇàêðûòü âñ¸)", çàòåì "File – New – Application (ÔàéëÍîâîåÏðèëîæåíèå)".

Ó íàñ åñòü íîâàÿ ôîðìà, è ïîêà áîëüøå íè÷åãî íåò. Ñðàçó èçìåíèì íåêîòîðûå ñâîéñòâà ôîðìû.  ñâîéñòâå Caption âïèøèòå "Ìîé áëîêíîò" (åñòåñòâåííî, áåç êàâû÷åê). Ñâîéñòâî Name èçìåíèì íà "fMain".

Ñîâåò: ÷òîáû ëåã÷å îðèåíòèðîâàòüñÿ â íàçâàíèÿõ ìîäóëåé (ôàéëîâ ñ êîäîì) è ôîðì, ëó÷øå ñðàçó âûðàáîòàòü ïðàâèëà:

1.     Ïåðåä íàçâàíèåì ôîðìû áóäåì óêàçûâàòü ìàëåíüêóþ áóêâó f, ÷òîáû ïîêàçàòü, ÷òî ýòî èìåííî ôîðìà.

2.     Èìåíà ôîðì áóäåì ïîäáèðàòü èíôîðìàòèâíûå, ÷òîáû áûëî ïîíÿòíî, ñ êàêîé ôîðìîé ìû èìååì äåëî.

3.     Ìîäóëè ôîðì áóäåì íàçûâàòü òàêæå, íî áåç áóêâû f.

4.     Ãëàâíóþ ôîðìó âñåãäà áóäåì íàçûâàòü fMain, à ìîäóëü, ñîîòâåòñòâåííî, Main.

Ýòè ðåêîìåíäàöèè íå ÿâëÿþòñÿ îáÿçàòåëüíûìè, íî â äàëüíåéøåì, êîãäà ïîéäóò ïðîåêòû ñ ìíîæåñòâîì ôîðì, îíè ïîìîãóò âàì îðèåíòèðîâàòüñÿ â íàçâàíèÿõ. Ìîæåòå âûðàáîòàòü ñîáñòâåííûå ïðàâèëà.

Ñîõðàíèì ïðîåêò â îòäåëüíóþ ïàïêó. Ìîäóëü íàçûâàåì Main, à ïðîåêòó äàåì èìÿ MyNotebook.

Òåïåðü ïîçíàêîìèìñÿ ñ íîâûì, ìîùíûì êîìïîíåíòîì Memo, êîòîðûé íàõîäèòñÿ íà âêëàäêå Standard è ïðåäíàçíà÷åí äëÿ ââîäà ïîëüçîâàòåëåì ìíîãîñòðî÷íîãî òåêñòà.

Óñòàíîâèòå ýòîò êîìïîíåíò íà ôîðìó, â âåðõíþþ ëåâóþ ÷àñòü ôîðìû, è ðàñòÿíèòå åãî ïî ôîðìå, îñòàâèâ âíèçó íåìíîãî ìåñòà. Âíèç óñòàíîâèòå, îäíó ðÿäîì ñ äðóãîé, òðè êíîïêè Button. Ó âàñ äîëæíî ïîëó÷èòñÿ ÷òî òî âðîäå ýòîãî:

Çàãîòîâêà ðåäàêòîðà òåêñòîâ



óâåëè÷èòü èçîáðàæåíèå

Ðèñ. 2.3.  Çàãîòîâêà ðåäàêòîðà òåêñòîâ

Òåïåðü âûäåëèì ïåðâóþ êíîïêó, è â ñâîéñòâå Caption ýòîé êíîïêè íàïèøåì "Ñîõðàíèòü". Íà âòîðîé êíîïêå íàïèøåì "Çàãðóçèòü", íà òðåòüåé – "Î÷èñòèòü".

Âûäåëèì êîìïîíåíò Memo, êîòîðûé ïðåäñòàâëÿåò ñîáîé áîëüøîå áåëîå ïîëå. Ó êîìïîíåíòà åñòü îäíî èíòåðåñíîå ñâîéñòâî Lines, êîòîðîå ñîäåðæèò ñòðîêè òåêñòà, íàáðàííîãî â êîìïîíåíòå. Ïîäðîáíåé ñ ýòèì ñâîéñòâîì ìû ïîçíàêîìèìñÿ ïîçæå, à ïîêà âûäåëèì åãî â Èíñïåêòîðå îáúåêòîâ, íàæìåì íà êíîïêó ñ òðåìÿ òî÷êàìè ñïðàâà îò ñâîéñòâà è òåì ñàìûì îòêðîåì ðåäàêòîð òåêñòà. Çäåñü ìîæíî íàáðàòü òåêñò, êîòîðûé áóäåò âûâåäåí â êîìïîíåíò "ïî óìîë÷àíèþ", ïðè êàæäîé çàãðóçêå ïðîãðàììû. Íàì êàê ðàç íóæíî, ÷òîáû òåêñòà íèêàêîãî íå áûëî, ïîýòîìó óäàëèòå âñå ñòðîêè, êàêèå òàì åñòü è íàæìèòå "ÎÊ". Êîìïîíåíò Memo î÷èñòèëñÿ.

Ýòî åùå íå âñå. Íàì íóæíî, ÷òîáû ïðè ââîäå òåêñò àâòîìàòè÷åñêè ïåðåíîñèëñÿ íà äðóãóþ ñòðîêó, à ïîëüçîâàòåëü èìåë âîçìîæíîñòü åãî ïðîëèñòûâàòü. Íàéäèòå ñâîéñòâî ScrollBars (êîìïîíåíò Memo äîëæåí áûòü âûäåëåííûì), ýòî ñâîéñòâî îòâå÷àåò çà íàëè÷èå ïîëîñ ïðîêðóòêè. Âûáåðèòå çíà÷åíèå ssVertical, ÷òîáû ïîÿâèëàñü âåðòèêàëüíàÿ ïîëîñà ïðîêðóòêè.

Ñ èíòåðôåéñîì ïîêîí÷åíî, îñòàëîñü âïèñàòü êîä, êîòîðûé áóäåò âûïîëíÿòüñÿ ïðîãðàììîé. Äâàæäû íàæìåì íà ïåðâóþ êíîïêó, ñîçäàäèì îáðàáîò÷èê ñîáûòèÿ äëÿ êíîïêè "Ñîõðàíèòü".  ìåñòå, ãäå ìèãàåò êóðñîð, âïèøåì òîëüêî îäíó ñòðîêó:

Memo1.Lines.SaveToFile('MyFile.txt');

Ìåòîä SaveToFile() ñâîéñòâà Lines êîìïîíåíòà Memo ñîõðàíÿåò âåñü òåêñò â óêàçàííûé ôàéë. Åñëè âû íå óêàçûâàåòå ïóòü ê ôàéëó, ïî óìîë÷àíèþ ôàéë áóäåò ñîçäàí òàì, îòêóäà áûëà çàïóùåíà ïðîãðàììà.

Äëÿ âòîðîé êíîïêè íàïèøåì äâå ñòðîêè:

  if FileExists('MyFile.txt') then

    Memo1.Lines.LoadFromFile('MyFile.txt');

Ðàçáåðåì ýòè ñòðîêè. ×òî, åñëè ïîëüçîâàòåëü íàæìåò ýòó êíîïêó äî òîãî, êàê ÷òî-íèáóäü ñîõðàíèò â ôàéë? Ôàéëà òî åùå íåò! Ïåðâàÿ ñòðîêà êàê ðàç âûïîëíÿåò ïðîâåðêó íà ñóùåñòâîâàíèå ôàéëà. Åñëè ôàéëà íåò, òî âòîðàÿ ñòðîêà âûïîëíÿòüñÿ íå áóäåò. Åñëè îí åñòü, òîãäà âòîðàÿ ñòðîêà ñ÷èòàåò òåêñò èç ýòîãî ôàéëà â êîìïîíåíò Memo. Ñ óñëîâíûìè îïåðàòîðàìè ìû áóäåì çíàêîìèòüñÿ ïîçæå, òîãäà ñìûñë ïåðâîé ñòðîêè áóäåò ïîíÿòíåé.

Äëÿ òðåòüåé êíîïêè êîä åùå ïðîùå:

Memo1.Clear;

Ýòà êîìàíäà î÷èùàåò êîìïîíåíò Memo îò òåêñòà. Âîò, ñîáñòâåííî, è âñÿ ïðîãðàììà. Ñîõðàíèòå åå è ñêîìïèëèðóéòå, ïðîâåðüòå, êàê îíà ðàáîòàåò. Îöåíèòå ëåãêîñòü ïðîãðàììèðîâàíèÿ – äëÿ ñîçäàíèÿ ïîëíîöåííîãî ðåäàêòîðà òåêñòîâ ìû íàïèñàëè âñåãî 4 ñòðîêè êîäà!

Ïîýêñïåðèìåíòèðóéòå ñî ñâîéñòâîì Font (Øðèôò) êîìïîíåíòà Memo, ïîñìîòðèòå, êàêèì îáðàçîì áóäåò èçìåíÿòüñÿ øðèôò òåêñòà.