Sign in Join
Wiki copytemporary

Lazarus IDE Tools/fi: what changed

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

Title: Lazarus IDE Tools/fi

OldNewLine
1+**[[Lazarus Faq|Lazarus]] IDE Tools** on [[Free Pascal]]- lähdekoodin jäsentämis- ja muokkaustyökalu, jota kutsutaan "codetoolsiksi".
2+
3+Tä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).
4+
5+Koska 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.
6+
7+## Yhteenvetoraportti IDEn-pikanäppäimestä
8+
9+| | |
10+|----|----|
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> |
21+
22+## Siirtyminen esittelyn ja toteuksen välillä
23+
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>.
25+
26+Esimerkiksi:
27+
28+``` pascal
29+interface
30+
31+procedure DoSomething; // Aliohjelman esittely
32+
33+implementation
34+
35+procedure DoSomething; // Aliohjelman määrittely
36+begin
37+end;
38+```
39+
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.
41+
42+Tämä toimii samanlailla myös luokan (class) metodin esittelyn ja toteutuksen välillä.
43+
44+Vihje: 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ä).
45+
46+Esimerkki aliohjelmasta joiden esittelyssä ja toteutuksessa on erilaiset parametrityypit:
47+
48+``` pascal
49+interface
50+
51+procedure DoSomething(p: char); // procedure definition
52+
53+implementation
54+
55+procedure DoSomething(p: string); // procedure body
56+begin
57+end;
58+```
59+
60+Siirtyminen toteuksen ja niiden esittelyjen välillä 'string' avainsana. Tätä voi käyttää kun haluaa uudelleen nimetä metodin ja/tai muuttaa parametrejä.
61+
62+Esimerkiksi: uudelleen nimetään 'DoSomething' -\> 'MakeIt':ksi:
63+
64+``` pascal
65+interface
66+
67+procedure MakeIt; // procedure definition
68+
69+implementation
70+
71+procedure DoSomething; // procedure body
72+begin
73+end;
74+```
75+
76+Kun 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ä.
77+
78+## Include Files
79+
80+Include 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.
81+
82+Toisin 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.
83+
84+Esimerkiksi: 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.
85+
86+Mutta 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ö.
87+
88+Niin 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
89+
90+``` pascal
91+{%mainunit yourunit.pas}
92+```
93+
94+tiedoston yourinclude.inc alkuun.
95+
96+Tällä mekanismilla on rajoituksia. Joihinkin tiedostoihin sisältyy kaksi tai useampia include tiedostoja. Esimerkiksi: lcl/include/winapih.inc.
97+
98+Se 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. ;)
99+
100+## Code Templates
101+
102+Code Templates muuntaa tietyn tunnisteen tekstiksi tai koodin palaseksi.
103+
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.
105+
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ä
107+
108+``` pascal
109+T = class(T)
110+private
111+
112+public
113+ constructor Create;
114+ destructor Destroy; override;
115+end;
116+```
117+
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.
119+
120+Suurin ajan säästäjä on Code Template 'b'+<span class="kbd">Ctrl</span>+<span class="kbd">J</span> varatuille sanoille begin..end.
121+
122+## Parametrivihjeet
123+
124+Parametrivihjeet näyttävät vihjeruutu, jossa on parametriluettelot kutsun parametrilistalle.
125+
126+Esimerkiksi
127+
128+``` pascal
129+ Canvas.FillRect(|);
130+```
131+
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.
133+
134+<figure>
135+<img src="Parameterhints1.png" title="Parameterhints1.png" />
136+<figcaption>Parameterhints1.png</figcaption>
137+</figure>
138+
139+Versiosta 0.9.31 asti on ollut jokaisen Parametrivihjeen oikealla puolella painike puuttuvien parametrien lisäämiseksi. Tämä kopioi parametrin nimet valitusta vihjeestä kohdistimen kohtaan.
140+
141+<figure>
142+<img src="Parameterhints2.png" title="Parameterhints2.png" />
143+<figcaption>Parameterhints2.png</figcaption>
144+</figure>
145+
146+Vihje: Käytä Variable Declaration Completion määrittääksesi muuttujia.
147+
148+> **Note:** Pikanäppäimen nimi on "Show code context".
149+
150+## Etsi kirjain kerrallaan
151+
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>.
153+
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).
161+
162+### Vihje: Nopea haku tunnistimella käyttäen etsi kirjain kerrallaan toimintoa
163+
164+- 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.
169+- Lopeta haku painamalla mitä tahansa näppäintä (esimerkiksi kohdistinta vasemmalle tai oikealle).
170+
171+## Syncro Edit
172+
173+Syncro 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.
174+
175+Syncro Edit toimii kaikkien valitun alueen sanoilla:
176+
177+- 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)
180+- Muokkaa sanaa
181+- Lopeta painamalla <span class="kbd">Esc</span> näppäimellä
182+
183+Katso animoitu esimerkki [[New IDE features since|tästä]]
184+
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.
186+
187+## Etsi sanan seuraava esiintymiskohta/ Etsi sanan edellinen esiintymiskohta
188+
189+Nämä kaksi funktiota löytyvät lähdekoodieditorin ponnahdusvalikosta
190+
191+- Lähdekoodieditori / ponnahdusvalikko / Etsi / Etsi sanan seuraava esiintymiskohta
192+- Lähdekoodieditori / ponnahdusvalikko / Etsi / Etsi sanan edellinen esiintymiskohta
193+
194+Näihin voidaan määrittää pikanäppäimet editorin asetuksissa.
195+
196+## Code Completion
197+
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>.
199+
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".
201+
202+Code Completion yhdistää useita tehokkaita toimintoja. esimerkkejä:
203+
204+- Class Completion: täydentää ominaisuuksia(property), lisää / päivittää metodien runkoja, lisää yksityisiä muuttujia ja yksityisiä käyttömetodeja
205+- Forward Procedure Completion: Lisää aliohjelmien runkoja
206+- Event Assignment Completion: Tapahtumien tekeminen ja lisää metodit määrittelyt ja niiden rungot
207+- Variable Declaration Completion: lisää paikalliset muuttujan määrittelyt
208+- Procedure Call Completion: Lisää uusia aliohjelmia
209+- Reversed procedure completion: Lisää aliohjelman määrittelyn
210+- Reversed Class Completion: Lisää metodien määrittelyn
211+
212+Mikä toiminto on käytössä, riippuu kohdistimen sijainnista editorissa ja sitä selitetään alla.
213+
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>.
215+
216+### Class Completion
217+
218+Tehokkain 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.
219+
220+Esimerkiksi: Luo luokka eli class (Katso Code Templates jonka avulla voidaan säästää kirjoittamistyötä):
221+
222+``` pascal
223+TExample = class(TObject)
224+public
225+ constructor Create;
226+ destructor Destroy; override;
227+end;
228+```
229+
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:
231+
232+``` pascal
233+{ TExample }
234+
235+constructor TExample.Create;
236+begin
237+ |
238+end;
239+
240+destructor TExample.Destroy;
241+begin
242+ inherited Destroy;
243+end;
244+```
245+
246+> **Note:** Merkki '\|' on kohdistin eikä sitä lisätä.
247+
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>.
249+
250+Nähdään, että IDE lisäsi myös 'inherited Destroy' kutsun. Tämä tehdään, jos luokan määritelmässä on '[[Override|override]]' avainsana.
251+
252+Nyt lisätään metodi DoSomething:
253+
254+``` pascal
255+TExample = class(TObject)
256+public
257+ constructor Create;
258+ procedure DoSomething(i: integer);
259+ destructor Destroy; override;
260+end;
261+```
262+
263+Sitten paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> ja IDE lisää
264+
265+``` pascal
266+procedure TExample.DoSomething(i: integer);
267+begin
268+ |
269+end;
270+```
271+
272+Nä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.
273+
274+**Täydennä ominaisuuksilla**\
275+Lisää ominaisuus AnInteger:
276+
277+``` pascal
278+TExample = class(TObject)
279+public
280+ constructor Create;
281+ procedure DoSomething(i: integer);
282+ destructor Destroy; override;
283+ property AnInteger: Integer;
284+end;
285+```
286+
287+Paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> jolloin saadaan:
288+
289+``` pascal
290+procedure TExample.SetAnInteger(const AValue: integer);
291+begin
292+ |if FAnInteger=AValue then exit;
293+ FAnInteger:=AValue;
294+end;
295+```
296+
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:
298+
299+``` pascal
300+TExample = class(TObject)
301+private
302+ FAnInteger: integer;
303+ procedure SetAnInteger(const AValue: integer);
304+public
305+ constructor Create;
306+ procedure DoSomething(i: integer);
307+ destructor Destroy; override;
308+ property AnInteger: integer read FAnInteger write SetAnInteger;
309+end;
310+```
311+
312+Ominaisuutta 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.
313+
314+Luodaan property:n vain luku (read) :
315+
316+``` pascal
317+property PropName: PropType read;
318+```
319+
320+Laajennetaan
321+
322+``` pascal
323+property PropName: PropType read FPropName;
324+```
325+
326+Luodaan property:n vain kirjoitus (write) :
327+
328+``` pascal
329+property PropName: PropType write;
330+```
331+
332+Laajennetaan
333+
334+``` pascal
335+property PropName: PropType write SetPropName;
336+```
337+
338+Luodaan property:n vain luku (read) ja lukumetodi:
339+
340+``` pascal
341+property PropName: PropType read GetPropName;
342+```
343+
344+Säilytetään ja GetPropName-funktio lisätään:
345+
346+``` pascal
347+function GetpropName: PropType;
348+```
349+
350+Luodaan property jossa on stored määrite:
351+
352+``` pascal
353+property PropName: PropType stored;
354+```
355+
356+Laajennetaan
357+
358+``` pascal
359+property PropName: PropType read FPropName write SetPropName stored PropNameIsStored;
360+```
361+
362+Koska stored käytetään tietovirtojen lukemiseen ja kirjoittamiseen, ne myös lisätään automaattisesti.
363+
364+Vihje: Identifier completion tunnistaa myös puutteelliset ominaisuudet ja ehdottaa oletusnimiä. Esimerkiksi:
365+
366+``` pascal
367+property PropName: PropType read |;
368+```
369+
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".
371+
372+### Forward Procedure Completion
373+
374+"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.
375+
376+Esimerkiksi: Lisätään uusi aliohjelma interface osioon:
377+
378+``` pascal
379+procedure DoSomething;
380+```
381+
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):
383+
384+``` pascal
385+procedure DoSomething;
386+begin
387+ |
388+end;
389+```
390+
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>.
392+
393+Uusi aliohjelman runko lisätään luokkametodien eteen. Jos rajapinnassa on jo joitain aliohjelmia, IDE yrittää säilyttää järjestyksen. Esimerkiksi:
394+
395+``` pascal
396+procedure Proc1;
397+procedure Proc2; // new proc
398+procedure Proc3;
399+```
400+
401+Jos 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.
402+
403+Useita aliohjelmia:
404+
405+``` pascal
406+procedure Proc1_Old; // runko on jo olemassa
407+procedure Proc2_New; // runkoa ei ole vielä
408+procedure Proc3_New; // "
409+procedure Proc4_New; // "
410+procedure Proc5_Old; // runko on jo olemassa
411+```
412+
413+Code Completion lisää kaikki kolme (3) aliohjelman runkoa (Proc2_New, Proc3_New, Proc4_New).
414+
415+Miksi kutsua "Forward Procedure Completion"?
416+
417+Koska 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.
418+
419+### Event Assignment Completion
420+
421+"Event Assignment Completion" on osa Code Completion:a. Se täydentää yhden tapahtuman := \| lauseen. Sitä kutsutaan, kun kohdistin on järjestetty tapahtumalle.
422+
423+`completes a single Event:=| statement. It is invoked, when the cursor is behind an assignment to an event.`
424+
425+Esimerkiksi: Kirjoita lomakkeen FormCreate-tapahtumaan rivi 'OnPaint:=':
426+
427+``` pascal
428+procedure TForm1.Form1Create(Sender: TObject);
429+begin
430+ OnPaint:=|
431+end;
432+```
433+
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
435+
436+``` pascal
437+OnPaint:=@Form1Paint;
438+```
439+
440+ja uusi metodi Form1Paint lisätään TForm1 luokkaan. Tällöin luokka valmistuu ja saadaan myös:
441+
442+``` pascal
443+procedure TForm1.Form1Paint(Sender: TObject);
444+begin
445+ |
446+end;
447+```
448+
449+Tämä toimii samalla tavoin kuin lisätään menetelmiä komponenttimuokkaimella.
450+
451+> **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.
452+
453+Vinkit:\
454+*Uuden metodin oletusarvoinen näkyvyys voidaan valita Työkalut / Asetukset / Codetools / Luokan täydennys / Default section of methods (versiosta 1.8 lähtien)
455+
456+- Uuden metodin nimen voi määrittää itse. Esimerkiksi:
457+
458+``` pascal
459+ OnPaint:=@ThePaintMethod;
460+```
461+
462+Versiosta 0.9.31 Lazarus täydentää aliohjelman parametreja. Esimerkiksi
463+
464+``` pascal
465+procedure TForm1.FormCreate(Sender: TObject);
466+var
467+ List: TList;
468+begin
469+ List:=TList.Create;
470+ List.Sort(@MySortFunction|);
471+end;
472+```
473+
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:
475+
476+``` pascal
477+function MySortFunction(Item1, Item2: Pointer): Integer;
478+begin
479+ |
480+end;
481+
482+procedure TForm1.FormCreate(Sender: TObject);
483+var
484+ List: TList;
485+begin
486+ List:=TList.Create;
487+ List.Sort(@MySortFunction);
488+end;
489+```
490+
491+### Variable Declaration Completion
492+
493+"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.
494+
495+Esimerkiksi:
496+
497+``` pascal
498+procedure TForm1.Form1Create(Sender: TObject);
499+begin
500+ i:=3;
501+end;
502+```
503+
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:
505+
506+``` pascal
507+procedure TForm1.Form1Create(Sender: TObject);
508+var
509+ i: Integer;
510+begin
511+ i:=3;
512+end;
513+```
514+
515+Toiminto 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.
516+
517+Toinen esimerkki:
518+
519+``` pascal
520+type
521+ TWhere = (Behind, Middle, InFront);
522+
523+ procedure TForm1.Form1Create(Sender: TObject);
524+ var
525+ a: array[TWhere] of char;
526+ begin
527+ for Where:=Low(a) to High(a) do writeln(a[Where]);
528+ end;
529+```
530+
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:
532+
533+``` pascal
534+ procedure TForm1.Form1Create(Sender: TObject);
535+ var
536+ a: array[TWhere] of char;
537+ Where: TWhere;
538+ begin
539+ for Where:=Low(a) to High(a) do writeln(a[Where]);
540+ end;
541+```
542+
543+Lazarus on versiosta 0.9.11 lähtien myös täydentänyt parametreja. Esimerkiksi
544+
545+``` pascal
546+ procedure TForm1.FormPaint(Sender: TObject);
547+ begin
548+ with Canvas do begin
549+ Line(x1,y1,x2,y2);
550+ end;
551+ end;
552+```
553+
554+Sijoita kursori 'x1' ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> niin saadaan:
555+
556+``` pascal
557+ procedure TForm1.FormPaint(Sender: TObject);
558+ var
559+ x1: integer;
560+ begin
561+ with Canvas do begin
562+ Line(x1,y1,x2,y2);
563+ end;
564+ end;
565+```
566+
567+Lazarus on versiosta 0.9.31 täydentänyt osoittimen parametrit. Esimerkiksi
568+
569+``` pascal
570+ procedure TForm1.FormCreate(Sender: TObject);
571+ begin
572+ CreateIconIndirect(@IconInfo);
573+ end;
574+```
575+
576+Sijoita kursori 'IconInfo':n ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> niin saadaan:
577+
578+``` pascal
579+ procedure TForm1.FormCreate(Sender: TObject);
580+ var
581+ IconInfo: TIconInfo;
582+ begin
583+ CreateIconIndirect(@IconInfo);
584+ end;
585+```
586+
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.
588+
589+### Procedure Call Completion
590+
591+Code completion voi luoda uuden aliohjelman sen kutsusta.
592+
593+Oletataan että kirjoitettiin vain lause "DoSomething(Width);"
594+
595+``` pascal
596+procedure SomeProcedure;
597+var
598+ Width: integer;
599+begin
600+ Width:=3;
601+ DoSomething(Width);
602+end;
603+```
604+
605+Sijoita kursori tekstiin "DoSomething" ja paina <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> niin saadaan:
606+
607+``` pascal
608+procedure DoSomething(aWidth: LongInt);
609+begin
610+
611+end;
612+
613+procedure SomeProcedure;
614+var
615+ Width: integer;
616+begin
617+ Width:=3;
618+ DoSomething(Width);
619+end;
620+```
621+
622+Se ei vielä luo funktioita tai metodeja.
623+
624+### Reversed Class Completion
625+
626+"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.
627+
628+Esimerkiksi:
629+
630+``` pascal
631+ procedure TForm1.DoSomething(Sender: TObject);
632+ begin
633+ end;
634+```
635+
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.
637+
638+Delphi 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.
639+
640+### Kommentit ja Code Completion
641+
642+Code completion yrittää pitää kommentteja, johon ne kuuluvat. Esimerkiksi:
643+
644+``` pascal
645+ FList: TList; // list of TComponent
646+ FInt: integer;
647+```
648+
649+Kun lisätään uusi muuttuja FListin ja FInt: n välillä, kommentti pidetään FList-rivillä. Sama pätee myös
650+
651+``` pascal
652+ FList: TList; { list of TComponent
653+ Tämä on usean rivin kommentti, alkaen
654+ FList-riviltä, joten codetools olettaa sen kuuluvan
655+ FLIst-riviin ja ei riko tätä
656+ suhdetta. Koodi lisätään kommentin taakse. }
657+ FInt: integer;
658+```
659+
660+Jos kommentti alkaa seuraavalla rivillä, sitä käsitellään kuin se kuuluu alla olevaan koodiin. Esimerkiksi:
661+
662+``` pascal
663+ FList: TList; // list of TComponent
664+ { Tämä kommentti kuuluu alla olevaan lauseeseen.
665+ Uusi koodi lisätään tämän kommentin yläpuolelle ja
666+ FList-rivin kommentin taakse. }
667+ FInt: integer;
668+```
669+
670+### Metodin päivitys
671+
672+Normaalisti 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*.
673+
674+``` pascal
675+ public
676+ procedure DoSomething;
677+ end;
678+
679+procedure TForm.DoSomething;
680+begin
681+end;
682+```
683+
684+Nyt lisätään parameteri:
685+
686+``` pascal
687+ public
688+ procedure DoSomething(i: integer);
689+ end;
690+```
691+
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:
693+
694+``` pascal
695+procedure TForm.DoSomething(i: integer);
696+begin
697+end;
698+```
699+
700+## Refactoring
701+
702+### Käännä sijoitus päinvastaiseksi
703+
704+Abstract
705+
706+"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.
707+
708+Esimerkki:\
709+
710+``` pascal
711+procedure DoSomething;
712+begin
713+ AValueStudio:= BValueStudio;
714+ AValueAppartment :=BValueAppartment;
715+ AValueHouse:=BValueHouse;
716+end;
717+```
718+
719+Valitaan 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:
720+
721+Tulos:
722+
723+``` pascal
724+procedure DoSomething;
725+begin
726+ BValueStudio := AValueStudio;
727+ BValueAppartment := AValueAppartment;
728+ BValueHouse := AValueHouse;
729+end;
730+```
731+
732+### Kapseloi valinta
733+
734+Valitse jokin teksti ja ota "Kapseloi valinta" käyttöön. Avautuu valintaikkuna, jossa voidaan valita, haluaako valinnan **try..finally** tai monista muista tavoista .
735+
736+### Vaihda tunnisteen nimeä
737+
738+Aseta kohdistin tunnisteeseen ja valitse "Vaihda tunnisteen nimeä". Näyttöön tulee valintaikkuna, jossa voit määrittää hakualueen ja uuden nimen.
739+
740+- 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.
741+- Se tarkistaa ensin nimen ristiriidat.
742+- Rajoitukset: Se toimii vain pascal-lähdekoodeilla, ei vielä nimeä tiedostoja eikä muokkaa lfm / lrs-tiedostoja eikä lazdoc-tiedostoja.
743+
744+### Etsi viittauksia tunnisteeseen
745+
746+Aseta 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.
747+
748+### Abstraktit metodit
749+
750+Tä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*) .
751+
752+### Extract Procedure
753+
754+Katso [[IDE Window: Extract Procedure|Extract Procedure]].
755+
756+## Etsi määritys
757+
758+Aseta 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.
759+
760+Jokainen 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.
761+
762+Delphissä 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:
763+
764+*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.
765+
766+Sama pätee myös tyypeille kuten *TColor*. Kääntäjälle se on yksinkertaisesti 'longint'. Mutta lähdekoodissa se on määritelty
767+
768+``` pascal
769+TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
770+TColor = TGraphicsColor;
771+```
772+
773+Ja sama **forward defined classes**: esimerkiksi *TControl*:ssa on yksityinen muuttuja
774+
775+``` pascal
776+FHostDockSite: TWinControl;
777+```
778+
779+Etsi määritys hyppää TWinControl eteenpäin määrittelyyn
780+
781+``` pascal
782+TWinControl = class;
783+```
784+
785+Ja se taas hyppää todelliseen toteutukseen
786+
787+``` pascal
788+TWinControl = class(TControl)
789+```
790+
791+Tällä tavoin voit etsiä jokaisen tunnisteen ja löytää jokaisen ylikuormituksen (overload).
792+
793+### Vihjeitä
794+
795+- Hyppää takaisin <span class="kbd">Ctrl</span>+<span class="kbd">H</span>.
796+- Voidaan tarkastella / navigoida kaikki vierailut kohteet valikon kautta: Näytä -\> "hyppyhistoria"
797+- 5-näppäimellä hiirellä voidaan 2 ylimääräistä painiketta hyödyntää siirtyäksesi eteenpäin / taaksepäin vierailtujen kohteiden välillä
798+
799+[[IDE Window: EditorMouseOptionsAdvanced|advanced mouse options]] painikkeet voidaan uudelleen määrittää.
800+
801+## Identifier Completion
802+
803+"Identifier Completion" kutsutaan painamalla <span class="kbd">Ctrl</span>+<span class="kbd">space</span>. Se näyttää kaikki näkyvyyden tunnisteet. Esimerkiksi:
804+
805+``` pascal
806+procedure TForm1.FormCreate(Sender: TObject);
807+begin
808+ |
809+end;
810+```
811+
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.
813+
814+> **Note:** Delphi käyttäjille: Delphi kutsuu tätä nimellä *Code completion*.
815+
816+Joitakin 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.
817+
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.
819+
820+Identifier completion näyttää myös ne tunnisteet, jotka eivät ole yhteensopivia.
821+
822+### Täydennys sanan alkuosan mukaan
823+
824+Identifier completion voidaan kutsua kun on muutamia kirjaimia sanasta. Sijoita kursori sanaan. Jolloin kursorin vasemmalla puolella olevia merkkejä käytetään tunnisteiden etsimiseen. Esimerkiksi:
825+
826+``` pascal
827+procedure TForm1.FormCreate(Sender: TObject);
828+begin
829+ Ca|ption
830+end;
831+```
832+
833+Sanaluettelolaatikko näyttää vain tunnukset, jotka alkavat "Ca": lla (\| osoittaa kursorin sijainnin).
834+
835+### Näppäimet
836+
837+- 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
845+
846+### Metodit
847+
848+Kun kohdistin on luokkamäärittelyssä ja identifier complete määrittää metodia esi-luokassa niin parametrit ja override avainsana lisätään automaattisesti. Esimerkiksi:
849+
850+``` pascal
851+TMainForm = class(TForm)
852+protected
853+ mous|
854+end;
855+```
856+
857+Täydennys **MouseDown** antaa:
858+
859+``` pascal
860+TMainForm = class(TForm)
861+protected
862+ procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X,
863+ Y: Integer); override;
864+end;
865+```
866+
867+### Ominaisuudet
868+
869+``` pascal
870+property MyInt: integer read |;
871+```
872+
873+Identifier completion näyttää **FMyInt** ja **GetMyInt**.
874+
875+``` pascal
876+property MyInt: integer write |;
877+```
878+
879+Identifier completion näyttää **FMyInt** ja **SetMyInt**.
880+
881+### Uses osio / käännösyksikön nimet
882+
883+Uses 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* ).
884+
885+### Lauseet
886+
887+``` pascal
888+procedure TMainForm.Button1Click(Sender: TObject);
889+begin
890+ ModalRe|;
891+end;
892+```
893+
894+tulee:
895+
896+``` pascal
897+procedure TMainForm.Button1Click(Sender: TObject);
898+begin
899+ ModalResult:=|;
900+end;
901+```
902+
903+### Kuvakkeet täydennysikkunassa
904+
905+Lazarus versiosta 1.9 lähtien on olemassa vaihtoehto, jolla näytetään kuvakkeita "tyyppien" sijaan täydennysikkunassa. Kuvassa nähdään nämä kuvakkeet:
906+
907+<figure>
908+<img src="ide_completion_icons.png" title="ide_completion_icons.png" />
909+<figcaption>ide_completion_icons.png</figcaption>
910+</figure>
911+
912+## Word Completion
913+
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.
915+
916+Muutoin se toimii samoin kuin identifier completion.
917+
918+## Siirry Include määrittelyyn
919+
920+"Siirry Include määrittelyyn" hyppää {\$ I filename} -lauseen, jossa käytetään nykyistä tiedostoa.
921+
922+## Julkaise projekti
923+
924+Luo 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.
925+
926+Tavallinen 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".
927+
928+> **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.
929+
930+Valintaikkunassa voidaan määrittää suodattimen tiettyjen tiedostojen sisällyttämiseksi ja sulkemiseksi pois. Komennolla voidaan pakata tuotos yhteen arkistoon.
931+
932+## Huomautuksia näytettävistä vihjeistä
933+
934+Useilla 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:
935+
936+### Comments shown in the hint
937+
938+Comments in front of a declaration, without empty line and not starting with the *\<* sign:
939+
940+``` pascal
941+var
942+ {Comment}
943+ Identifier: integer;
944+```
945+
946+Comments with the *\<* sign belong to the prior identifier.
947+
948+Comments behind an identifier on the same line:
949+
950+``` pascal
951+var
952+ identifier, // Comment
953+ other,
954+```
955+
956+Comments behind the definition on the same line:
957+
958+``` pascal
959+var
960+ identifier:
961+ char; // Comment
962+```
963+
964+An example for **\<** sign:
965+
966+``` pascal
967+const
968+ a = 1;
969+ //< comment for a
970+ b = 2;
971+ // comment for c
972+ c = 3;
973+```
974+
975+All three comment types are supported:
976+
977+``` pascal
978+ {Comment}(*Comment*)//Comment
979+ c = 1;
980+```
981+
982+### Comments not shown in the hint
983+
984+Comments starting with **\$** or **%** are ignored. For example *//% Hiddden*, *//\$ Hidden*, *(*\$ Hidden*)*.
985+
986+Comments 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:
987+
988+``` pascal
989+type
990+ { TMyClass }
991+
992+ TMyClass = class
993+```
994+
995+The 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.
996+
997+The following comment will be shown for GL_TRUE, but not for GL_FALSE:
998+
999+``` pascal
1000+ // Boolean
1001+ GL_TRUE = 1;
1002+ GL_FALSE = 0;
1003+```
1004+
1005+## Quick Fixes
1006+
1007+Quick 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.
1008+
1009+- Unit not found: remove from uses section
1010+- Unit not found: find unit in loaded packages and allow to auto add package dependency
1011+- Constructing a class "\$1" with abstract method "\$2": show dialog to override all abstract methods
1012+- Local variable "\$1" not used: remove definition
1013+- Circular unit reference between \$1 and \$2: show Unit Dependencies dialog with full path between the two units
1014+- Identifier not found: search via Code Browser
1015+- Identifier not found: search via Cody Dictionary (needs package [[Cody]])
1016+- Identifier not found: add local variable
1017+- Recompiling \$1, checksum changed for \$2: show a dialog with search paths and other information
1018+- IDE warning: other sources path of package %s contains directory...: open package
1019+- any hint, note, warning: add IDE directive {%H-}
1020+- any hint, note, warning: add compiler directive {\$warn id off} (since 1.7)
1021+- any hint, note, warning: add compiler option -vm\<messageid\>
1022+- Local variable "i" does not seem to be initialized: insert assignment (since 1.5)
1023+
1024+## Outline
1025+
1026+Tämä asetus sijaitsee IDEn asetukset ikkunassa, Editori - Näkymä - Merkintä ja osumat - Outline (global).
1027+
1028+Se korostaa Pascalin avainsanoja yhdistäen vastaavat begin - end parit. Tämä sallii isot sisäkkäiset lohkot Esimerkiksi vaikka tälläinen aliohjelman runko:
1029+
1030+``` pascal
1031+ with ADockObject do
1032+ begin
1033+ if DropAlign = alNone then
1034+ begin
1035+ if DropOnControl <> nil then
1036+ DropAlign := DropOnControl.GetDockEdge(DropOnControl.ScreenToClient(DragPos))
1037+ else
1038+ DropAlign := Control.GetDockEdge(DragTargetPos);
1039+ end;
1040+ PositionDockRect(Control, DropOnControl, DropAlign, FDockRect);
1041+ end;
1042+```
1043+
1044+Tuodaan korostaen esiin:
1045+
1046+- ulompi with-do-begin-end oranssin värisenä
1047+- seuraavan tason if-then-begin-end vihreän värisenä
1048+- sisempi if-then-else cyanin värisenä
1049+
1050+<figure>
1051+<img src="ide_outline.png" title="ide_outline.png" />
1052+<figcaption>ide_outline.png</figcaption>
1053+</figure>
1054+
1055+---
1056+*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