Анатомия на проект
Целта на лекцията
Запознаване с настройките на Lazarus IDE, със състава на проекта, изучаване на новите TLabel и TEdit компоненти.
Персонализиране >За да улесним работата сLazarus, нека направим някои промени в неговата IDE. ИзтеглетеLazarus. По подразбиране опцията за зареждане на последния проект е активирана, така че трябва да сте заредили проекта от първия урок. Това е много удобно, ако работите върху някакъв голям проект, чиято разработка отнема повече от един ден. Това обаче ще бъде неудобно, когато изучавамеLazarus- в крайна сметка ще правим много малки програми, които изпълняват различни задачи, и за това ще трябва първо да затворим стария проект и след това да създадем нов. И това е неудобно.
Изберете "Инструменти -> Опции" от главното меню, за да отворите прозореца "Опции на IDE". Имаме нужда от секцията „Файлове“, която се намира в клона „Среда“:
В този раздел има квадратче за отметка „Отваряне на последния проект при стартиране“. Ако това поле за отметка е активирано, тогава последният проект ще се отваря при всяко стартиране. Ако е изключен, ще бъде създаден нов проект, което е това, от което се нуждаем. Изключете го, натиснете бутона "OK", затворетеLazarusи го стартирайте отново. Е, това е съвсем друг въпрос, създаден е нов проект. Без да променяте нищо в проекта, просто го запазете в папка
(помните ли нашата конвенция за именуване на папки на проекти?). Натиснете бутона "Изпълни" наЛентата с инструменти(зелена стрелка вдясно), така че проектът да бъде компилиран и получената програма веднага да бъде заредена в паметта. Ще се появи прост прозорец на нашата програма, защото в него няма нищо друго освен форма. Затворете получената програма, оставяйкиLazarusс отворен проект.
След това отворете папката на проекта скато използватеExplorerWindows или вашия обичаен файлов мениджър ( Total Commander, Far и т.н.). ВExplorerзадайте типа дисплей на "Таблица". Ще видите нещо като тази снимка:
Нашата програма се наричаproject1.exe, в колоната "Тип" е "Приложение". Но в колоната "Размер" са посочени 14 474 байта (може да е малко по-различно за вас, не е страшно). Еха! Програма с празен прозорец, която не прави нищо, тежи повече от 14 мегабайта. Как може това?!
Факт е, че при компилиранеLazarusпо подразбиране добавя всякакъв вид информация за отстраняване на грешки към програмата, в резултат на което се получава такъв голям размер. Това е полезно, когато дебъгвате програма (ще говорим за дебъгване и тестване на програми в друга лекция), но в нашия случай е излишно. За съжаление можете да деактивирате тази функция само за текущия проект. Това става по следния начин: изберете командатаГлавно меню"Проект -> Настройки на проекта":
В секцията "Свързване" премахнете отметката от "Генериране на информация за отстраняване на грешки за GDB", щракнете върху "OK" и рестартирайте програмата. След като програмата стартира, затворете я и погледнете отново получения размер. Е, сега редът, размерът е малко повече от един и половина мегабайта. Това също е много, ако го погледнете, но е доста поносимо, като се имат предвид стандартните модули, свързани с проекта с поддръжка на различни платформи. В бъдеще можете или да пренебрегнете размера на програмите за обучение - махнете отметката от това квадратче (след отстраняване на грешки, ако е необходимо) само за вашите завършени реални проекти, или махнете отметката във всеки нов проект. От теб зависи. И ако искате да получите много малък размер на програмата, тогава можетедопълнително използвайте някакъв софтуерен пакет. ASPack, например, ви позволява да компресирате*.exeи*.dllфайлове до 80%! Такъв пакет, между другото, не само компресира, но и криптира вашата програма, създавайки допълнителна защита за нея. Вярно, това няма да спре един силен хакер, но ще му добави допълнително главоболие.
Също така в настройките можете да промените размера на клетките в мрежата от точки, която се показва вРедактора на формуляри. Тази мрежа е необходима, за да може програмистът да подравни компонентите на формуляра един спрямо друг. Изберете командата отГлавно меню"Инструменти -> Опции" и в секцията "Среда" изберете "Редактор на формуляри". В горната дясна част има раздел "Мрежа", където можете да промените размера му (по подразбиране е зададен на 8 пиксела за оста X и за оста Y), да активирате или деактивирате показването на мрежата и т.н. Някои програмисти предпочитат да направят клетките на мрежата по-малки - 6 или дори 4 пиксела по двете оси, като твърдят, че колкото по-често е мрежата, толкова по-точно можете да изрежете компонентите. Може и да са прави, но имайте предвид, че разработчиците наLazarusзадават най-удобните параметри по подразбиране. Като цяло и тук задайте настройките по ваш вкус или ги оставете по подразбиране.
В какво се състои проектът
Продължаваме да повтаряме думата "Проект". В първата лекция казахме, чепроектъте набор от свързани файлове от различни типове, от които след компилация в крайна сметка се получавапрограма.
От какви файлове се състои проектът?
Изберете командатаГлавно меню"Инструменти -> Опции" и в клона "Среда" отидете на секцията "Файлови филтри". Ще видите 6 основни типа файлове, които могат да бъдат намерени в проект:
- Модул Lazarus (*.pas;*.pp)
- Проект Lazarus (*.lpi)
- Lazarus или Delphi форма (*.lfm;*.dfm)
- Пакет Lazarus (*.lpk)
- Изходният код на проекта Lazarus (*.lpr)
- Друг файл на Lazarus (*.inc;*.lrs;*.lpl)
Ако отидем в папката с нашия проект, ще видим, че той се състои от осем файла:
- project1.exe(изпълним файл на програмата).
- project1.ico(Файлът с "иконата" на проекта - изображение под формата на лапа на гепард, което се появява в горния ляв ъгъл на прозореца на програмата).
- project1.lpi(файл с информация за проекта). Ако искате да отворите този проект вLazarus, тогава трябва да стартирате този информационен файл.
- project1.lpr(Изходен файл на проекта). Изпълнението на този файл също ще стартираLazarusи ще зареди този проект.
- project1.lps(Конфигурация на проекта като xml код)
- project1.res(Файл с ресурси, използван в проекта)
- unit1.lfm(Файл с формуляр на модул. Той показва настройките на всички компоненти, използвани в модула, в текстова форма. Силно не се препоръчва да редактирате този файл ръчно, трябва да използвате редактора на формуляри, за да редактирате тези данни).
- unit1.pas(изходен код на единица в Object Pascal).
Файловете с имеproject1са файловете на целия проект, файловете с имеunit1са файловете на модула.
Модул> -е отделна единица изходен код, изпълнявана като файл с разширение *.pas. Съвкупността от такива единици съставлява програмата.
Когато създаваме прозорец, за него се създават два файла: модул - файл*.pasс изходния код и файл*.lfm, вкойто съдържа настройките за компонентите, използвани във формуляра. Можем да видим текста на модула вРедактора на код. Модулът обаче не винаги има прозорец, той може да бъде просто текстов файл с изходния код. За модулите и техните раздели ще говорим по-подробно в някоя от следващите лекции. В нашия проект има само един модул, но като цяло могат да бъдат колкото искате. И всеки модул ще бъде представен от тази двойка файлове.
Освен това папката на проекта съдържа папкатаlib, която съдържа данни, свързани с проекта, и информация за компилация. Ако сте променили проекта и сте запазили тези промени, папкатаbackupсъщо ще се появи, в която ще се съхраняват резервни копия на старите версии на проекта.
Често програмистът добавя свои собствени типове файлове към проекта. Например, даден проект може да използва база данни, някакъв текстов файл илиini-файлза съхраняване на потребителски настройки. Разумно е да поставите тези файлове и в папката на проекта.
Сега няколко съвета относно името на проекта и модулите. Проектът трябва да се нарича така, както искаме да се нарича нашата програма. Например, проектът от първия урок би било по-подходящо да се наименува "Здравей" вместо неутралното "project1".
Модулите трябва да бъдат именувани според тяхното значение. В проекта винаги имаглавен модул. Досега проектите ни бяха с по един прозорец. Модулът, създаден за този прозорец, ще бъде основният. В образователната литература има много препоръки как да се обозначават модули, нека се съсредоточим върху един от тях. Нека в бъдеще се съгласим да наричаме основния модулMain(англ.main- основен), а на другите модули да даваме семантични имена, напримерOptions,Editorи т.н. Формата на този модул (по-точно, свойството Name на формата) ще бъде извиканасъщо, но с префиксf-, обозначаващ формата. Тоест fMain, fOptions, fEditor и т.н. Нека приложим този материал на практика.
ОтворетеLazarus, ако сте го затворили, или затворете стария проект и започнете нов. В момента вForm Editorимаме празен формуляр сForm1в заглавието, което е името на формата по подразбиране. Съгласихме се да именуваме основния модулMainи да добавим префиксаf-към неговата форма. ВObject Inspectorнамерете свойството Name и заменетеForm1с fMain. Веднага щом щракнете, заглавието на формуляра ще се промени на новото. Сега нека запазим проекта и основния модул на формуляра. Щракнете върху бутона "Запазване на всички" отЛентата с инструментиили изберете командата отГлавното меню"Файл -> Запазване на всички".
В заявката, вместо името на проектаproject1, посочете новото имеHello, не забравяйте, че се съгласихме проектите да се записват в папки, наречени с номера на лекцията и номера на проекта в нея. В нашия пример това ще бъде
Веднага след като щракнете върху бутона "Запазване", ще бъдете подканени да запишете основния модул. Нарекохме форматаfMain, което означава, че просто ще назовем модулаMain. ВLazarusняма разлика между малки и главни букви, но за четимост на кода е по-добре да се научите да използвате главни букви, за да подчертавате имената. НапримерFileEdit,SaveAllи др.
В свойството Caption на формата въведете думата "Greeting" (разбира се, без кавички), това ще бъде по-разбираемо заглавие на прозореца. Не забравяйте да натиснете, след като въведете нови стойности на свойства вObject Inspector, за да влязат промените в сила. Сега нека инсталираме компонента TLabel (етикет) във формуляра, който ще ви позволи да показвате текст във формуляра. Компонентът се намирав разделаСтандартен:
Кликнете върху етикета, след това върху формуляра в горната част на прозореца. Тъй като имаме един етикет, можем да му оставим име (свойство Name) по подразбиране - Label1. Но в свойството Caption на етикета напишете:
Под етикета поставете TEdit компонент - редактируемо текстово поле, в което потребителят може да напише нещо:
Също така ще оставим свойството Name на този компонент по подразбиране - Edit1. Както можете да видите, този компонент няма свойство Caption, но се появи свойство Text - това е мястото, където се съдържа текстът, показан в полето. По подразбиране съвпада с името на компонента. Нека просто изчистим това свойство, като премахнем стария текст от него (не забравяйте ).
Нека поставим бутонаTButtonоще по-ниско. Нека оставим името му по подразбиране, а в свойството Caption ще пишем
Променете позицията и размера на компонентите и самия формуляр, така че формулярът да изглежда по следния начин:
Сега нека програмираме натискането на бутона. Щракнете два пъти върху него, за да генерирате събитие и автоматично да отворитеРедактора на код. На мястото, където курсорът мига, въведете следния код:
Редакторът на код трябва да изглежда така:
Запазете проекта и го стартирайте. Когато програмата се зареди, въведете вашето име в прозорецаEdit1и щракнете върху бутона "Run". Трябва да получите нещо подобно:
Можете да промените името в текстовото поле колкото пъти желаете и да натиснете отново бутона "Изпълни", като получите поздрав с различен текст. Имаме истинскаинтерактивнапрограма, тоест програма, която взаимодейства с потребителя.
В следващите лекции няма да се спираме толкова подробно на това как да запазим проект или модул.къс
Запазете проекта като ...
Как и къде да запазите проекта, вече трябва да знаете.