Òåìà 5: Ñîçäàíèå ïåðâîãî
ïðèëîæåíèÿ
Òðàäèöèîííî ïðè èçó÷åíèè ïðîãðàììèðîâàíèÿ
ïðèíÿòî ñîçäàâàòü ïåðâóþ ïðîãðàììó, êîòîðàÿ âûâîäèò òåêñò "Hello,
world!". Íå áóäåì îòñòóïàòü îò òðàäèöèè è ñîçäàäèì ïðîãðàììó, êîòîðàÿ
âûâîäèò ýòîò òåêñò òðåìÿ ðàçíûìè ñïîñîáàìè. Íî âíà÷àëå ïîçíàêîìèìñÿ ñ ñàìîé
ñðåäîé ïðîãðàììèðîâàíèÿ Delphi. Ïðåäïîëàãàåòñÿ, ÷òî íà ýòîò ìîìåíò 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>, ëèáî íàæèìàåì îäíîèìåííóþ êíîïêó íà ïàíåëè èíñòðóìåíòîâ
Ðèñ. 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 ïåðå÷èñëåíû îñíîâíûå
òèïû ïåðåìåííûõ:
Íàçâàíèå òèïà |
Îïèñàíèå |
Ïîÿñíåíèÿ |
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, ïîñìîòðèòå, êàêèì
îáðàçîì áóäåò èçìåíÿòüñÿ øðèôò òåêñòà.