Sign in Join
Wiki copytemporary

Lazarus IDE Tools/fi: what changed

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

OldNewLine
11**[[Lazarus Faq|Lazarus]] IDE Tools** on [[Free Pascal]]- lähdekoodin jäsentämis- ja muokkaustyökalu, jota kutsutaan "codetoolsiksi".
22
33Tämä työkalu tarjoaa ominaisuuksia, kuten *Find Declaration*, *Code Completion*, *Extraction*, *Moving Inserting* ja *Beautifying Pascal* lähdekoodia. Nämä toiminnot voivat säästää paljon aikaa ja päällekkäistä työtä. Ne ovat muokattavissa ja jokainen ominaisuus on käytettävissä pikavalintojen kautta (katso editoriasetukset).
44
55Koska ne työskentelevät pelkästään Pascal-lähdekoodeilla ja ymmärtävät FPC-, [[Delphi]]- ja [[Kylix]]- koodeja, ne eivät tarvitse käännettyjä käännösyksiköitä tai asennettua Borland / Embarcadero-kääntäjää. Delphi- ja FPC-koodia voidaan muokata samanaikaisesti useilla Delphi- ja FPC-versioilla. Tämä tekee Delphi-koodin siirtämisen FPC / Lazarukselle paljon helpompaa.
66
77## Yhteenvetoraportti IDEn-pikanäppäimestä
88
99| | |
1010|----|----|
11-| [[Lazarus IDE Tools|Declaration Jumping]] | <span class="kbd">Ctrl</span>+klikkaa tai <span class="kbd">Alt</span>+<span class="kbd">Up</span> (Hyppää tyypin tai muuttujan määrittelyyn) |
12-| [[Lazarus IDE Tools/fi|Siirtyminen esittelyn ja toteuksen välillä]] | <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">Up</span> (vaihtaa määritelmäosion ja toteutusosion välillä) |
13-| [[Lazarus IDE Tools|Code Templates]] | <span class="kbd">Ctrl</span>+<span class="kbd">J</span> |
14-| [[Lazarus IDE Tools|Syncro Edit]] | <span class="kbd">Ctrl</span>+<span class="kbd">J</span> (while text is selected) |
15-| [[Lazarus IDE Tools|Code Completion]] (Class Completion) | <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span>, <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">X</span> for creating class fields instead of local variables |
16-| [[Lazarus IDE Tools|Identifier Completion]] | <span class="kbd">Ctrl</span>+<span class="kbd">space</span> |
17-| [[Lazarus IDE Tools|Word Completion]] | <span class="kbd">Ctrl</span>+<span class="kbd">W</span> |
18-| [[Lazarus IDE Tools/fi|Parametrivihjeet]] | <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">space</span> |
19-| [[Lazarus IDE Tools/fi|Etsi kirjain kerrallaan]] | <span class="kbd">Ctrl</span>+<span class="kbd">E</span> |
20-| [[Lazarus IDE Tools|Rename Identifier]] | <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">E</span> |
11+| [[Lazarus IDE Tools|Declaration Jumping]] | `Ctrl`+klikkaa tai `Alt`+`Up` (Hyppää tyypin tai muuttujan määrittelyyn) |
12+| [[Lazarus IDE Tools/fi|Siirtyminen esittelyn ja toteuksen välillä]] | `Ctrl`+`Shift`+`Up` (vaihtaa määritelmäosion ja toteutusosion välillä) |
13+| [[Lazarus IDE Tools|Code Templates]] | `Ctrl`+`J` |
14+| [[Lazarus IDE Tools|Syncro Edit]] | `Ctrl`+`J` (while text is selected) |
15+| [[Lazarus IDE Tools|Code Completion]] (Class Completion) | `Ctrl`+`Shift`+`C`, `Ctrl`+`Shift`+`X` for creating class fields instead of local variables |
16+| [[Lazarus IDE Tools|Identifier Completion]] | `Ctrl`+`space` |
17+| [[Lazarus IDE Tools|Word Completion]] | `Ctrl`+`W` |
18+| [[Lazarus IDE Tools/fi|Parametrivihjeet]] | `Ctrl`+`Shift`+`space` |
19+| [[Lazarus IDE Tools/fi|Etsi kirjain kerrallaan]] | `Ctrl`+`E` |
20+| [[Lazarus IDE Tools|Rename Identifier]] | `Ctrl`+`Shift`+`E` |
2121
2222## Siirtyminen esittelyn ja toteuksen välillä
2323
24-Jos halutaan siirtyä aliohjelman rungon (begin..end) ja aliohjelman (procedure Name;) esittelyn välillä käytä näppäinyhdistelmää <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">Up</span>.
24+Jos halutaan siirtyä aliohjelman rungon (begin..end) ja aliohjelman (procedure Name;) esittelyn välillä käytä näppäinyhdistelmää `Ctrl`+`Shift`+`Up`.
2525
2626Esimerkiksi:
2727
2828``` pascal
2929interface
3030
3131procedure DoSomething; // Aliohjelman esittely
3232
3333implementation
3434
3535procedure DoSomething; // Aliohjelman määrittely
3636begin
3737end;
3838```
3939
40-Jos kursori on aliohjelman toteutusosiossa ja painetaan <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">Up</span> niin kursori siirtyy aliohjelman esittelyyn. Painamalla <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">Up</span> uudelleen niin tullan takaisin määrittelyyn heti 'begin' sanan jälkeiseen kohtaan.
40+Jos kursori on aliohjelman toteutusosiossa ja painetaan `Ctrl`+`Shift`+`Up` niin kursori siirtyy aliohjelman esittelyyn. Painamalla `Ctrl`+`Shift`+`Up` uudelleen niin tullan takaisin määrittelyyn heti 'begin' sanan jälkeiseen kohtaan.
4141
4242Tämä toimii samanlailla myös luokan (class) metodin esittelyn ja toteutuksen välillä.
4343
4444Vihje: Siirtyminen tapahtuu siihen aliohjelmaan jossa on samat parametrit. Jos ei löydy täysin samaa niin siirtyminen tapahtuu sopivampaan eli siihen jossa on vähiten eroja (Tälläistä toimintaa ei välttämättä löydy esim. Delphistä).
4545
4646Esimerkki aliohjelmasta joiden esittelyssä ja toteutuksessa on erilaiset parametrityypit:
4747
4848``` pascal
4949interface
5050
5151procedure DoSomething(p: char); // procedure definition
5252
5353implementation
5454
5555procedure DoSomething(p: string); // procedure body
5656begin
5757end;
5858```
5959
6060Siirtyminen toteuksen ja niiden esittelyjen välillä 'string' avainsana. Tätä voi käyttää kun haluaa uudelleen nimetä metodin ja/tai muuttaa parametrejä.
6161
6262Esimerkiksi: uudelleen nimetään 'DoSomething' -\> 'MakeIt':ksi:
6363
6464``` pascal
6565interface
6666
6767procedure MakeIt; // procedure definition
6868
6969implementation
7070
7171procedure DoSomething; // procedure body
7272begin
7373end;
7474```
7575
7676Kun siirrytään 'MakeIt':n esittelystä toteukseen (joka on siis vielä väärän niminen). Lazarus etsii sopivaa toteustusta, jota ei löydy, sen jälkeen muita sopivia. Jos nimeä on muutettu ainoastaan yhdestä aliohjelmasta jolloin on yksi toteutus josta ei löydy määrittelyä niin tällöin siirrytään siihen. Näin voidaan yksinkertaisesti vaihtaa nimeä tai parametrejä.
7777
7878## Include Files
7979
8080Include files ovat tiedostoja, jotka on lisätty lähdekoodiin {\$I filename} tai {\$INCLUDE filename} kääntäjän ohjeella. Lazarus ja FPC käyttävät usein include tiedostoja vähentämään redundanssia ja välttävät lukemattomia {\$ IFDEF} -rakenteita, joita tarvitaan eri alustojen tukemiseen.
8181
8282Toisin kuin Delphi, Lazarus IDE: llä on täysi tuki myös include-tiedostoihin. Voit esimerkiksi hypätä .pas-tiedoston aliohjelmasta sisällytetyn tiedoston toteutukseen. Kaikki codetools osiot, kuten koodin täydentäminen, käsittelevät include tiedostoja erityistapauksina.
8383
8484Esimerkiksi: Kun koodin täydentäminen lisää uuden metodin toteuksen rungon toisen metodin rungon taakse, se pitää ne molemmissa samassa tiedostossa. Tällä tavalla voit laittaa kokoluokan toteutuksia include-tiedostoihin, kuten LCL tekee lähes kaikille kontrolleille.
8585
8686Mutta aloittelijoille löytyy ansa: Jos avataan include tiedosto ensimmäisen kerran ja yritetään siirtyä esittelyn ja toteuksen välillä tai löytää määrittely niin saadaan virhe. IDE ei vielä tiedä, mihin yksikköön sisällytettävä tiedosto kuuluu. Sillä on ensin avattava käännösyksikkö.
8787
8888Niin pian kuin IDE analysoi käännösyksikön, se analysoi include kääntäjänohjeet siellä ja IDE muistaa tämän suhteen. Se tallentaa nämä tiedot poistumiseen ja projektin tallentamiseen ~ / .lazarus / includelinks.xml. Kun seuraavan kerran avataan tämän include tiedosto ja siirrytään toteuksen ja niiden esittelyjen välillä, IDE avaa laitteen sisäisesti ja siirtyminen toimii. Voidaan myös viitata IDE: een asettamalla
8989
9090``` pascal
9191{%mainunit yourunit.pas}
9292```
9393
9494tiedoston yourinclude.inc alkuun.
9595
9696Tällä mekanismilla on rajoituksia. Joihinkin tiedostoihin sisältyy kaksi tai useampia include tiedostoja. Esimerkiksi: lcl/include/winapih.inc.
9797
9898Se miten siirrytään aliohjelman/metodin määrityksistä niiden include tiedostoihin riippuu viimeisestä toiminnosta. Jos ollaan työskennelty lcl / lclintf.pp: llä, IDE siirtyy winapi.inc: hen. Jos ollaan työskennelty lcl / interfacebase.pp: llä niin se siirtyy lcl / include / interfacebase.inc (tai johonkin muuhun include tiedostoon). Jos työskennellään molemmilla, niin se saadaan sekaisin. ;)
9999
100100## Code Templates
101101
102102Code Templates muuntaa tietyn tunnisteen tekstiksi tai koodin palaseksi.
103103
104-Code Templates oletuspikanäppäin on <span class="kbd">Ctrl</span>+<span class="kbd">J</span>. Kun kirjoittaa sopivan tunnisteen, painaa <span class="kbd">Ctrl</span>+<span class="kbd">J</span> niin tunniste korvataan tunnisteella määritellyllä tekstillä. Code Templates voidaan määritellä Työkalut -\> Optiot -\> CodeTools.
104+Code Templates oletuspikanäppäin on `Ctrl`+`J`. Kun kirjoittaa sopivan tunnisteen, painaa `Ctrl`+`J` niin tunniste korvataan tunnisteella määritellyllä tekstillä. Code Templates voidaan määritellä Työkalut -\> Optiot -\> CodeTools.
105105
106-Esim: Kirjoita teksti 'classf', jätä kursori kirjaimen 'f' oikealle puolen ja paina <span class="kbd">Ctrl</span>+<span class="kbd">J</span>. Teksti 'classf' korvautuu riveillä
106+Esim: Kirjoita teksti 'classf', jätä kursori kirjaimen 'f' oikealle puolen ja paina `Ctrl`+`J`. Teksti 'classf' korvautuu riveillä
107107
108108``` pascal
109109T = class(T)
110110private
111111
112112public
113113 constructor Create;
114114 destructor Destroy; override;
115115end;
116116```
117117
118-ja kursori on kirjaimen 'T' takana. Luettelo kaikista Code Template vaihtoehdoista saadaan sijoittamalla kohdistin välilyönnin perään (ei tunnisteeseen) ja painamalla <span class="kbd">Ctrl</span>+<span class="kbd">J</span>. Luettelo kaikista Code Template vaihtoehdoista ponnahtaa esiin. Käytä kursorinäppäimiä tai kirjoita joitain merkkejä valitaksesi. Painamalla <span class="kbd">Return</span> luodaan valittu malli ja <span class="kbd">Esc</span> sulkee ponnahdusikkunan.
118+ja kursori on kirjaimen 'T' takana. Luettelo kaikista Code Template vaihtoehdoista saadaan sijoittamalla kohdistin välilyönnin perään (ei tunnisteeseen) ja painamalla `Ctrl`+`J`. Luettelo kaikista Code Template vaihtoehdoista ponnahtaa esiin. Käytä kursorinäppäimiä tai kirjoita joitain merkkejä valitaksesi. Painamalla `Return` luodaan valittu malli ja `Esc` sulkee ponnahdusikkunan.
119119
120-Suurin ajan säästäjä on Code Template 'b'+<span class="kbd">Ctrl</span>+<span class="kbd">J</span> varatuille sanoille begin..end.
120+Suurin ajan säästäjä on Code Template 'b'+`Ctrl`+`J` varatuille sanoille begin..end.
121121
122122## Parametrivihjeet
123123
124124Parametrivihjeet näyttävät vihjeruutu, jossa on parametriluettelot kutsun parametrilistalle.
125125
126126Esimerkiksi
127127
128128``` pascal
129129 Canvas.FillRect(|);
130130```
131131
132-Aseta kursori sulkujen väliin ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">space</span>. Näyttöön tulee vihjeruutu, joka näyttää FillRectin parametrit.
132+Aseta kursori sulkujen väliin ja paina `Ctrl`+`Shift`+`space`. Näyttöön tulee vihjeruutu, joka näyttää FillRectin parametrit.
133133
134-<figure>
135-<img src="Parameterhints1.png" title="Parameterhints1.png" />
136-<figcaption>Parameterhints1.png</figcaption>
137-</figure>
134+![](/wiki-images/c/c8/Parameterhints1.png)
138135
139136Versiosta 0.9.31 asti on ollut jokaisen Parametrivihjeen oikealla puolella painike puuttuvien parametrien lisäämiseksi. Tämä kopioi parametrin nimet valitusta vihjeestä kohdistimen kohtaan.
140137
141-<figure>
142-<img src="Parameterhints2.png" title="Parameterhints2.png" />
143-<figcaption>Parameterhints2.png</figcaption>
144-</figure>
138+![](/wiki-images/4/48/Parameterhints2.png)
145139
146140Vihje: Käytä Variable Declaration Completion määrittääksesi muuttujia.
147141
148142> **Note:** Pikanäppäimen nimi on "Show code context".
149143
150144## Etsi kirjain kerrallaan
151145
152-Etsi kirjain kerrallaan muuttaa lähdekoodieditorin tilarivin. Kirjoita joitain kirjaimia ja editori etsii ja korostaa välittömästi kaikki niiden esiintymät tekstissä. Pikanäppäin on <span class="kbd">Ctrl</span>+<span class="kbd">e</span>.
146+Etsi kirjain kerrallaan muuttaa lähdekoodieditorin tilarivin. Kirjoita joitain kirjaimia ja editori etsii ja korostaa välittömästi kaikki niiden esiintymät tekstissä. Pikanäppäin on `Ctrl`+`e`.
153147
154-- Esimerkiksi painamalla <span class="kbd">e</span>. Se etsii ja korostaa kaikki 'e':n esiintymät.
155-- Sitten painetaan <span class="kbd">t</span>. Se etsii ja korostaa kaikki esiintymät "et" ja niin edelleen.
156-- Seuraavaan esiintymään voidaan siirtyä painamalla <span class="kbd">F3</span> (tai <span class="kbd">Ctrl</span>+<span class="kbd">e</span> kun ollaan haussa) ja edelliseen painamalla <span class="kbd">Shift</span>+<span class="kbd">F3</span>.
157-- Backspace eli <span class="kbd">\<-</span> poistaa edellisen merkin
158-- <span class="kbd">Return</span> lopettaa haun lisäämättä uutta riviä editoriin.
159-- Viimeistä hakua voidaan jatkaa painamalla <span class="kbd">Ctrl</span>+<span class="kbd">e</span> -näppäintä toisen kerran välittömästi sen jälkeen, kun olet käynnistänyt etsinnän painamalla <span class="kbd">Ctrl</span>+<span class="kbd">e</span>. Toisin sanoen hakutermi on vielä tyhjä.
160-- Liittäminen <span class="kbd">Ctrl</span>+<span class="kbd">V</span> liittää tekstin leikepöydältä nykyiseen hakutekstiin (Ollut Lazarus versiosta 0.9.27 lähtien).
148+- Esimerkiksi painamalla `e`. Se etsii ja korostaa kaikki 'e':n esiintymät.
149+- Sitten painetaan `t`. Se etsii ja korostaa kaikki esiintymät "et" ja niin edelleen.
150+- Seuraavaan esiintymään voidaan siirtyä painamalla `F3` (tai `Ctrl`+`e` kun ollaan haussa) ja edelliseen painamalla `Shift`+`F3`.
151+- Backspace eli `<-` poistaa edellisen merkin
152+- `Return` lopettaa haun lisäämättä uutta riviä editoriin.
153+- Viimeistä hakua voidaan jatkaa painamalla `Ctrl`+`e` -näppäintä toisen kerran välittömästi sen jälkeen, kun olet käynnistänyt etsinnän painamalla `Ctrl`+`e`. Toisin sanoen hakutermi on vielä tyhjä.
154+- Liittäminen `Ctrl`+`V` liittää tekstin leikepöydältä nykyiseen hakutekstiin (Ollut Lazarus versiosta 0.9.27 lähtien).
161155
162156### Vihje: Nopea haku tunnistimella käyttäen etsi kirjain kerrallaan toimintoa
163157
164158- Aseta tekstikohdistin tunnisteeseen (älä valitse mitään)
165-- Paina <span class="kbd">Ctrl</span>+<span class="kbd">C</span>. Lähdekoodieditori valitsee tunnuksen ja kopioi sen leikepöydälle
166-- Paina <span class="kbd">Ctrl</span>+<span class="kbd">E</span> aloittaaksesi etsi kirjain kerrallaan toiminnon.
167-- Paina <span class="kbd">Ctrl</span>+<span class="kbd">V</span> joka liittää tekstin leikepöydältä nykyiseen hakutekstiin.
168-- Käyttämällä <span class="kbd">F3</span> ja <span class="kbd">Shift</span>+<span class="kbd">F3</span> siirtyäksesi nopeasti seuraavaan / edelliseen.
159+- Paina `Ctrl`+`C`. Lähdekoodieditori valitsee tunnuksen ja kopioi sen leikepöydälle
160+- Paina `Ctrl`+`E` aloittaaksesi etsi kirjain kerrallaan toiminnon.
161+- Paina `Ctrl`+`V` joka liittää tekstin leikepöydältä nykyiseen hakutekstiin.
162+- Käyttämällä `F3` ja `Shift`+`F3` siirtyäksesi nopeasti seuraavaan / edelliseen.
169163- Lopeta haku painamalla mitä tahansa näppäintä (esimerkiksi kohdistinta vasemmalle tai oikealle).
170164
171165## Syncro Edit
172166
173167Syncro Edit:llä voidaan muokata samanaikaisesti kaikkia sanojen esiintymiä (synkronoitu). Yksinkertaisesti voidaan muokata sanaa yhdessä paikassa ja kun sitä muutetaan niin kaikki muut sanan tapahtumat päivittyvät.
174168
175169Syncro Edit toimii kaikkien valitun alueen sanoilla:
176170
177171- Valitse tekstilohko
178-- Paina <span class="kbd">Ctrl</span>+<span class="kbd">J</span> tai klikkaa kuvaketta reunuksessa. (Tämä toimii vain, jos valittu sana esiintyy useamman kerran).
179-- Valitse muokattava sana <span class="kbd">tab</span> näppäimellä (jos valittu sana esiintyy useamman kerran)
172+- Paina `Ctrl`+`J` tai klikkaa kuvaketta reunuksessa. (Tämä toimii vain, jos valittu sana esiintyy useamman kerran).
173+- Valitse muokattava sana `tab` näppäimellä (jos valittu sana esiintyy useamman kerran)
180174- Muokkaa sanaa
181-- Lopeta painamalla <span class="kbd">Esc</span> näppäimellä
175+- Lopeta painamalla `Esc` näppäimellä
182176
183177Katso animoitu esimerkki [[New IDE features since|tästä]]
184178
185-> **Note:** <span class="kbd">Ctrl</span>+<span class="kbd">J</span> käytetään myös template edit:ssä. Se vaihtaa merkitystään, jos valitset jonkin tekstin.
179+> **Note:** `Ctrl`+`J` käytetään myös template edit:ssä. Se vaihtaa merkitystään, jos valitset jonkin tekstin.
186180
187181## Etsi sanan seuraava esiintymiskohta/ Etsi sanan edellinen esiintymiskohta
188182
189183Nämä kaksi funktiota löytyvät lähdekoodieditorin ponnahdusvalikosta
190184
191185- Lähdekoodieditori / ponnahdusvalikko / Etsi / Etsi sanan seuraava esiintymiskohta
192186- Lähdekoodieditori / ponnahdusvalikko / Etsi / Etsi sanan edellinen esiintymiskohta
193187
194188Näihin voidaan määrittää pikanäppäimet editorin asetuksissa.
195189
196190## Code Completion
197191
198-Code Completion löytyy IDE-valikosta Edit -\> Complete Code ja sen pikanäppäin on <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span>.
192+Code Completion löytyy IDE-valikosta Edit -\> Complete Code ja sen pikanäppäin on `Ctrl`+`Shift`+`C`.
199193
200-Delphi-käyttäjille: Delphi nimeää "code completion" funktioksi, joka näyttää tunnistetietojen luettelon kursorin kohdalla lähdekoodissa ( <span class="kbd">Ctrl</span>+<span class="kbd">Space</span> ). Lazaruksessa se on "Identifier completion".
194+Delphi-käyttäjille: Delphi nimeää "code completion" funktioksi, joka näyttää tunnistetietojen luettelon kursorin kohdalla lähdekoodissa ( `Ctrl`+`Space` ). Lazaruksessa se on "Identifier completion".
201195
202196Code Completion yhdistää useita tehokkaita toimintoja. esimerkkejä:
203197
204198- Class Completion: täydentää ominaisuuksia(property), lisää / päivittää metodien runkoja, lisää yksityisiä muuttujia ja yksityisiä käyttömetodeja
205199- Forward Procedure Completion: Lisää aliohjelmien runkoja
206200- Event Assignment Completion: Tapahtumien tekeminen ja lisää metodit määrittelyt ja niiden rungot
207201- Variable Declaration Completion: lisää paikalliset muuttujan määrittelyt
208202- Procedure Call Completion: Lisää uusia aliohjelmia
209203- Reversed procedure completion: Lisää aliohjelman määrittelyn
210204- Reversed Class Completion: Lisää metodien määrittelyn
211205
212206Mikä toiminto on käytössä, riippuu kohdistimen sijainnista editorissa ja sitä selitetään alla.
213207
214-Code Completion löytyy IDE-valikosta Edit -\> Complete Code ja sen pikanäppäin on <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span>.
208+Code Completion löytyy IDE-valikosta Edit -\> Complete Code ja sen pikanäppäin on `Ctrl`+`Shift`+`C`.
215209
216210### Class Completion
217211
218212Tehokkain koodin täydentäjä ominaisuus on "Class Completion". Kun kirjoitetaan luokkaa (class) johon lisätään metodeja ja ominaisuuksia niin Code Completion lisää metodien toteutuksen rungot, ominaisuuksien käyttörutiinit / muuttujat ja yksityiset muuttujat.
219213
220214Esimerkiksi: Luo luokka eli class (Katso Code Templates jonka avulla voidaan säästää kirjoittamistyötä):
221215
222216``` pascal
223217TExample = class(TObject)
224218public
225219 constructor Create;
226220 destructor Destroy; override;
227221end;
228222```
229223
230-Aseta kohdistin johonkin kohtaan luokkaan ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span>. Tämä luo metodien puuttuvat rungot ja siirtää kohdistimen ensimmäiselle luodulle metodin rungolle, joten voidaan aloittaa luokan koodin kirjoittaminen:
224+Aseta kohdistin johonkin kohtaan luokkaan ja paina `Ctrl`+`Shift`+`C`. Tämä luo metodien puuttuvat rungot ja siirtää kohdistimen ensimmäiselle luodulle metodin rungolle, joten voidaan aloittaa luokan koodin kirjoittaminen:
231225
232226``` pascal
233227{ TExample }
234228
235229constructor TExample.Create;
236230begin
237231 |
238232end;
239233
240234destructor TExample.Destroy;
241235begin
242236 inherited Destroy;
243237end;
244238```
245239
246240> **Note:** Merkki '\|' on kohdistin eikä sitä lisätä.
247241
248-Vihje: On mahdollista siirtyä metodin ja sen rungon välillä <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">Up</span>.
242+Vihje: On mahdollista siirtyä metodin ja sen rungon välillä `Ctrl`+`Shift`+`Up`.
249243
250244Nähdään, että IDE lisäsi myös 'inherited Destroy' kutsun. Tämä tehdään, jos luokan määritelmässä on '[[Override|override]]' avainsana.
251245
252246Nyt lisätään metodi DoSomething:
253247
254248``` pascal
255249TExample = class(TObject)
256250public
257251 constructor Create;
258252 procedure DoSomething(i: integer);
259253 destructor Destroy; override;
260254end;
261255```
262256
263-Sitten paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> ja IDE lisää
257+Sitten paina `Ctrl`+`Shift`+`C` ja IDE lisää
264258
265259``` pascal
266260procedure TExample.DoSomething(i: integer);
267261begin
268262 |
269263end;
270264```
271265
272266Nähdään että uusi metodin runko on sijoitettu Create ja Destroy -toimintojen väliin aivan kuten luokkamäärittelyssä. Tällä tavoin rungot pitävät saman loogisen järjestyksen kuin on määritetty. Lisäyskäytäntö voidaan määrittää Työkalut\> Asetukset -\> Codetools -\> Code Creation.
273267
274268**Täydennä ominaisuuksilla**\
275269Lisää ominaisuus AnInteger:
276270
277271``` pascal
278272TExample = class(TObject)
279273public
280274 constructor Create;
281275 procedure DoSomething(i: integer);
282276 destructor Destroy; override;
283277 property AnInteger: Integer;
284278end;
285279```
286280
287-Paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> jolloin saadaan:
281+Paina `Ctrl`+`Shift`+`C` jolloin saadaan:
288282
289283``` pascal
290284procedure TExample.SetAnInteger(const AValue: integer);
291285begin
292286 |if FAnInteger=AValue then exit;
293287 FAnInteger:=AValue;
294288end;
295289```
296290
297-code completion on lisännyt kirjoitusoikeuden muokkaajan ja lisännyt yleistä koodia. Siirry luokalle painamalla <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">Up</span> nähdäksesi uuden luokan:
291+code completion on lisännyt kirjoitusoikeuden muokkaajan ja lisännyt yleistä koodia. Siirry luokalle painamalla `Ctrl`+`Shift`+`Up` nähdäksesi uuden luokan:
298292
299293``` pascal
300294TExample = class(TObject)
301295private
302296 FAnInteger: integer;
303297 procedure SetAnInteger(const AValue: integer);
304298public
305299 constructor Create;
306300 procedure DoSomething(i: integer);
307301 destructor Destroy; override;
308302 property AnInteger: integer read FAnInteger write SetAnInteger;
309303end;
310304```
311305
312306Ominaisuutta laajennettiin Read (luku) ja Write (kirjoitus)-ominaisuuden avulla. Luokka sai uuden 'private' osion johon tuli muuttuja "FAnInteger" ja metodi "SetAnInteger". Yleisen Delphi-tyylisen käytännön mukaan yksityisiin muuttujiin lisätään 'F' kirjain ja kirjoitusmetodiin 'Set'. Tätä ominaisuutta voidaan muuttaa Työkalut -\> Valinnat\> Codetools -\> Code Creation.
313307
314308Luodaan property:n vain luku (read) :
315309
316310``` pascal
317311property PropName: PropType read;
318312```
319313
320314Laajennetaan
321315
322316``` pascal
323317property PropName: PropType read FPropName;
324318```
325319
326320Luodaan property:n vain kirjoitus (write) :
327321
328322``` pascal
329323property PropName: PropType write;
330324```
331325
332326Laajennetaan
333327
334328``` pascal
335329property PropName: PropType write SetPropName;
336330```
337331
338332Luodaan property:n vain luku (read) ja lukumetodi:
339333
340334``` pascal
341335property PropName: PropType read GetPropName;
342336```
343337
344338Säilytetään ja GetPropName-funktio lisätään:
345339
346340``` pascal
347341function GetpropName: PropType;
348342```
349343
350344Luodaan property jossa on stored määrite:
351345
352346``` pascal
353347property PropName: PropType stored;
354348```
355349
356350Laajennetaan
357351
358352``` pascal
359353property PropName: PropType read FPropName write SetPropName stored PropNameIsStored;
360354```
361355
362356Koska stored käytetään tietovirtojen lukemiseen ja kirjoittamiseen, ne myös lisätään automaattisesti.
363357
364358Vihje: Identifier completion tunnistaa myös puutteelliset ominaisuudet ja ehdottaa oletusnimiä. Esimerkiksi:
365359
366360``` pascal
367361property PropName: PropType read |;
368362```
369363
370-Aseta kohdistin yksi välilyönti read-avainsanan taakse ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Space</span>. Se antaa muuttujan "FPropName" ja aliohjelman "SetPropName".
364+Aseta kohdistin yksi välilyönti read-avainsanan taakse ja paina `Ctrl`+`Space`. Se antaa muuttujan "FPropName" ja aliohjelman "SetPropName".
371365
372366### Forward Procedure Completion
373367
374368"Forward Procedure Completion" on osa Code Completion ja lisää aliohjelman rungon. Sitä käytetään, kun kohdistin on aliohjelman esittelyssä. It is invoked, when the cursor is on a forward defined procedure.
375369
376370Esimerkiksi: Lisätään uusi aliohjelma interface osioon:
377371
378372``` pascal
379373procedure DoSomething;
380374```
381375
382-Aseta kohdistin sille ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span>. Se luo toteutusosassa (implementation):
376+Aseta kohdistin sille ja paina `Ctrl`+`Shift`+`C`. Se luo toteutusosassa (implementation):
383377
384378``` pascal
385379procedure DoSomething;
386380begin
387381 |
388382end;
389383```
390384
391-Vihje: Voidaan siirtyä aliohjelman esittelyn ja sen rungon välillä painamalla<span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">Up</span>.
385+Vihje: Voidaan siirtyä aliohjelman esittelyn ja sen rungon välillä painamalla`Ctrl`+`Shift`+`Up`.
392386
393387Uusi aliohjelman runko lisätään luokkametodien eteen. Jos rajapinnassa on jo joitain aliohjelmia, IDE yrittää säilyttää järjestyksen. Esimerkiksi:
394388
395389``` pascal
396390procedure Proc1;
397391procedure Proc2; // new proc
398392procedure Proc3;
399393```
400394
401395Jos aliohjelmien Proc1: n ja Proc3: n rungot ovat jo olemassa, niin Proc2 runko lisätään Proc1: n ja Proc3: n rungon väliin. Tämä toiminto voidaan asettaa Työkalut -\> Valinnat -\> Codetools -\> Code Creation.
402396
403397Useita aliohjelmia:
404398
405399``` pascal
406400procedure Proc1_Old; // runko on jo olemassa
407401procedure Proc2_New; // runkoa ei ole vielä
408402procedure Proc3_New; // "
409403procedure Proc4_New; // "
410404procedure Proc5_Old; // runko on jo olemassa
411405```
412406
413407Code Completion lisää kaikki kolme (3) aliohjelman runkoa (Proc2_New, Proc3_New, Proc4_New).
414408
415409Miksi kutsua "Forward Procedure Completion"?
416410
417411Koska se ei toimi vain interface osiossa määriteltyjen aliohjelmien, vaan myös "forward" -määritteen kanssa. Ja koska codetools käsittelee interface osiossa olevia aliohjelmia niin, että niillä on implisiittinen 'forward' -määrite.
418412
419413### Event Assignment Completion
420414
421415"Event Assignment Completion" on osa Code Completion:a. Se täydentää yhden tapahtuman := \| lauseen. Sitä kutsutaan, kun kohdistin on järjestetty tapahtumalle.
422416
423417`completes a single Event:=| statement. It is invoked, when the cursor is behind an assignment to an event.`
424418
425419Esimerkiksi: Kirjoita lomakkeen FormCreate-tapahtumaan rivi 'OnPaint:=':
426420
427421``` pascal
428422procedure TForm1.Form1Create(Sender: TObject);
429423begin
430424 OnPaint:=|
431425end;
432426```
433427
434-Kursorin paikka on merkitty '\|' -kirjaimella eikä kyseistä kirjainta kirjoiteta. Code completion kutsutaan painamalla <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span>. Lause täydennetään
428+Kursorin paikka on merkitty '\|' -kirjaimella eikä kyseistä kirjainta kirjoiteta. Code completion kutsutaan painamalla `Ctrl`+`Shift`+`C`. Lause täydennetään
435429
436430``` pascal
437431OnPaint:=@Form1Paint;
438432```
439433
440434ja uusi metodi Form1Paint lisätään TForm1 luokkaan. Tällöin luokka valmistuu ja saadaan myös:
441435
442436``` pascal
443437procedure TForm1.Form1Paint(Sender: TObject);
444438begin
445439 |
446440end;
447441```
448442
449443Tämä toimii samalla tavoin kuin lisätään menetelmiä komponenttimuokkaimella.
450444
451445> **Note:** Kursori on sijoitettava heti ':=' saa arvokseen operatorin jälkeen. Jos kursori sijoitetaan osoittamaan esim. OnPaint tunnisteeseen niin koodin suorittaminen viittaa "Local Variable Completion", joka epäonnistuu, koska OnPaint on jo määritetty.
452446
453447Vinkit:\
454448*Uuden metodin oletusarvoinen näkyvyys voidaan valita Työkalut / Asetukset / Codetools / Luokan täydennys / Default section of methods (versiosta 1.8 lähtien)
455449
456450- Uuden metodin nimen voi määrittää itse. Esimerkiksi:
457451
458452``` pascal
459453 OnPaint:=@ThePaintMethod;
460454```
461455
462456Versiosta 0.9.31 Lazarus täydentää aliohjelman parametreja. Esimerkiksi
463457
464458``` pascal
465459procedure TForm1.FormCreate(Sender: TObject);
466460var
467461 List: TList;
468462begin
469463 List:=TList.Create;
470464 List.Sort(@MySortFunction|);
471465end;
472466```
473467
474-Sijoita kursori 'MySortFunction' kohtaan ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> niin saadaan uusi aliohjelma:
468+Sijoita kursori 'MySortFunction' kohtaan ja paina `Ctrl`+`Shift`+`C` niin saadaan uusi aliohjelma:
475469
476470``` pascal
477471function MySortFunction(Item1, Item2: Pointer): Integer;
478472begin
479473 |
480474end;
481475
482476procedure TForm1.FormCreate(Sender: TObject);
483477var
484478 List: TList;
485479begin
486480 List:=TList.Create;
487481 List.Sort(@MySortFunction);
488482end;
489483```
490484
491485### Variable Declaration Completion
492486
493487"Variable Declaration Completion" on osa Code Completion:a. Se lisää paikallisen muuttujan määritelmän tunnisteelle := Term; lause. Sitä kutsutaan, kun kohdistin on osoittaa parametria tai tunnistetta.
494488
495489Esimerkiksi:
496490
497491``` pascal
498492procedure TForm1.Form1Create(Sender: TObject);
499493begin
500494 i:=3;
501495end;
502496```
503497
504-Kursorin paikka on tunnisteessa 'i' tai sen jälkeen. Painamalla <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> saadaan:
498+Kursorin paikka on tunnisteessa 'i' tai sen jälkeen. Painamalla `Ctrl`+`Shift`+`C` saadaan:
505499
506500``` pascal
507501procedure TForm1.Form1Create(Sender: TObject);
508502var
509503 i: Integer;
510504begin
511505 i:=3;
512506end;
513507```
514508
515509Toiminto ensin tarkastaa onko tunnistetta 'i' jo määritelty. Jos sitä ei ole niin lisää määrittelyn 'var i: integer;'. Tunnisteen tyyppi arvatellaan ": =" operaattorista. Kokonaisluvun, kuten 3 oletustyyppinä on Integer.
516510
517511Toinen esimerkki:
518512
519513``` pascal
520514type
521515 TWhere = (Behind, Middle, InFront);
522516
523517 procedure TForm1.Form1Create(Sender: TObject);
524518 var
525519 a: array[TWhere] of char;
526520 begin
527521 for Where:=Low(a) to High(a) do writeln(a[Where]);
528522 end;
529523```
530524
531-Kursorin paikka on 'Where'-sanan kohdalla ja painetaan <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> niin saadaan:
525+Kursorin paikka on 'Where'-sanan kohdalla ja painetaan `Ctrl`+`Shift`+`C` niin saadaan:
532526
533527``` pascal
534528 procedure TForm1.Form1Create(Sender: TObject);
535529 var
536530 a: array[TWhere] of char;
537531 Where: TWhere;
538532 begin
539533 for Where:=Low(a) to High(a) do writeln(a[Where]);
540534 end;
541535```
542536
543537Lazarus on versiosta 0.9.11 lähtien myös täydentänyt parametreja. Esimerkiksi
544538
545539``` pascal
546540 procedure TForm1.FormPaint(Sender: TObject);
547541 begin
548542 with Canvas do begin
549543 Line(x1,y1,x2,y2);
550544 end;
551545 end;
552546```
553547
554-Sijoita kursori 'x1' ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> niin saadaan:
548+Sijoita kursori 'x1' ja paina `Ctrl`+`Shift`+`C` niin saadaan:
555549
556550``` pascal
557551 procedure TForm1.FormPaint(Sender: TObject);
558552 var
559553 x1: integer;
560554 begin
561555 with Canvas do begin
562556 Line(x1,y1,x2,y2);
563557 end;
564558 end;
565559```
566560
567561Lazarus on versiosta 0.9.31 täydentänyt osoittimen parametrit. Esimerkiksi
568562
569563``` pascal
570564 procedure TForm1.FormCreate(Sender: TObject);
571565 begin
572566 CreateIconIndirect(@IconInfo);
573567 end;
574568```
575569
576-Sijoita kursori 'IconInfo':n ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> niin saadaan:
570+Sijoita kursori 'IconInfo':n ja paina `Ctrl`+`Shift`+`C` niin saadaan:
577571
578572``` pascal
579573 procedure TForm1.FormCreate(Sender: TObject);
580574 var
581575 IconInfo: TIconInfo;
582576 begin
583577 CreateIconIndirect(@IconInfo);
584578 end;
585579```
586580
587-Kaikissa edellä olevissa esimerkeissä voit käyttää <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">X</span>-näppäintä näyttääksesi koodin luomisen valintaikkunan, jossa voit asettaa lisää vaihtoehtoja.
581+Kaikissa edellä olevissa esimerkeissä voit käyttää `Ctrl`+`Shift`+`X`-näppäintä näyttääksesi koodin luomisen valintaikkunan, jossa voit asettaa lisää vaihtoehtoja.
588582
589583### Procedure Call Completion
590584
591585Code completion voi luoda uuden aliohjelman sen kutsusta.
592586
593587Oletataan että kirjoitettiin vain lause "DoSomething(Width);"
594588
595589``` pascal
596590procedure SomeProcedure;
597591var
598592 Width: integer;
599593begin
600594 Width:=3;
601595 DoSomething(Width);
602596end;
603597```
604598
605-Sijoita kursori tekstiin "DoSomething" ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> niin saadaan:
599+Sijoita kursori tekstiin "DoSomething" ja paina `Ctrl`+`Shift`+`C` niin saadaan:
606600
607601``` pascal
608602procedure DoSomething(aWidth: LongInt);
609603begin
610604
611605end;
612606
613607procedure SomeProcedure;
614608var
615609 Width: integer;
616610begin
617611 Width:=3;
618612 DoSomething(Width);
619613end;
620614```
621615
622616Se ei vielä luo funktioita tai metodeja.
623617
624618### Reversed Class Completion
625619
626620"Reversed Class Completion" on osa **Code Completion** toimintaa. Se lisää yksityisen metodin ilmoituksen nykyiselle metodiryhmälle. Sitä kutsutaan, kun kursori on metodin rungossa, jota ei ole vielä määritelty luokassa. Tämä ominaisuus on saatavana Lazarus 0.9.21 versiosta alkaen.
627621
628622Esimerkiksi:
629623
630624``` pascal
631625 procedure TForm1.DoSomething(Sender: TObject);
632626 begin
633627 end;
634628```
635629
636-DoSomething-metodia ei ole vielä määritelty TForm1: ssä. Paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> ja IDE lisää aliohjelman "procedure DoSomething (Sender: TObject);" TForm1: n yksityisiin metodeihin.
630+DoSomething-metodia ei ole vielä määritelty TForm1: ssä. Paina `Ctrl`+`Shift`+`C` ja IDE lisää aliohjelman "procedure DoSomething (Sender: TObject);" TForm1: n yksityisiin metodeihin.
637631
638632Delphi käyttäjille: Class completion toimii Lazaruksen mukaan aina yhdellä tavalla: Luokan käyttöliittymästä toteutukseen tai taaksepäin / päinvastoin luokan toteutuksesta käyttöliittymään. Delphi kutsuu aina molempiin suuntiin. Delphi-tapa on haitta, että jos on typo se luo helposti uuden tynkä metodin ilman huomaamatta.
639633
640634### Kommentit ja Code Completion
641635
642636Code completion yrittää pitää kommentteja, johon ne kuuluvat. Esimerkiksi:
643637
644638``` pascal
645639 FList: TList; // list of TComponent
646640 FInt: integer;
647641```
648642
649643Kun lisätään uusi muuttuja FListin ja FInt: n välillä, kommentti pidetään FList-rivillä. Sama pätee myös
650644
651645``` pascal
652646 FList: TList; { list of TComponent
653647 Tämä on usean rivin kommentti, alkaen
654648 FList-riviltä, joten codetools olettaa sen kuuluvan
655649 FLIst-riviin ja ei riko tätä
656650 suhdetta. Koodi lisätään kommentin taakse. }
657651 FInt: integer;
658652```
659653
660654Jos kommentti alkaa seuraavalla rivillä, sitä käsitellään kuin se kuuluu alla olevaan koodiin. Esimerkiksi:
661655
662656``` pascal
663657 FList: TList; // list of TComponent
664658 { Tämä kommentti kuuluu alla olevaan lauseeseen.
665659 Uusi koodi lisätään tämän kommentin yläpuolelle ja
666660 FList-rivin kommentin taakse. }
667661 FInt: integer;
668662```
669663
670664### Metodin päivitys
671665
672666Normaalisti luokan täydennys lisää kaikki puuttuvat metodin rungot (Ollut versiosta 0.9.27 lähtien). Jos täsmälleen yksi metodi eroaa luokan ja rungon välillä, niin metodin runko päivitetään. Esimerkiksi: On metodi DoSomething *DoSomething*.
673667
674668``` pascal
675669 public
676670 procedure DoSomething;
677671 end;
678672
679673procedure TForm.DoSomething;
680674begin
681675end;
682676```
683677
684678Nyt lisätään parameteri:
685679
686680``` pascal
687681 public
688682 procedure DoSomething(i: integer);
689683 end;
690684```
691685
692-Code Completion kutsuminen (<span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span>) päivittää metodin rungon ja uusi parametri kopioidaan:
686+Code Completion kutsuminen (`Ctrl`+`Shift`+`C`) päivittää metodin rungon ja uusi parametri kopioidaan:
693687
694688``` pascal
695689procedure TForm.DoSomething(i: integer);
696690begin
697691end;
698692```
699693
700694## Refactoring
701695
702696### Käännä sijoitus päinvastaiseksi
703697
704698Abstract
705699
706700"Käännä sijoitus päinvastaiseksi" ottaa valitut pascal-lauseet ja invertoi kaikki tämän koodin tehtävät. Tämä työkalu on hyödyllinen "tallentaa" -koodin muuttamiseksi "lataukseksi" ja käänteiseksi.
707701
708702Esimerkki:\
709703
710704``` pascal
711705procedure DoSomething;
712706begin
713707 AValueStudio:= BValueStudio;
714708 AValueAppartment :=BValueAppartment;
715709 AValueHouse:=BValueHouse;
716710end;
717711```
718712
719713Valitaan rivit, joissa on tehtäviä (sanojen begin ja end väliset) ja käännä sijoitus päinvastaiseksi. Kaikki tehtävät käännetään ja identiteetti lisätään automaattisesti. Esimerkiksi:
720714
721715Tulos:
722716
723717``` pascal
724718procedure DoSomething;
725719begin
726720 BValueStudio := AValueStudio;
727721 BValueAppartment := AValueAppartment;
728722 BValueHouse := AValueHouse;
729723end;
730724```
731725
732726### Kapseloi valinta
733727
734728Valitse jokin teksti ja ota "Kapseloi valinta" käyttöön. Avautuu valintaikkuna, jossa voidaan valita, haluaako valinnan **try..finally** tai monista muista tavoista .
735729
736730### Vaihda tunnisteen nimeä
737731
738732Aseta kohdistin tunnisteeseen ja valitse "Vaihda tunnisteen nimeä". Näyttöön tulee valintaikkuna, jossa voit määrittää hakualueen ja uuden nimen.
739733
740734- Se nimeää kaikki esiintymät uudelleen ja vain ne, jotka todella kuuluvat tähän määritykseen. Tämä tarkoittaa, ettei se koske toisten määrityksten osalla olevia samaa nimeä sisältäviä osia.
741735- Se tarkistaa ensin nimen ristiriidat.
742736- Rajoitukset: Se toimii vain pascal-lähdekoodeilla, ei vielä nimeä tiedostoja eikä muokkaa lfm / lrs-tiedostoja eikä lazdoc-tiedostoja.
743737
744738### Etsi viittauksia tunnisteeseen
745739
746740Aseta kohdistin tunnisteeseen ja ja valitse "Etsi viittauksia tunnisteeseen". Näyttöön tulee valintaikkuna, jossa voidaan määrittää hakualue. IDE etsii sitten kaikki esiintymät ja vain ne, jotka todella käyttävät tätä määritystä. Tämä tarkoittaa sitä, että siinä ei näytetä muita samannimisiä sanoja.
747741
748742### Abstraktit metodit
749743
750744Tämä ominaisuus luetteloi ja täydentää automaattisesti virtuaalisia, abstrakteja menetelmiä, jotka on toteutettava. Aseta kohdistin luokan ilmoitukseen ja valitse tämä. Jos abstrakteja menetelmiä puuttuu, näkyviin tulee valintaikkuna. Valitse toteutettavat menetelmät ja IDE luo "tynkämetodin". Lazarus 1.3 versiosta lähtien se lisää myös puuttuvat luokan rajapinnat (*class interface*) .
751745
752746### Extract Procedure
753747
754748Katso [[IDE Window: Extract Procedure|Extract Procedure]].
755749
756750## Etsi määritys
757751
758752Aseta kohdistin tunnisteeseen ja tee 'Etsi määritys'. Sitten se etsii tämän tunnisteen määrityksen, avaa tiedoston ja siirtyy siihen. Jos kohdistin on jo määrityksessä, se siirtyy edelliseen määritykseen samalla nimellä. Tämä mahdollistaa uudelleenmäärittelyjen ja ohitusten (override9 löytymisen.
759753
760754Jokainen löydettävä määrittely asettaa hyppypisteen. Tämä tarkoittaa sitä, että se hyppää etsimällä määritykseen ja hyppää helposti takaisin Etsi -\> Hyppää takaisin.
761755
762756Delphissä on joitain eroja: codetools toimivat lähdekoodissa normaalien pascal-sääntöjen jälkeen, eikä käytä kääntäjän tuloksen käyttöä. Kääntäjä palauttaa lopullisen tyypin. Codetools näkee lähdekoodin ja kaikki sen väliset vaiheet. Esimerkiksi:
763757
764758*Visible* property on ensin määritelty *TControl* (controls.pp), sitten se määritellään uudelleen TCustomForm:ssa ja lopuksi uudelleen TForm:ssa. Kutsu "Etsi Visible:n määritys" tuo ensin näkyviin Visible:n TForm:ssa. Sitten voidaan hakea "Etsi Visible:n määritys" uudelleen joka siirtyy Visible:n TCustomForm:ssa ja seuraava uudelleen haku siirtyy TControl:n.
765759
766760Sama pätee myös tyypeille kuten *TColor*. Kääntäjälle se on yksinkertaisesti 'longint'. Mutta lähdekoodissa se on määritelty
767761
768762``` pascal
769763TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
770764TColor = TGraphicsColor;
771765```
772766
773767Ja sama **forward defined classes**: esimerkiksi *TControl*:ssa on yksityinen muuttuja
774768
775769``` pascal
776770FHostDockSite: TWinControl;
777771```
778772
779773Etsi määritys hyppää TWinControl eteenpäin määrittelyyn
780774
781775``` pascal
782776TWinControl = class;
783777```
784778
785779Ja se taas hyppää todelliseen toteutukseen
786780
787781``` pascal
788782TWinControl = class(TControl)
789783```
790784
791785Tällä tavoin voit etsiä jokaisen tunnisteen ja löytää jokaisen ylikuormituksen (overload).
792786
793787### Vihjeitä
794788
795-- Hyppää takaisin <span class="kbd">Ctrl</span>+<span class="kbd">H</span>.
789+- Hyppää takaisin `Ctrl`+`H`.
796790- Voidaan tarkastella / navigoida kaikki vierailut kohteet valikon kautta: Näytä -\> "hyppyhistoria"
797791- 5-näppäimellä hiirellä voidaan 2 ylimääräistä painiketta hyödyntää siirtyäksesi eteenpäin / taaksepäin vierailtujen kohteiden välillä
798792
799793[[IDE Window: EditorMouseOptionsAdvanced|advanced mouse options]] painikkeet voidaan uudelleen määrittää.
800794
801795## Identifier Completion
802796
803-"Identifier Completion" kutsutaan painamalla <span class="kbd">Ctrl</span>+<span class="kbd">space</span>. Se näyttää kaikki näkyvyyden tunnisteet. Esimerkiksi:
797+"Identifier Completion" kutsutaan painamalla `Ctrl`+`space`. Se näyttää kaikki näkyvyyden tunnisteet. Esimerkiksi:
804798
805799``` pascal
806800procedure TForm1.FormCreate(Sender: TObject);
807801begin
808802 |
809803end;
810804```
811805
812-Sijoita kursori *begin* ja *end* lauseiden väliin ja paina <span class="kbd">Ctrl</span>+<span class="kbd">space</span>. IDE/CodeTools analysoi nyt kaikki tavoitettavissa olevat koodit ja esittää luettelon kaikista löydetyistä tunnisteista. CodeTools välittää tulokset välimuistiin, joten toisen kerran kutsuminen on paljon nopeampaa.
806+Sijoita kursori *begin* ja *end* lauseiden väliin ja paina `Ctrl`+`space`. IDE/CodeTools analysoi nyt kaikki tavoitettavissa olevat koodit ja esittää luettelon kaikista löydetyistä tunnisteista. CodeTools välittää tulokset välimuistiin, joten toisen kerran kutsuminen on paljon nopeampaa.
813807
814808> **Note:** Delphi käyttäjille: Delphi kutsuu tätä nimellä *Code completion*.
815809
816810Joitakin tunnisteita, kuten 'Write', 'ReadLn', 'Low', 'SetLength', 'Self', 'Result', 'Copy' on rakennettu kääntäjään eikä niitä ole määritelty missään lähteessä. Identifier Completion on paljon näitä asioita myös sisäänrakennettu. Jos löytyy joku puuttuva, niin luo ominaisuuspyyntö bug tracker:n.
817811
818-*Identifier completion* ei täydennä kaikkia **avainsanoja**. Joten sitä ei voi käyttää täyttämään 'repe' sanaa 'repeat':ksi. Tälläisissä tapauksissa käytä<span class="kbd">Ctrl</span>+<span class="kbd">W</span> Word Completion tai <span class="kbd">Ctrl</span>+<span class="kbd">J</span> Code Templates. Versiosta 0.9.27 lähtien *identifier completion* täydentää jotain avainsanoja.
812+*Identifier completion* ei täydennä kaikkia **avainsanoja**. Joten sitä ei voi käyttää täyttämään 'repe' sanaa 'repeat':ksi. Tälläisissä tapauksissa käytä`Ctrl`+`W` Word Completion tai `Ctrl`+`J` Code Templates. Versiosta 0.9.27 lähtien *identifier completion* täydentää jotain avainsanoja.
819813
820814Identifier completion näyttää myös ne tunnisteet, jotka eivät ole yhteensopivia.
821815
822816### Täydennys sanan alkuosan mukaan
823817
824818Identifier completion voidaan kutsua kun on muutamia kirjaimia sanasta. Sijoita kursori sanaan. Jolloin kursorin vasemmalla puolella olevia merkkejä käytetään tunnisteiden etsimiseen. Esimerkiksi:
825819
826820``` pascal
827821procedure TForm1.FormCreate(Sender: TObject);
828822begin
829823 Ca|ption
830824end;
831825```
832826
833827Sanaluettelolaatikko näyttää vain tunnukset, jotka alkavat "Ca": lla (\| osoittaa kursorin sijainnin).
834828
835829### Näppäimet
836830
837831- Kirjain tai numero : lisää merkin lähdekoodieditoriin ja käytettyyn etuliitteeseen. Tämä päivittää luettelon.
838-- <span class="kbd">Backspace</span>: poistaa viimeisen merkin lähdekoodieditorista ja etuliitteestä. Päivittää luettelon
839-- <span class="kbd">Return</span>: vaihtaa koko sanan kohdistimella valittuun tunnisteeseen ja sulkee ponnahdusikkunan.
840-- <span class="kbd">Shift</span>+<span class="kbd">Return</span>: kuten *Return*, mutta korvaa vain sanan etuliitteen (kursorin vasemmanpuolinen osa)
841-- <span class="kbd">Up</span>/<span class="kbd">Down</span>: Siirtyy valintaluettelossa (ylöspäin/alaspäin)
842-- <span class="kbd">Esc</span>: sulkee ponnahdusikkunan ilman muutosta
843-- <span class="kbd">Tab</span>: täydentää etuliitteen seuraavaan valintaan. Esimerkiksi: Nykyinen etuliite on 'But' ja tunnuksen loppuun saattaminen näyttää vain 'Button1' ja 'Button1Click'. Tällöin <span class="kbd">Tab</span>:in painamisella saadaan etuliite 'Button1'.
844-- Muutoin: kuten <span class="kbd">Return</span> ja lisätään merkki lähdekoodieditoriin
832+- `Backspace`: poistaa viimeisen merkin lähdekoodieditorista ja etuliitteestä. Päivittää luettelon
833+- `Return`: vaihtaa koko sanan kohdistimella valittuun tunnisteeseen ja sulkee ponnahdusikkunan.
834+- `Shift`+`Return`: kuten *Return*, mutta korvaa vain sanan etuliitteen (kursorin vasemmanpuolinen osa)
835+- `Up`/`Down`: Siirtyy valintaluettelossa (ylöspäin/alaspäin)
836+- `Esc`: sulkee ponnahdusikkunan ilman muutosta
837+- `Tab`: täydentää etuliitteen seuraavaan valintaan. Esimerkiksi: Nykyinen etuliite on 'But' ja tunnuksen loppuun saattaminen näyttää vain 'Button1' ja 'Button1Click'. Tällöin `Tab`:in painamisella saadaan etuliite 'Button1'.
838+- Muutoin: kuten `Return` ja lisätään merkki lähdekoodieditoriin
845839
846840### Metodit
847841
848842Kun kohdistin on luokkamäärittelyssä ja identifier complete määrittää metodia esi-luokassa niin parametrit ja override avainsana lisätään automaattisesti. Esimerkiksi:
849843
850844``` pascal
851845TMainForm = class(TForm)
852846protected
853847 mous|
854848end;
855849```
856850
857851Täydennys **MouseDown** antaa:
858852
859853``` pascal
860854TMainForm = class(TForm)
861855protected
862856 procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X,
863857 Y: Integer); override;
864858end;
865859```
866860
867861### Ominaisuudet
868862
869863``` pascal
870864property MyInt: integer read |;
871865```
872866
873867Identifier completion näyttää **FMyInt** ja **GetMyInt**.
874868
875869``` pascal
876870property MyInt: integer write |;
877871```
878872
879873Identifier completion näyttää **FMyInt** ja **SetMyInt**.
880874
881875### Uses osio / käännösyksikön nimet
882876
883877Uses osiossa identifier completion näytetään kaikkien hakuehtojen yksiköiden tiedostonimet. Nämä näyttävät kaikki pienet kirjaimet (esim. *avl_tree* ), koska useimmilla käännösyksiköillä on pieniä tiedostonimiä. Valmistuttuaan se lisää käännösyksikön (esim. *AVL_Tree* ).
884878
885879### Lauseet
886880
887881``` pascal
888882procedure TMainForm.Button1Click(Sender: TObject);
889883begin
890884 ModalRe|;
891885end;
892886```
893887
894888tulee:
895889
896890``` pascal
897891procedure TMainForm.Button1Click(Sender: TObject);
898892begin
899893 ModalResult:=|;
900894end;
901895```
902896
903897### Kuvakkeet täydennysikkunassa
904898
905899Lazarus versiosta 1.9 lähtien on olemassa vaihtoehto, jolla näytetään kuvakkeita "tyyppien" sijaan täydennysikkunassa. Kuvassa nähdään nämä kuvakkeet:
906900
907-<figure>
908-<img src="ide_completion_icons.png" title="ide_completion_icons.png" />
909-<figcaption>ide_completion_icons.png</figcaption>
910-</figure>
901+![](/wiki-images/e/e6/Ide_completion_icons.png)
911902
912903## Word Completion
913904
914-*Word Completion* kutsutaan <span class="kbd">Ctrl</span>+<span class="kbd">W</span>. Se näyttää kaikki lähdekoodieditorissa olevat sanat ja sitä voidaan käyttää myös ei-pascal-lähdekoodeissa, kommenteissa ja avainsanoissa.
905+*Word Completion* kutsutaan `Ctrl`+`W`. Se näyttää kaikki lähdekoodieditorissa olevat sanat ja sitä voidaan käyttää myös ei-pascal-lähdekoodeissa, kommenteissa ja avainsanoissa.
915906
916907Muutoin se toimii samoin kuin identifier completion.
917908
918909## Siirry Include määrittelyyn
919910
920911"Siirry Include määrittelyyn" hyppää {\$ I filename} -lauseen, jossa käytetään nykyistä tiedostoa.
921912
922913## Julkaise projekti
923914
924915Luo kopion koko projektista. Jos halutaan lähettää jollekulle vain lähdekoodi ja kääntäjän asetukset niin tämä toiminto on ystäväsi.
925916
926917Tavallinen projektihakemisto sisältää paljon tietoa. Suurinta osaa sitä ei tarvitse julkaista: .lpi-tiedosto voi sisältää istuntotietoja (kuten suljettujen yksiköiden varmenteen sijainti ja kirjanmerkit) ja projektin hakemisto sisältää paljon .ppu, .o-tiedostoja ja suoritettavan tiedoston. Voidaan luoda lpi-tiedoston, jossa on vain perustiedot ja vain lähdekoodi sekä kaikki alihakemistot sisältävä "Publish Project".
927918
928919> **Note:** Versiosta 0.9.13 lähtien on uusi projektiasetus-vaihtoehto, jonka avulla voidaan tallentaa istunnon tiedot erilliseen tiedostoon tavallisesta .lpi-tiedostosta. Tämä uusi tiedosto päättyy .lps-laajennukseen ja sisältää vain istunnon tiedot, jotka jättävät .lpi-tiedoston paljon siistimmäksi.
929920
930921Valintaikkunassa voidaan määrittää suodattimen tiettyjen tiedostojen sisällyttämiseksi ja sulkemiseksi pois. Komennolla voidaan pakata tuotos yhteen arkistoon.
931922
932923## Huomautuksia näytettävistä vihjeistä
933924
934925Useilla kohdilla IDE näyttää vihjeitä tunnisteista. Esimerkiksi kun liikutetaan hiirtä tunnisteen päällä lähdekoodieditorissa ja odotetaan muutaman sekunti. Kun IDE näyttää vihjeenä tunnuksen, se etsii määrityksen ja kaikki sen esi-isät ja etsii kommentteja ja fpdoc-tiedostoja. On monia koodaustapoja ja monia kommentoitavia tyylejä. Monien yhteisten kommenttityylien tukemiseksi IDE käyttää seuraavia heuristiikkaa:
935926
936927### Comments shown in the hint
937928
938929Comments in front of a declaration, without empty line and not starting with the *\<* sign:
939930
940931``` pascal
941932var
942933 {Comment}
943934 Identifier: integer;
944935```
945936
946937Comments with the *\<* sign belong to the prior identifier.
947938
948939Comments behind an identifier on the same line:
949940
950941``` pascal
951942var
952943 identifier, // Comment
953944 other,
954945```
955946
956947Comments behind the definition on the same line:
957948
958949``` pascal
959950var
960951 identifier:
961952 char; // Comment
962953```
963954
964955An example for **\<** sign:
965956
966957``` pascal
967958const
968959 a = 1;
969960 //< comment for a
970961 b = 2;
971962 // comment for c
972963 c = 3;
973964```
974965
975966All three comment types are supported:
976967
977968``` pascal
978969 {Comment}(*Comment*)//Comment
979970 c = 1;
980971```
981972
982973### Comments not shown in the hint
983974
984975Comments starting with **\$** or **%** are ignored. For example *//% Hiddden*, *//\$ Hidden*, *(*\$ Hidden*)*.
985976
986977Comments in front separated with an empty line are treated as not specific to the following identifier. For example the following class header comment is not shown in the hint:
987978
988979``` pascal
989980type
990981 { TMyClass }
991982
992983 TMyClass = class
993984```
994985
995986The class header comments are created on class completion. You can turn this off in the *Options / Codetools / Class completion / Header comment for class*. If you want to show the header comment in the hint, just remove the empty line.
996987
997988The following comment will be shown for GL_TRUE, but not for GL_FALSE:
998989
999990``` pascal
1000991 // Boolean
1001992 GL_TRUE = 1;
1002993 GL_FALSE = 0;
1003994```
1004995
1005996## Quick Fixes
1006997
1007998Quick Fixes are menu items for specific compiler messages. They help you to quickly fix the problem. Select a message in the *Messages* window and right click, or right click in the source editor on the icon to the left.
1008999
10091000- Unit not found: remove from uses section
10101001- Unit not found: find unit in loaded packages and allow to auto add package dependency
10111002- Constructing a class "\$1" with abstract method "\$2": show dialog to override all abstract methods
10121003- Local variable "\$1" not used: remove definition
10131004- Circular unit reference between \$1 and \$2: show Unit Dependencies dialog with full path between the two units
10141005- Identifier not found: search via Code Browser
10151006- Identifier not found: search via Cody Dictionary (needs package [[Cody]])
10161007- Identifier not found: add local variable
10171008- Recompiling \$1, checksum changed for \$2: show a dialog with search paths and other information
10181009- IDE warning: other sources path of package %s contains directory...: open package
10191010- any hint, note, warning: add IDE directive {%H-}
10201011- any hint, note, warning: add compiler directive {\$warn id off} (since 1.7)
10211012- any hint, note, warning: add compiler option -vm\<messageid\>
10221013- Local variable "i" does not seem to be initialized: insert assignment (since 1.5)
10231014
10241015## Outline
10251016
10261017Tämä asetus sijaitsee IDEn asetukset ikkunassa, Editori - Näkymä - Merkintä ja osumat - Outline (global).
10271018
10281019Se korostaa Pascalin avainsanoja yhdistäen vastaavat begin - end parit. Tämä sallii isot sisäkkäiset lohkot Esimerkiksi vaikka tälläinen aliohjelman runko:
10291020
10301021``` pascal
10311022 with ADockObject do
10321023 begin
10331024 if DropAlign = alNone then
10341025 begin
10351026 if DropOnControl <> nil then
10361027 DropAlign := DropOnControl.GetDockEdge(DropOnControl.ScreenToClient(DragPos))
10371028 else
10381029 DropAlign := Control.GetDockEdge(DragTargetPos);
10391030 end;
10401031 PositionDockRect(Control, DropOnControl, DropAlign, FDockRect);
10411032 end;
10421033```
10431034
10441035Tuodaan korostaen esiin:
10451036
10461037- ulompi with-do-begin-end oranssin värisenä
10471038- seuraavan tason if-then-begin-end vihreän värisenä
10481039- sisempi if-then-else cyanin värisenä
10491040
1050-<figure>
1051-<img src="ide_outline.png" title="ide_outline.png" />
1052-<figcaption>ide_outline.png</figcaption>
1053-</figure>
1041+![](/wiki-images/3/3c/Ide_outline.png)
10541042
10551043---
10561044*From the Free Pascal wiki, page "Lazarus IDE Tools/fi", as it stood on 2020-02-18 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