Sign in Join
Wiki copytemporary

Lazarus Tutorial/fi: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11*Tästä alkaa Lazarus Tutorial. Voit vapaasti parantaa sitä.*
22
33## Yleistä
44
55Lazarus on vapaa avoimeen lähdekoodiin perustuva ohjelmankehitysympäristö joka pohjautuu [[FPC/fi|FreePascal Compiler]] (object pascal), Joka on myös vapaa ja avointa lähdekoodia. Lazaruksen [[IDE/fi|käyttöliittymä]] ([[Screenshots|kuvakaappauksia]]) on vakaa ja ominaisuuksiltaan monipuolinen ohjelman kehitysympäristö jolla voi tehdä itsenäisiä [[Graphical User Interface/fi|graafisia]] ja [[Command-line interface/fi|komentorivillä]] toimivia sovelluksia. Se toimii Linux:ssa, [[FreeBSD]]:ssä, Win32:ssa, Mac:ssa ja on varustettu customoitavalla lähdekoodieditorilla ja visuaalisella lomakkeen muotoilulla jossa mukana komponenttipakettienhallinta, [[Debugger/fi|virheenjäljitin]] ja täydelliset graafiset käyttöliittymäkomponentit integroituna FreePascal [[Compiler/fi|kääntäjään]].
66
77## Aloittaminen
88
99Hanki, [[Installing Lazarus|asenna]] ja käynnistä Lazarus jossa pitää olla Free Pascal Compiler mukana.
1010
1111> **Note:** Ainakin Linux Ubuntussa, Lazaruksen käynnistyskomento on konsolissa (päätteessä) "startlazarus". Jos olet asentanut Lazaruksen Debianin pakettina, niin Lazarus pitäisi olla valikkokohdan Sovellus / ohjelmointi alla. (Huomaa: Debian ja Ubuntu tärkeimmät binary ja paketti on nimeltään "Lazarus-ide", koska on myös "TCT" paketti jossa mukana tulee apuohjelma nimeltä "Lazarus").
1212
1313### Ensimmäinen Lazarus ohjelma!
1414
1515Päävalikosta valitsemalla Projekti-Uusi projekti-Sovellus (tai: Tiedosto-Uusi-projekti-Sovellus) niin uusi graafinen sovellus luodaan, katso myös [[Form Tutorial|Form opetusohjelma]] .
1616
1717Useita ikkunoita ilmestyy työpöydälle: Päävalikkoikkuna yläreunassa, Komponenttimuokkain on vasemmalla, "Lähdekoodieditori" täyttää työpöydän ja valmis lomake "Form1" on omassa ikkunassa ([[TForm/fi|Form1]] ) Lähdekoodieditorin päällä.
1818
1919Jos halutaan sijoittaa painike lomakkeelle: Päävalikkoikkunan alaosassa on välilehtirivi. Jos "[[Standard tab/fi|Standard]]" välilehti ei ole jo valittu, valitse se klikkaamalla hiirellä. Sen jälkeen etsii [[TButton/fi|Button]] kuvakkeen (![](/wiki-images/b/b2/Tbutton.png) eli suorakulmio jossa on "OK"-teksti) ja klikkaa sitä hiirellä. Sitten Form1 ikkunassa klikataan jonnekin keskilinjan vasemmalla puolen. Varjostettu "Button1"-tekstillä merkitty suorakulmio ilmestyy siihen. Klikkaa jälleen Button kuvaketta Standard -välilehdellä ja klikkaa Form1-ikkunassa jonnekin oikealle keskelle: toinen "Button2"-tekstillä merkitty suorakulmio ilmestyy.
2020
2121Nyt klikkaa Button1 jotta se valitaan. Komponenttimuokkainikkuna näyttää nyt kohteen Button1-ominaisuudet. Yläosassa on ominaisuus nimeltä 'Caption', jossa näytetään arvo "Button1". Klikkaa kyseistä kohtaa (ruudukkoa) ja muuta teksti "Button1" muotoon "Press". Jos painat `ENTER` tai klikkaat toista ruutua näet että Form1-lomakkella ensimmäisen painikkeen teksti muuttuu "Press":ksi. Nyt klikkaat Tapahtumat -välilehteä komponenttimuokkaimessa niin näet erilaisia tapahtumia, jotka voivat liittyä tähän Button1-painikkeeseen. Näitä ovat onClick, OnEnter, OnExit jne. Valitse onClick oikealla puolella oleva ruutu. Tällöin siihen ilmestyy pienempi laatikko kolmella pisteellä (...). Kun klikkaat tätä, se otetaan automaattisesti osaksi lähdekoodieditorissa ja kursorin sijoitetaan koodinpätkän keskelle:
2222
2323``` pascal
2424procedure TForm1.Button1Click(Sender: TObject);
2525begin
2626 {Kirjoita tai kopio&liitä tämä puuttuva osa:}
2727 Button1.caption := 'Press again';
2828 {Lähdekoodieditori on jo täydentänyt aliohjelman lopun}
2929end;
3030```
3131
3232Painamalla `F12` nähdään lähdekoodieditorin sijasta lomakkeen Form1 ikkuna.
3333
3434Nyt muokataan Button2 ominaisuuksia : klikkaa Button2 jotta nähdään sen ominaisuuksia komponenttimuokkaimessa. Muuta sen Caption [[Property|ominaisuuteen (property)]] "Button2" tekstin tilalle "Exit". Valitse tapahtumat-välilehti ja klikkaa onClick. Klikkaa kolmea pistettä (...) ja sen jälkeen ollaan lähdekoodieditorissa, keskellä toisen Button2:n [[Procedure/fi|aliohjelmaa]]:
3535
3636``` pascal
3737procedure TForm1.Button2Click(Sender: TObject);
3838begin
3939 {Kirjoita tai kopio&liitä tämä puuttuva osa:}
4040 Close;
4141 {Lähdekoodieditori on jo täydentänyt aliohjelman lopun}
4242end;
4343```
4444
4545Painamalla `F12` nähdään lomakkeen Form1 ikkuna uudelleen. Tallenna nyt työsi (ja muista tehdä se usein !!) valitsemalla päävalikosta Projekti-Tallenna projekti nimellä \> sinun_valitsemalla_tiedosto_nimellä. Talletettavana on kaksi erilaista [[File extension/fi|tiedostonimipäätettä]] (*.pas ja *.lpi). Valitse näille eri nimet. Jos molemmat ovat samannimisiä niin saat "duplicate identifier" [[compile-time error/fi|käännösvirheen]] (katso luku "The Lazarus tiedostot" lopussa tämän aiheen lopussa).
4646
4747Voit nyt yrittää kääntää. Yksinkertaisin tapa tehdä on valita "Suorita" päävalikon yläreunasta ja sitten "Suorita" vaihtoehto alivalikosta. Vaihtoehtoisesti voit yksinkertaisesti painaa `F9`. Tämä ensin kääntää ja sitten (jos kaikki on hyvin) linkittää sekä suorittaa kyseisen ohjelman.
4848
4949Kääntäjän viestit ikkuna tulee näkyville ja kaikenlaisia kääntäjä viestejä siihen kirjoitetaan, mutta lopulta sinun Form1 ikkuna ilmestyy näyttöön uudelleen, mutta ilman ruudukon pisteitä. Tämä sovelluksesi pääikkuna ja se odottaa että sinä painat painonappeja tai olet muutoin vuorovaikutuksessa sen kanssa.
5050
5151Kokeile klikkaamalla painiketta joka on nimetty tekstillä "Press". Huomaat, että sen teksti muuttuu "Press again" tekstiksi. Jos painat sitä uudelleen, sen teksti on silti "Press again" !!
5252
5353Nyt klikkaat painiketta joka on nimetty tekstillä "Exit". Ikkuna sulkeutuu ja ohjelma päättyy. Alkuperäinen Form1 ikkuna ruudukon pisteillä ilmestyy uudelleen ja on valmis hyväksymään lisää muokkausta toimintaansa.
5454
5555### Muokkaa ohjelmaa
5656
5757Uudelleen avaa tallennettu projekti. Sen Form1 ikkunassa klikkaa "Press" painiketta (Button1) valitseksesi se. Valitse "Tapahtumat" -välilehti komponenttimuokkaimessa, klikkaa onClick:n oikealla puolella olevaa ruutua, klikkaa kolmea pistettä (...), jolloin siirryt oikeaan kohtaan lähdekoodieditorissa.
5858
5959Muokkaa kyseinen kohta koodia seuraavanlaiseksi:
6060
6161``` pascal
6262procedure TForm1.Button1Click(Sender: TObject);
6363{Hyödynnetään Tag ominaisuutta, se saa arvot 0 tai 1}
6464begin
6565 if Button1.tag = 0 then
6666 begin
6767 Button1.caption := 'Press again';
6868 Button1.tag := 1;
6969 end else
7070 begin
7171 Button1.caption := 'Press';
7272 Button1.tag := 0;
7373 end;
7474end;
7575```
7676
7777Tallenna työsi, uudelleen käännä ja suorita. Vasen painike nyt vaihtaa tekstiä kahden vaihtoehdon välillä.
7878
7979Loput on sinusta kiinni!
8080
8181Jos haluat kirjoittaa konsoli(pääte)- tai tekstipohjaisia Pascal ohjelmia (esimerkiksi jos seuraavana on perustiedot Pascal ohjelmoinnista kurssi tai täytyy kirjoittaa ohjelmia joita käytetään eräajona tai järjestelmäohjelmointia), voit silti käyttää Lazarus muokkaamaan , kääntämään ja ajamaan ohjelmia. Katso [[Console Mode Pascal/fi|Komentoriviohjelmointi Pascalilla]].
8282
8383## Kehitysympäristön ikkunat
8484
8585Kun käynnistää Lazarus ensimmäistä kertaa niin joukko erillisiä irti olevia tai "kelluvia" ikkunoita näkyy työpöydällä.
8686
8787Ensimmäinen, oikealla yläreunassa pitkittäin on otsikoitu "project1 - Lazarus IDE vXXXXXX" (jonka nimi muuttuu vastaamaan nimiä parhaillaan auki olevasta projektista). Tämä on tärkein ikkuna ja se sisältää mm päävalikon ja [[Component Palette/fi|komponenttipaletin]].
8888
8989![](/wiki-images/d/d0/Lazarus-IDE.jpg)
9090
9191Otsikkopalkin alapuolella oleva rivi on päävalikko jossa on merkinnät Tiedosto, Muokka, Etsi, Näytä ja niin edelleen. Tämän alapuolella vasemmalla on joukko symboleja (kuvakkeita jotka vievät nopeasti tiettyihin valikkokomentoihin) ja oikealla on komponenttipaletti.
9292
9393Tämän alle vasemmalla on komponenttimuokkain ('Object Inspector') ikkuna ja Lazaruksen lähdekoodieditori oikealla. Siellä voi olla toinen pienempi ikkuna joka on (aluksi) merkitty nimellä "Form1", Lazaruksen lähdekoodi-ikkunan päällä. Jos tämä ei ole näkyvissä heti, se voidaan saada näkymään painamalla `F12`. Kyseinen funktionäppäin vaihtaa vuorotellen lähdekoodieditorin ja lomakenäkymän välillä. Lomake (Form) ikkuna on se, johon voidaan rakentaa graafisen käyttöliittymän sovellukseen, kun taas lähdekoodieditorin ikkuna näyttää sovelluksen Pascal koodin jota kehitetään. Komponenttimuokkaimen toiminta on käsitelty tarkemmin alla, kun komponenttipaletti on ensin kuvattu. Lisäksi voi olla myös viesti -ikkuna näytön alareunassa: tätä käytetään näyttämään Lazaruksen palautetta ohjelmoijalle, esimerkiksi ohjelmaa käännettäessä.
9494
9595Kun aloittaa uuden projektin (tai kun käynnistää Lazarus ohjelman kehitysympäristön) niin oletus lomake rakennetaan, joka koostuu laatikosta, jossa on pisteruudukko, joiden avulla voit sijoittaa eri komponentteja lomakkeelle ja lomakkeen yläpalkki, joka sisältää tavallisesti minimointi, maximointi ja Sulje-painikkeet. Jos klikkaat hiiren kohdistimella mihin tahansa tähän lomakkeeseen, näet vasemmalla puolen komponenttimuokkaimen joka kertoo tämän lomakkeen ominaisuuksia.
9696
9797Muut ikkunat, jotka voivat tulla näkyviin työskentelyn aikana: Projektin hallinta, joka sisältää yksityiskohtaiset tiedot tiedostojen mukana olosta projektissa. Siinä voidaan lisätä tai poistaa tiedostoja projektista; Viesti-ikkuna, joka näyttää kääntäjän viestejä, virheitä tai edistymisraportteja projektista. Jos Lazarus käynnistettiin pääteikkunasta (konsoli) niin alkuperäinen pääteikkuna pysyy näkyvissä ja yksityiskohtaiset kääntäjän viestit tulostetaan myös siellä.
9898
9999## Päävalikko
100100
101101Päävalikko sisältää seuraavat nimikkeet:
102102
103103**Tiedosto   Muokkaa   Etsi   Näytä   Lähdekoodi   Projekti   Suorita-valikko   Paketti   Työkalut   Ikkunat   Ohje**
104104
105105Kuten tavallista, vaihtoehdot voidaan valita joko asettamalla hiiren osoitin valikkokohdan ja klikkaamalla hiiren vasenta painiketta.
106106
107107Lisätietoja saat ottamalla yhteyttä [[Main menu/fi]].
108108
109109## Pikapainikkeet
110110
111111Pieni työkalurivi pääikkunan vasemmalla puolen, päävalikon alapuolelle jonka vasemmalla puolen on komponenttipaletti. Se sisältää joukon painikkeita, jotka ovat samoja kuin usein käytetyt päävalikon valinnat: Uusi käännösyksikkö, Avaa (jossa on alas-nuolta painamalla saadaan näyttämään avattavan listan viimeksi käytetyistä tiedostoista), Tallenna, Tallenna kaikki, Uusi lomake, Vaihda lomake / käännösyksikkö (eli näyttää joko lomakkeen tai käännösyksikön lähdekoodia), Näytä käännösyksiköt, Näytä lomakkeet, Suorita (eli kokoa ja suorita), Pysäytä, Askella sisään, Askella yli (kaksi viimeistä ovat virheenjäjityksen toimintoja).
112112
113113## Komponenttipaletti
114114
115115## Kuinka käyttää komponentteja
116116
117117[[Unit/fi|Käännösyksiköt]] **StdCtrls**, **ComCtrls** ja **ExtCtrls** sisältävät määritelmät ja kuvaukset moniin yleisimmin käytettyihin komponenteihin, lomakkeen rakentamiseen ja muihin objekteihin Lazarus sovelluksissa.
118118
119119Sovelluskehittäjän usein lopullisena tavoitteena on että halutaan käyttää komponentteja kuten TButton, [[TMemo/fi|TMemo]], [[TScrollBar/fi|TScrollBar]] jne, näiden vastaava kantaisät ovat luokat TCustomButton, TCustomMemo tai TCustomScrollBar. Usein ominaisuuksia ja metodeiden merkitystä on määritelty (ja selitetty) täydellisemmin TCustomXXX luokassa ja ne periytyvät näihin lopullisiin tavoite komponentteihin.
120120
121121Jos pudotat komponentin lomakkeelle niin silloin ei tarvita lisätä koodia luomaan sitä. Komponentti automaattisesti luodaan lomakkeen yhteydessä ja tuhotaan kun lomake on tuhottu. Jos kuitenkin luodaan komponentti (omatoimisesti) koodilla niin ei saa unohtaa sen vapauttamista, kun sitä ei enää tarvita.
122122
123123#### Tapoja asettaa ominaisuuksia
124124
125125Jos asetetaan komponentti lomakkeelle ja katsotaan komponenttimuokkaimella niin voidaan tarkkailla kun ominaisuudet muuttuvat, kun siirrät komponettia ympäriinsä.
126126
127127Jos esimerkiksi asetetaan painike (TButton) lomakkeelle, valitaan se klikkaamalla sitä niin sen hiirellä siirtämistä ympäri lomaketta hiirellä, voidaan katsella Top ja Left arvojen muutosta vastaamaan uutta asentoon komponenttimuokkaimella. Jos käytetään objektin uudelleen mitoitusta säätämään sen kokoa niin voidaan katsella Height (korkeus) ja Width (leveys) ominaisuuksien muuttumista myös.
128128
129129Toisaalta, käyttämällä komponenttimuokkainta voidaan valita arvon liittyvä ominaisuus, kuten height (korkeus), ja kirjoittaa siihen uusi arvo niin voidaan katsella lomakkeella kohteen koon muutosta vastaamaan uutta arvoa.
130130
131131Voidaan myös nimenomaisesti muuttaa komponentin ominaisuuksia koodin kirjoittamalla (asianmukaisessa implementation lohkossa lähdekoodieditorissa), esimerkiksi
132132
133133``` pascal
134134Form1.Button1.Height := 48;
135135```
136136
137137Yhteenvetona, on yleisesti kolme erilaista tapaa määrittää jokaisen komponentin ominaisuuksia:
138138
139139- hiiren avulla lomakkeella
140140- asettamalla arvot komponenttimuokkaimessa
141141- eksplisiittisesti kirjoittamalla koodia editorissa.
142142
143143#### Yleisiä ominaisuuksia
144144
145145Komponenttien käännösyksiköissä on määritelty useita ominaisuuksia, jotka ovat yhteisiä useimmille niistä ja muita ominaisuuksia jotka ovat ominaisia ​​yksittäisille komponenteille. Yleisimpiä on kuvattu tässä. Epätavallisia tai okomponenttiriippuvaisia ominaisuuksia kuvataan tarkemmin komponettikohtaisissa ohjeissa.
146146
147147Lisäohjeita saadaan valitsemalla ominaisuus tai avainsana, joko komponenttimuokkaimessa tai lähdekoodieditorissa ja painamalla `F1`. Tämä vie ohjeen oikealle sivulle dokumentaatiossa.
148148
149149Jos ominaisuuden kuvaus on sivulla riittämätön, voidaan siirtyä katsomaan mistä se on peritty.
150150
151-Joitakin yleisesti olevia ominaisuuksia
151+```text
152+ <caption><b>Joitakin yleisesti olevia ominaisuuksia</b></caption>
153+```
152154
153155Ominaisuus
154156
155157Merkitys
156158
157159Action
158160
159161Tärkein toiminta tai tapahtuma joka liittyy komponenttiin. Esimerkiksi valitsemalla "Lopeta" -painike saattaa aiheuttaa Sulje-toiminnan.
160162
161163Align
162164
163165Määrittää miten komponentti on sijoittunut vanhempaansa nähden. Mahdolliset arvot ovat alTop (sijoittuu yläosaan ja käyttää koko käytettävissä olevan leveyden), alBottom, alLeft (sijoittuu vasemmalle ja käyttäen koko käytettävissä olevan korkeuden), alRight. alNone (missä tahansa) tai alClient (käyttää kaiken käytettävissä olevan tilan)
164166
165167Anchor
166168
167169Käytetään pitämään komponentti tietyn etäisyyden päässä vanhemmasta komponentista, määritelty reunoista, kun vanhempi muuttaa kokoa. Esimerkiksi \[akBottom, akRight\] pitää komponentin kiinteän matkan päässä oikeaan alakulmaan.
168170
169171AutoSelect
170172
171173Kun sen arvo on True niin valitaan kaikki se teksti, joka on valittu kun `Enter`-näppäintä painetaan tai hyväksytään kyseinen kohta.
172174
173175AutoSelected
174176
175177True osoittaa, että Edit tai ComboBox komponentti on juuri suorittanut AutoSelect toiminnan siten, että myöhemmät hiirellä ja näppäimistön syöttö jatkuu normaalisti valitsematta tekstiä.
176178
177179BorderSpacing
178180
179181*Ankkuroidun* komponentin ja sen vanhemman välisen ympäröivän reunan etäisyys.
180182
181183Caption
182184
183185Teksti, joka näkyy tai on lähellä komponenttia; Ohjelman käyttäjälle tulee antaa vihjeen siitä, minkä tehtävän tai käskyn komponentti tekee kuten "Sulje" tai "Suorita". Oletuksena Caption-teksti asetetaan samaksi kuin mitä on "Name" ominaisuudessa ja ohjelmoijan pitäisi oletusarvon sijaan korvata se sopivalla tekstillä.
184186
185187CharCase
186188
187189Kertoo, miten teksti näkyy tekstin muokkauskomponentissa: Normaali (sellaisenaan, säilyttäen käyttäjän antaman syötteen), muunnetaan isoiksi tai pieniksi kirjaimiksi.
188190
189191Constraints
190192
191193Asettaa äärikoot komponentille. Jos kokoa muutetaan niin uudet ulottuvuudet ovat aina vaihteluvälien rajoissa. Ohjelmoikan tulisi huolehtia asettaessaan näitä, että ne eivät ole ristiriidassa Anchors ja Align asetuksien kanssa.
192194
193195Color
194196
195197Väri jota käytetään piirtämään komponentti ja sen näyttämää kirjoitettavaa tekstiä.
196198
197199Enabled
198200
199201Boolean ominaisuus joka määrittää, onko komponentti valittavissa, käytössä tai voiko se suorittaa toiminnon. Jos se ei ole käytössä (arvossa false) niin se on usein harmaana lomakkeella.
200202
201203Font
202204
203205Kirjaisin jota käytetään kirjoitettaessa tekstiä komponenttiin liittyen - joko caption, label tai teksti komponentin sisällä . Komponenttimuokkaimessa on nuoli-merkintä yleensä tämän kohdan vasemmalla puolen, ja valitsemalla se niin se paljastaa muita vaihtoehtoja kuten merkistön, värin ja koon.
204206
205207Height
206208
207209Komponentin korkeus. Katso myös Width.
208210
209211Hint
210212
211213Lyhyt informatiivinen vihjeteksti joka näkyy ponnahdustekstinä, jos hiiren kursori menee komponentin päälle. Katso myös ShowHint ominaisuus.
212214
213215Items
214216
215217Luettelo "asioista", jota kohde sisältää, kuten joukko kuvia, luettelo tekstiä, toimintoja käytettäessä actionlist:aa jne.
216218
217219Left
218220
219221Määrittää missä komponentti sijaitsee suhteessa vanhempaan (lomake, ikkuna) vaakasuunta. Katso myös Top
220222
221223Lines
222224
223225Merkkijonojen joukko, joka sisältää tekstisisältöä enemmän kuin yhden rivin tietoja. Taulukko on nolla-indeksoitu eli rivit on numeroitu (alkaen nollasta)\[0..numLines-1\]
224226
225227Name
226228
227229Tunniste eli nimi, jonka avulla komponentti tunnetaan ohjelmassa. Kehitysympäristö antaa sille oletuksena nimen joka pohjautuu taustalla tyypin mukaan, esimerkiksi peräkkäisinä esiintyvät TBitButton-komponentit olisivat nimeltään BitButton1 ja BitButton2; Olisi hyvä jos ohjelmoija antaisi näille enemmän kuvaavampia nimiä kuten ExitButton tai OKButton. Oletuksena komponentin nimi viedään myös Caption tekstiksi, mutta Caption teksti voidaan muuttaa erikseen.
228230
229231PopUpMenu
230232
231233Ikkuna joka sisältää tilannekohtainen valikkotietoa, joka avautuu, kun hiiren oikealla painikkeella klikataan komponenttia.
232234
233235ReadOnly
234236
235237Boolean omonaisuus, ja jos sen arvo on true, niin tarkoittaa sitä että käyttäjä tai kutsuva rutiini voi luke komponentin sisältö, mutta se ei voi kirjoittaa siihen tai muuttaa sitä.
236238
237239ShowHint
238240
239241Sallii pienen tekstikentän, joka sisältää tilannekohtaisen ​​ohjeen tai muun kuvauksen, joka näkyy, kun hiiren kursori on komponentin "päällä". Katso Hint-ominaisuutta.
240242
241243Style
242244
243245Valittavissa olevia tyylivaihtoehtoja: esimerkiksi Style voidaan määrittää TFormStyle, TBorderStyle, TButtonStyle jne.
244246
245247TabOrder
246248
247249Kokonaisluku määritellään missä järjestyksessä `Tab` -näppäin käy läpi lomaketta.
248250
249251TabStop
250252
251253Boolean ominaisuus jos True niin paikka johon käyttäjä voi päästä peräkkäin painamalla `Tab` eli sarkainnäppäintä.
252254
253255Text
254256
255257Merkkijono teksti, joka edustaa todellisia tietoja, mitä tämä komponentti sisältää. Koskee erityisesti Text, Memo ja StringList tyyppisiä komponentteja. Suurin osa editointi (kuten **Select**, **Clear**, **Cut**, **Copy**) suoritetaan komponentin tässä osassa, joka sisältää todellisen muokattavan merkkijonon. Jos komponentissa on enemmän kuin yksi rivi tekstiä, esimerkiksi TMemo tai TComboBox, niin tekstielementtejä on järjestetty merkkijonojoukoiksi (nolla-indeksoitu eli numeroituna \[0..rivien määrä-1\]) rivejä.
256258
257259Top
258260
259261Määrittää missä komponentti sijaitsee suhteessa vanhempaan (lomake, ikkuna) pystysuunta. Katso myös Left
260262
261263Visible
262264
263265Jos ominaisuuden arvo on true niin komponentti näkyy lomakkeella. Jos arvo on false niin komponentti on piilotettu.
264266
265267Width
266268
267269Komponentin leveys. Katso myös Height.
268270
269271WordWrap
270272
271273Looginen lippu osoittaa, onko automaattinen rivinvaihto on käytössä, eli jos sana tulee lähelle rivin loppuun ja tulee olemaan liian pitkä rivi niin osa siitä on siiretty (alaspäin) seuraavalle riville.
272274
273275#### Tapahtumat
274276
275277Monet tapahtumat ovat yleisesti lueteltu "Tapahtumat" välilehdellä komponenttimuokkaimessa. Jos komponenttimuokkaimessa valitaan tapahtuman viereinen tyhjäkenttä kenttä niin siihen muodostuu ComboBox jonka alasvetoluettelosta näkyy luettelo kaikista toimista jotka on jo määritelty. Tämän avulla voidaan valita tähän tapahtumaan yhden kohdan. Vaihtoehtoisesti voit valita kolme pistettä `...`-painike jolloin lähdekoodieditorissa tehdään metodin sisään alue johon voidaan aloittaa kirjoittamaan oman toiminnan käskyjä valittuun tapahtumaan.
276278
277279Vaikka suuri määrä tapahtumia on liitettävissä komponentin toimintaan. Käytännössä se on tarpeen vain asettaa muutamaan niistä. Useimmille komponenteille on riittävää koodaata onClick-tapahtuma; monimutkaisemmissa komponenteissa voi olla tarpeen myös kirjoittaa toiminta tapahtumiin "OnEntry" (kun hiiren osoitin siirtyy komponentille ja se valitaan) ja "OnExit" (kun hiiren osoitin poistuu komponentilta), tai ehkä kirjoittaa tapahtumankäsittelijä "OnChange" tai "OnScroll" -tapahtumiin, riippuen komponenteista, jonka kanssa ollaan tekemisissä.
278280
279281Pop-up-valikko, joka tulee näkyviin hiiren oikealla painikkeella kun komponenttia klikataan lomakkeella. Siinä ensimmäisenä vaihtoehtona on: "Luo oletustapahtuma". Valitsemalla tämän vaihtoehdon on sillä sama vaikutus kuin valitsemalla kolme pistettä komponenttimuokkaimen oletuksena olevassa tapahtumassa joka on yleensä "onClick". Eli lähdekoodieditorissa tehdään metodin sisään alue johon voidaan aloittaa kirjoittamaan oman toiminnan käskyjä.
280282
281283Yleinen strategia Olio-ohjelmoinnissa on tarjota **[[TActionList|ActionList]]** johon on tehty useita ennalta määriteltyjä toimenpiteitä, joista sopivin voidaan valita käyttöön siinä tapauksessa.
282284
283-Joitakin yleisiä tapahtumia
285+```text
286+ <caption><b>Joitakin yleisiä tapahtumia</b></caption>
287+```
284288
285289Tapahtuma
286290
287291Merkitys
288292
289293OnChange
290294
291295Tapahtuu jos jokin muutos havaitaan (esim hiiren liikkua, hiiren klikkaus, näppäimen painallus, tekstin muokkaus, kuva muuttuu jne)
292296
293297OnClick
294298
295299Tapahtuu kun (ensimmäinen, yleensä vasenta) hiiren painiketta klikataan. Tämä on yleensä pää- tai oletus toiminto; esimerkiksi kun klikataan painiketta tai muuta vastaavaa.
296300
297301Click
298302
299303Menetelmä matkia koodina klikkaamisen vaikutusta. Tämä menetelmä on useimmiten löytyy Button-tyyppisistä komponenteista (TButton, TBitBtn, TSpeedButton jne). Aliohjelma voidaan kirjoittaa niin että kutsutaan samaa koodia kuin onClick toiminta. Tämä järjestely voi olla erityisen hyödyllistä, jos yhden komponentin aktivointi klikkaamalla aiheuttaa lukuisiin muiden komponenttien aktivointia, ja valitsemalla menetelmä voidaan käyttää aloittamaan toiminto sen sijaan, käyttäjä joutuu klikkaamaan monia komponentteja.
300304
301305OnDragDrop
302306
303307Toteuttaa toimet vedä ja pudota (Drag-Drop) liikkeen aikana, eli kun hiirtä käytetään "kaappaamaan" kohteen tai jotain tekstiä jne ja siirtää sen uuteen paikkaan.
304308
305309OnEditingDone
306310
307311Toiminta alkaa kun käyttäjä on lopettanut kaikki muutokset / muutokset komponenttiin. Tätä käytetään usein tarkistamaan komponentin sisältöä (esim. tarkistamaan että syötetty teksti on oikea tai kunnollinen IP-osoite)
308312
309313OnEntry
310314
311315Toteuttaa toimet kun hiiren osoitin siirtyy komponentille tai yleisesti kun "painopiste" siirtyy komponenttiin. Tämä saattaa sisältää muutoksia komponentin ulkonäköön kuten korostamaan sitä tai kohottamaan sen reunuksia.
312316
313317OnExit
314318
315319Tapahtuma aktivoituu, kun hiiri siirtyy pois komponentin alueelta, yleisesti siirtämällä "painopiste" pois komponentilta.
316320
317321OnKeyPress
318322
319323Tapahtuma aktivoituu, kun painetaan jotain näppäintä. Hienovaraisesti erilainen kuin OnKeyDown, joka yksinkertaisesti aktivoituu näppäimen ollessa alhaalla. OnKeyPress vaatii, että painopiste on jo tässä komponentissa kun näppäintä painetaan.
320324
321325OnKeyDown
322326
323327Tapahtuma aktivoituu, jos näppäin on alhaalla, kun "painopiste" (fokus) on tässä komponentissa. Hienovaraisesti erilainen kuin OnKeyPress - esimerkiksi näppäin saattaa olla jo alhaalla, kun focus tuli tähän komponenttiin, kun taas OnKeyPress vaatii näppäintä painetaan vasta kun painopiste on tässä komponentissa.
324328
325329OnKeyUp
326330
327331Tapahtuma aktivoituu kun näppäin "vapautetaan" eli nousee ylös (tai näppäimen painaminen loppuu) kun focus on tässä komponentissa.
328332
329333OnMouseMove
330334
331335Tapahtuma aktivoituu kun hiiren osoitin liikkuu ja focus on tässä komponentissa.
332336
333337OnMouseDown
334338
335339Tapahtuma aktivoituu kun hiiren näppäin menee alas ja focus on tässä komponentissa.
336340
337341OnMouseUp
338342
339343Tapahtuma aktivoituu kun hiiren näppäin "vapautetaan" ja focus on tässä komponentissa. Eli hiiren näppäin on jo aikaisemmin painettu alas ja painaminen lopetetaan/päätetään
340344
341345OnMouseEnter
342346
343347Tapahtuma aktivoituu kun hiiren osoitin siirtyy komponentille ( mutta hiiren painiketta ei vielä ole painettu) .
344348
345349OnResize
346350
347351Tapahtuma aktivoituu kun komponentin kokoa muutetaan tai koko muuttuu. Voi aktivoitua esim. kun teksti tasataan toiseen reunaan, keskitetään tai valitaan eri fonttikokoa jne.
348352
349353#### Rakentajat & purkajat
350354
351355Nämä ovat kaksi erityistä metodia liittyvät [[Class|luokkiin]](komponentit):
352356
353357- **[[Constructor/fi|Constructor (Rakentaja)]]:** kuten **Create** varaa olion (komponentin) tarvitsemaa muistia ja järjestelmäresursseja. Ne tarpeen vaatiessa kutsuvat myös muita luokan aliolioiden rakentajia.
354358
355359- **[[Destructor/fi|Destructor (purkaja)]]:** poistaa olion ja vapauttaa varatun muistin sekä muita resursseja. Jos kutsut **Destroy** (tuhoa) olio, jota ei ole vielä alustettu,niin se aiheuttaa virheen. Käytä aina **Free** metodia puratessa olioita, koska se tarkistaa, onko olion arvo on [[Nil/fi|nil]] ennenkuin kutsuu **Destroy** metodia.
356360
357361Noudata seuraavia varotoimia, kun luoda oman **Destroy** metodin:
358362
359363- Määritä **Destroy** override directive:llä, koska se on virtual metodi.
360364- Kutsu aina **'inherited Destroy;**' viimeisenä asiana destructor:in koodissa.
361365- Huomaa, että [[Exceptions/fi|exception (poikkeus)]] voidaan nostaa jos **constructor** (rakentajalla) ei ole tarpeeksi muistia luoda olio tai jotain muuta menee pieleen. Jos poikkeusta ei käsitellä rakentajan sisällä, olio on tällöin vain osittain rakennettu. Tässä tapauksessa kun **Destroy**ta kutsutaan, destructor:in täytyy tarkistaa että resurssit olivat todella varattu ennen kuin se hävittää ne.
362366- Muista kutsua **Free** metodia kaikille olioille jotka on luotu constructor:lla.
363367
364368## Kuinka käyttää valikko-komponenttia
365369
366370Vihjeitä miten luoda valikot lomakkeelle.
367371
368372*[[TMainMenu/fi|TMainMenu]]* ![](/wiki-images/6/6f/Tmainmenu.png) on päävalikko, joka näkyy monen lomakkeen yläosassa; Lomakkeen suunnittelija voivat muokata sitä valitsemalla eri valikkovaihtoehtoja. *[[TPopupMenu/fi|TPopupMenu]]* ![](/wiki-images/e/e4/Tpopupmenu.png) on valikko -ponnahdusikkunassa, jossa on yleensä tilannekohtaisia, yksityiskohtia vaihtoehtoja. Se "ponnahtaa" kun hiiren oikeaa näppäintä klikataan lähellä komponenttia.
369373
370374Päävalikko on ei-näkyvä komponentti: toisin sanoen jos kuvake on valittu komponenttipaletilta ja saatetaan lomakkeelle niin se ei näy ohjelman [[runtime/fi|ajon aikana]]. Sen sijaan, valikkorivi jonka rakenne määritellään valikkomuokkaimessa ilmestyy. Ponnahdusvalikot (saattaa lomakkeelle valitsemalla kyseinen kuvake komponentipaletilta) eivät näy ollenkaan kunnes hiiren oikealla painikkeella klikataan komponenttia, jolla on tällainen valikko.
371375
372376Nähdäksesi valikkomuokkaimen, klikkaa hiiren oikealla Main Menu tai Popup Menu -kuvaketta lomakkeella. Tällöin avautuu ikkuna johon voidaan syöttää valikon kohteet.
373377
374378valikkomuokkaimessa näkyy laatikko joka sisältää painikkeen "New Item1". Jos klikkaa hiiren oikealla kyseistä painiketta, pop-up-valikko tulee näkyviin, jonka avulla voit lisätä uuden kohdan ennen tai jälkeen (samalla tasolla) tai luoda alivalikon mahdollisuuden johon lisätä uusia kohteita sen alle.
375379
376380Mikä tahansa *MenuItems* joka lisätään voidaan määrittää käyttämällä komponenttimuokkainta.
377381
378382Ainakin kullekin kohdalle pitäisi antaa *Caption*-teksti , joka näkyy valikkorivillä. sen tulisi kertoa toimintaa jota voidaan valita, kuten "Avaa tiedosto", "Sulje", "Suorita" tai "Lopeta". Voidaan myös haluta antaa tätä merkityksellisempi nimi.
379383
380384Jos halutaan tietyn Caption-tekstni kirjaimen liittyvän pikanäppäin-toimintoon, niin kirjain pitäisi edeltää et-merkillä (&). Jolloin ohjelman ajon aikana valikkokohtaan ilmestyy pikanäppäintä vastaava kirjain alleviivattuna ja painamalla kirjainta vastaavaa näppäintä on sillä sama vaikutus kuin valitsemalla valikosta. Vaihtoehtoisesti voidaan pikanäppäin sekvenssit (esimerkiksi `Ctrl`+`C` kopioi tai `Ctrl`+`V` liitä - standardin mukaiset pikanäppäimet) valita MenuItem:n *ShortCut* ominaisuuteen.
381385
382386Usein on hyödyllistä käyttää valikoiden yhteydessä *[[TActionList]]* komponenttia joka sisältää joukon standardin mukaisia tai räätälöityjä tapahtumia. Valikkokohdat voidaan linkittää komponenttimuokkaimessa lueteltuihin tapahtumiin ja samoja tapahtumia voidaan yhdistää painikkeisiin, työkalupalkin painikkeihin, pikapainikkeisiin jne. On tietenkin tehokkaampaa käyttää uudelleen samaa koodia vastata erilaisiin tapahtumiin, kuin kirjoittaa erillinen *OnClick* tapahtumakäsittelijä jokaiseen yksittäiseen komponenttiin.
383387
384388Oletuksena useita standarditapahtumia ovat valmiiksi ladattu. Nämä tapahtumat voidaan valita käyttämällä toimintolistan muokkainta joka näkyy, kun hiiren klikkaa ActionList kuvaketta lomakkeella.
385389
386390## Virheenjäljitys
387391
388392
389393*Jotain kirjoitettu toisaalla*.
390394
3913951\) Varmista, että olet lukenut sen asetukset: [[Debugger Setup]]
392396
3933972\) Katso myös [:category: IDE Window - Debug](/wiki-category/IDE%20Window%20-%20Debug)
394398
3953993\) Lue rajoitukset: [[GDB Debugger Tips|GDB_Debugger_Tips#Inspecting_data_types_.28Watch.2FHint.29]] Tämä sivu antaa ohjeita myös joidenkin alustoiden / versioiden erityiskysymyksiln
396400
397401## Lazarus tiedostot
398402
399-`   (Kiitokset: Kevin Whitefoot.)`\
400-`   (Lisäykset: Giuseppe Ridinò, `User:Kirkpatc` ja Tom Lisjac)`
403+```text
404+ (Kiitokset: Kevin Whitefoot.)
405+ (Lisäykset: Giuseppe Ridinò, User:Kirkpatc ja Tom Lisjac)
406+```
401407
402408Kun tallennat niin tallennat kahden nimisiä tiedostoja:
403409
404-`  xxx.pas ja yyy.lpr `
410+```text
411+ xxx.pas ja yyy.lpr
412+```
405413
406414(Todellisuudessa tallennetaan enemmän mutta niillä on sama nimi mutta eri pääte). Projektitiedoston (lpr) ja käännösyksikön tiedoston (pas) nimi ei saa olla sama. Tietenkin on johdonmukaista muuttaa kaikki esiintymät Unit1 kuuvaavimmiksi nimiksi.
407415
408416Joten jos tallennat projektin nimeltä **again**, yrittää tallentaa again.pas ja again.lpr epäonnistuu, koska yksiköiden nimet ja ohjelmien nimet ovat samassa nimiavaruudessa ja on tuloksena kehitysympäristö kertoo että on olemassa samanniminen tiedosto.
409417
410418Joten tähän päädyttiin:
411419
412420e:/lazarus/kj/lazhello:
413421
414-`total 4740  free 76500`\
415-`-rwxrwxrwx   1 kjwh     root  4618697 Mar 24 11:19 again.exe`\
416-`-rw-rw-rw-   1 kjwh     root     3002 Mar 24 11:21 again.lpi`\
417-`-rw-rw-rw-   1 kjwh     root      190 Mar 24 11:18 again.lpr`\
418-`-rw-rw-rw-   1 kjwh     root      506 Mar 24 11:08 againu.lfm`\
419-`-rw-rw-rw-   1 kjwh     root      679 Mar 24 11:08 again.res`\
420-`-rw-rw-rw-   1 kjwh     root      677 Mar 24 11:08 againu.pas`\
421-`-rw-rw-rw-   1 kjwh     root     2124 Mar 24 11:08 againu.ppu`\
422-`-rwxrwxrwx   1 kjwh     root      335 Mar 24 11:07 ppas.bat`
422+```text
423+total 4740 free 76500
424+-rwxrwxrwx 1 kjwh root 4618697 Mar 24 11:19 again.exe
425+-rw-rw-rw- 1 kjwh root 3002 Mar 24 11:21 again.lpi
426+-rw-rw-rw- 1 kjwh root 190 Mar 24 11:18 again.lpr
427+-rw-rw-rw- 1 kjwh root 506 Mar 24 11:08 againu.lfm
428+-rw-rw-rw- 1 kjwh root 679 Mar 24 11:08 again.res
429+-rw-rw-rw- 1 kjwh root 677 Mar 24 11:08 againu.pas
430+-rw-rw-rw- 1 kjwh root 2124 Mar 24 11:08 againu.ppu
431+-rwxrwxrwx 1 kjwh root 335 Mar 24 11:07 ppas.bat
432+```
423433
424434Huomaa, että on olemassa paljon enemmän tiedostoja kuin ne kaksi, jotka aluksi mainittiin.
425435
426436**again.exe:** Pääohjelma joka on ajettavissa. MS windows:ssa lisätään "exe" tiedostopäätelaajennus. Linux:ssa ei lisätä mitään (vain ohjelman nimi). Tämä tiedosto on oletuksena paljon tilaa vievä johtuen sen sisällyttämistä virheenkorjaus symboleista. Kokoa voi pienentää muuttamalla kehitysympäristön asetuksia tai/ja ajamalla "strip" apuohjelma joka poistaa niitä ja merkittävästi pienentää ajettavan tiedoston kokoa.
427437
428438**again.lpi:** (Lazarus Project Information). Tämä on tärkein informaatio tiedosto Lazarus projektilla; Delphissä sitä vastaavat tärkeimmät tiedot on .dpr tiedostossa. Se on tallennettu XML-muodossa ja sisältää ohjeet kaikista kirjastoista ja tarvittavista käännösyksiköistä kun rakennetaan suoritettavaa tiedostoa.
429439
430440**again.lpr:** Pääohjelma lähdekooditiedostona. Huolimatta erityisestä tiedostopääte tarkenteesta niin se on itse asiassa täysin normaalia Pascal lähdekooditiedosto. Siinä on uses lauseke, jonka avulla kääntäjä löytää kaikki käännösyksiköt joita se tarvitsee. Huomaa, että program toteamus ei tarvitse nimetä ohjelmaa samaksi kuin tiedoston nimi. Tämä tiedosto on yleensä melko pieni, vain muutaman lausekkeita alustamiseksi, rakentaa lomakkeet, ajaa ja sulkea sovelluksen. Suurin osa työstä tehdään käännösyksiköiden lähdekooditiedostoissa, jossa on tiedostopääte ".pas"
431441
432442**againu.lfm:** Lazarus tallentaa käännösyksikön lomakkeen ulkoasun, ihmisen luettavissa olevassa muodossa. Se kertoo eri komponenttien, ominaisuuksia jotka on asetettu komponenttimuokkaimella. Jokaisen komponentin kuvaus alkaa rivillä:
433443
434-`object xxxx `\
435-`   sitten seuraa ominaisuuksien luettelo `\
436-`  (Myös upotettuja tai sisäkkäisiä objekteja) sitten `\
437-`end `\
438-`rivi.`
444+``` pascal
445+object xxxx
446+ sitten seuraa ominaisuuksien luettelo
447+ (Myös upotettuja tai sisäkkäisiä objekteja) sitten
448+end
449+rivi.
450+```
439451
440452Lazarus käyttää tätä tiedostoa kun luo resurssitiedoston (.res). Delphi DFM tiedostot voidaan muuntaa lfm muotoon Lazarus kehitysympäristössä käyttäen: Työkalut -\> Delphi muunnos -\> Muunna binaarinen DFM-tiedosto teksti LFM:ksi ja tarkista syntaksi.
441453
442454**again.res:** Tämä on luotu resurssi tiedosto, joka sisältää ohjeet ohjelman rakentamiseen (jos tarkastellaan pääohjelma tiedostoa, näette alustuksen osassa rivin
443455
444456``` pascal
445457{$i *.res}
446458```
447459
448460joka ohjaa ohjelman lataamaan resurssitiedoston). Huomaa, että se ei ole Windows resurssi-tiedosto.
449461
450462**againu.pas:** Käännösyksikkö, joka voi sisältää myös lomakkeen koodin; tämä on yleensä vain tiedosto jota ohjelmoijan tarvitsee muokata tai tarkastaa, ja se nimenomaisesti sisältää ohjelmoijan toimittamaa koodia (erityisesti tapahtuman käsittelijät).
451463
452464**againu.ppu:** Tämä on koottu käännöyksikkö, joka linkitetään suoritettavaan tiedostoon yhdessä muiden käännösyksiköiden jotka on nimetty Uses osiossa.
453465
454466**ppas.bat:** Tämä on yksinkertainen skripti, joka yhdistää ohjelman tuottaman suoritettavan tiedoston. Jos käännös on onnistunut, kääntäjä poistaa sen.
455467
456468## Katso myös
457469
458470- [[Lazarus IDE Tools/fi|Lazarus IDE Tools]]
459471- [[Lazarus project files]]
460472
461473---
462474*From the Free Pascal wiki, page "Lazarus Tutorial/fi", as it stood on 2021-12-08 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history