Sign in Join
Wiki copytemporary

Lazarus IDE Tools/fi: what changed

Revision 2 to 3. 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|----|----|
1111| [[Lazarus IDE Tools|Declaration Jumping]] | `Ctrl`+klikkaa tai `Alt`+`Up` (Hyppää tyypin tai muuttujan määrittelyyn) |
1212| [[Lazarus IDE Tools/fi|Siirtyminen esittelyn ja toteuksen välillä]] | `Ctrl`+`Shift`+`Up` (vaihtaa määritelmäosion ja toteutusosion välillä) |
1313| [[Lazarus IDE Tools|Code Templates]] | `Ctrl`+`J` |
1414| [[Lazarus IDE Tools|Syncro Edit]] | `Ctrl`+`J` (while text is selected) |
1515| [[Lazarus IDE Tools|Code Completion]] (Class Completion) | `Ctrl`+`Shift`+`C`, `Ctrl`+`Shift`+`X` for creating class fields instead of local variables |
1616| [[Lazarus IDE Tools|Identifier Completion]] | `Ctrl`+`space` |
1717| [[Lazarus IDE Tools|Word Completion]] | `Ctrl`+`W` |
1818| [[Lazarus IDE Tools/fi|Parametrivihjeet]] | `Ctrl`+`Shift`+`space` |
1919| [[Lazarus IDE Tools/fi|Etsi kirjain kerrallaan]] | `Ctrl`+`E` |
2020| [[Lazarus IDE Tools|Rename Identifier]] | `Ctrl`+`Shift`+`E` |
2121
2222## Siirtyminen esittelyn ja toteuksen välillä
2323
2424Jos 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
4040Jos 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
104104Code 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
106106Esim: 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
118118ja 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
120120Suurin 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
132132Aseta kursori sulkujen väliin ja paina `Ctrl`+`Shift`+`space`. Näyttöön tulee vihjeruutu, joka näyttää FillRectin parametrit.
133133
134134![](/wiki-images/c/c8/Parameterhints1.png)
135135
136136Versiosta 0.9.31 asti on ollut jokaisen Parametrivihjeen oikealla puolella painike puuttuvien parametrien lisäämiseksi. Tämä kopioi parametrin nimet valitusta vihjeestä kohdistimen kohtaan.
137137
138138![](/wiki-images/4/48/Parameterhints2.png)
139139
140140Vihje: Käytä Variable Declaration Completion määrittääksesi muuttujia.
141141
142142> **Note:** Pikanäppäimen nimi on "Show code context".
143143
144144## Etsi kirjain kerrallaan
145145
146146Etsi 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`.
147147
148148- Esimerkiksi painamalla `e`. Se etsii ja korostaa kaikki 'e':n esiintymät.
149149- Sitten painetaan `t`. Se etsii ja korostaa kaikki esiintymät "et" ja niin edelleen.
150150- Seuraavaan esiintymään voidaan siirtyä painamalla `F3` (tai `Ctrl`+`e` kun ollaan haussa) ja edelliseen painamalla `Shift`+`F3`.
151151- Backspace eli `<-` poistaa edellisen merkin
152152- `Return` lopettaa haun lisäämättä uutta riviä editoriin.
153153- 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ä.
154154- Liittäminen `Ctrl`+`V` liittää tekstin leikepöydältä nykyiseen hakutekstiin (Ollut Lazarus versiosta 0.9.27 lähtien).
155155
156156### Vihje: Nopea haku tunnistimella käyttäen etsi kirjain kerrallaan toimintoa
157157
158158- Aseta tekstikohdistin tunnisteeseen (älä valitse mitään)
159159- Paina `Ctrl`+`C`. Lähdekoodieditori valitsee tunnuksen ja kopioi sen leikepöydälle
160160- Paina `Ctrl`+`E` aloittaaksesi etsi kirjain kerrallaan toiminnon.
161161- Paina `Ctrl`+`V` joka liittää tekstin leikepöydältä nykyiseen hakutekstiin.
162162- Käyttämällä `F3` ja `Shift`+`F3` siirtyäksesi nopeasti seuraavaan / edelliseen.
163163- Lopeta haku painamalla mitä tahansa näppäintä (esimerkiksi kohdistinta vasemmalle tai oikealle).
164164
165165## Syncro Edit
166166
167167Syncro 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.
168168
169169Syncro Edit toimii kaikkien valitun alueen sanoilla:
170170
171171- Valitse tekstilohko
172172- Paina `Ctrl`+`J` tai klikkaa kuvaketta reunuksessa. (Tämä toimii vain, jos valittu sana esiintyy useamman kerran).
173173- Valitse muokattava sana `tab` näppäimellä (jos valittu sana esiintyy useamman kerran)
174174- Muokkaa sanaa
175175- Lopeta painamalla `Esc` näppäimellä
176176
177177Katso animoitu esimerkki [[New IDE features since|tästä]]
178178
179179> **Note:** `Ctrl`+`J` käytetään myös template edit:ssä. Se vaihtaa merkitystään, jos valitset jonkin tekstin.
180180
181181## Etsi sanan seuraava esiintymiskohta/ Etsi sanan edellinen esiintymiskohta
182182
183183Nämä kaksi funktiota löytyvät lähdekoodieditorin ponnahdusvalikosta
184184
185185- Lähdekoodieditori / ponnahdusvalikko / Etsi / Etsi sanan seuraava esiintymiskohta
186186- Lähdekoodieditori / ponnahdusvalikko / Etsi / Etsi sanan edellinen esiintymiskohta
187187
188188Näihin voidaan määrittää pikanäppäimet editorin asetuksissa.
189189
190190## Code Completion
191191
192192Code Completion löytyy IDE-valikosta Edit -\> Complete Code ja sen pikanäppäin on `Ctrl`+`Shift`+`C`.
193193
194194Delphi-käyttäjille: Delphi nimeää "code completion" funktioksi, joka näyttää tunnistetietojen luettelon kursorin kohdalla lähdekoodissa ( `Ctrl`+`Space` ). Lazaruksessa se on "Identifier completion".
195195
196196Code Completion yhdistää useita tehokkaita toimintoja. esimerkkejä:
197197
198198- Class Completion: täydentää ominaisuuksia(property), lisää / päivittää metodien runkoja, lisää yksityisiä muuttujia ja yksityisiä käyttömetodeja
199199- Forward Procedure Completion: Lisää aliohjelmien runkoja
200200- Event Assignment Completion: Tapahtumien tekeminen ja lisää metodit määrittelyt ja niiden rungot
201201- Variable Declaration Completion: lisää paikalliset muuttujan määrittelyt
202202- Procedure Call Completion: Lisää uusia aliohjelmia
203203- Reversed procedure completion: Lisää aliohjelman määrittelyn
204204- Reversed Class Completion: Lisää metodien määrittelyn
205205
206206Mikä toiminto on käytössä, riippuu kohdistimen sijainnista editorissa ja sitä selitetään alla.
207207
208208Code Completion löytyy IDE-valikosta Edit -\> Complete Code ja sen pikanäppäin on `Ctrl`+`Shift`+`C`.
209209
210210### Class Completion
211211
212212Tehokkain 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.
213213
214214Esimerkiksi: Luo luokka eli class (Katso Code Templates jonka avulla voidaan säästää kirjoittamistyötä):
215215
216216``` pascal
217217TExample = class(TObject)
218218public
219219 constructor Create;
220220 destructor Destroy; override;
221221end;
222222```
223223
224224Aseta 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:
225225
226226``` pascal
227227{ TExample }
228228
229229constructor TExample.Create;
230230begin
231231 |
232232end;
233233
234234destructor TExample.Destroy;
235235begin
236236 inherited Destroy;
237237end;
238238```
239239
240240> **Note:** Merkki '\|' on kohdistin eikä sitä lisätä.
241241
242242Vihje: On mahdollista siirtyä metodin ja sen rungon välillä `Ctrl`+`Shift`+`Up`.
243243
244244Nähdään, että IDE lisäsi myös 'inherited Destroy' kutsun. Tämä tehdään, jos luokan määritelmässä on '[[Override|override]]' avainsana.
245245
246246Nyt lisätään metodi DoSomething:
247247
248248``` pascal
249249TExample = class(TObject)
250250public
251251 constructor Create;
252252 procedure DoSomething(i: integer);
253253 destructor Destroy; override;
254254end;
255255```
256256
257257Sitten paina `Ctrl`+`Shift`+`C` ja IDE lisää
258258
259259``` pascal
260260procedure TExample.DoSomething(i: integer);
261261begin
262262 |
263263end;
264264```
265265
266266Nä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.
267267
268268**Täydennä ominaisuuksilla**\
269269Lisää ominaisuus AnInteger:
270270
271271``` pascal
272272TExample = class(TObject)
273273public
274274 constructor Create;
275275 procedure DoSomething(i: integer);
276276 destructor Destroy; override;
277277 property AnInteger: Integer;
278278end;
279279```
280280
281281Paina `Ctrl`+`Shift`+`C` jolloin saadaan:
282282
283283``` pascal
284284procedure TExample.SetAnInteger(const AValue: integer);
285285begin
286286 |if FAnInteger=AValue then exit;
287287 FAnInteger:=AValue;
288288end;
289289```
290290
291291code completion on lisännyt kirjoitusoikeuden muokkaajan ja lisännyt yleistä koodia. Siirry luokalle painamalla `Ctrl`+`Shift`+`Up` nähdäksesi uuden luokan:
292292
293293``` pascal
294294TExample = class(TObject)
295295private
296296 FAnInteger: integer;
297297 procedure SetAnInteger(const AValue: integer);
298298public
299299 constructor Create;
300300 procedure DoSomething(i: integer);
301301 destructor Destroy; override;
302302 property AnInteger: integer read FAnInteger write SetAnInteger;
303303end;
304304```
305305
306306Ominaisuutta 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.
307307
308308Luodaan property:n vain luku (read) :
309309
310310``` pascal
311311property PropName: PropType read;
312312```
313313
314314Laajennetaan
315315
316316``` pascal
317317property PropName: PropType read FPropName;
318318```
319319
320320Luodaan property:n vain kirjoitus (write) :
321321
322322``` pascal
323323property PropName: PropType write;
324324```
325325
326326Laajennetaan
327327
328328``` pascal
329329property PropName: PropType write SetPropName;
330330```
331331
332332Luodaan property:n vain luku (read) ja lukumetodi:
333333
334334``` pascal
335335property PropName: PropType read GetPropName;
336336```
337337
338338Säilytetään ja GetPropName-funktio lisätään:
339339
340340``` pascal
341341function GetpropName: PropType;
342342```
343343
344344Luodaan property jossa on stored määrite:
345345
346346``` pascal
347347property PropName: PropType stored;
348348```
349349
350350Laajennetaan
351351
352352``` pascal
353353property PropName: PropType read FPropName write SetPropName stored PropNameIsStored;
354354```
355355
356356Koska stored käytetään tietovirtojen lukemiseen ja kirjoittamiseen, ne myös lisätään automaattisesti.
357357
358358Vihje: Identifier completion tunnistaa myös puutteelliset ominaisuudet ja ehdottaa oletusnimiä. Esimerkiksi:
359359
360360``` pascal
361361property PropName: PropType read |;
362362```
363363
364364Aseta kohdistin yksi välilyönti read-avainsanan taakse ja paina `Ctrl`+`Space`. Se antaa muuttujan "FPropName" ja aliohjelman "SetPropName".
365365
366366### Forward Procedure Completion
367367
368368"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.
369369
370370Esimerkiksi: Lisätään uusi aliohjelma interface osioon:
371371
372372``` pascal
373373procedure DoSomething;
374374```
375375
376376Aseta kohdistin sille ja paina `Ctrl`+`Shift`+`C`. Se luo toteutusosassa (implementation):
377377
378378``` pascal
379379procedure DoSomething;
380380begin
381381 |
382382end;
383383```
384384
385385Vihje: Voidaan siirtyä aliohjelman esittelyn ja sen rungon välillä painamalla`Ctrl`+`Shift`+`Up`.
386386
387387Uusi aliohjelman runko lisätään luokkametodien eteen. Jos rajapinnassa on jo joitain aliohjelmia, IDE yrittää säilyttää järjestyksen. Esimerkiksi:
388388
389389``` pascal
390390procedure Proc1;
391391procedure Proc2; // new proc
392392procedure Proc3;
393393```
394394
395395Jos 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.
396396
397397Useita aliohjelmia:
398398
399399``` pascal
400400procedure Proc1_Old; // runko on jo olemassa
401401procedure Proc2_New; // runkoa ei ole vielä
402402procedure Proc3_New; // "
403403procedure Proc4_New; // "
404404procedure Proc5_Old; // runko on jo olemassa
405405```
406406
407407Code Completion lisää kaikki kolme (3) aliohjelman runkoa (Proc2_New, Proc3_New, Proc4_New).
408408
409409Miksi kutsua "Forward Procedure Completion"?
410410
411411Koska 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.
412412
413413### Event Assignment Completion
414414
415415"Event Assignment Completion" on osa Code Completion:a. Se täydentää yhden tapahtuman := \| lauseen. Sitä kutsutaan, kun kohdistin on järjestetty tapahtumalle.
416416
417-`completes a single Event:=| statement. It is invoked, when the cursor is behind an assignment to an event.`
417+``` pascal
418+completes a single Event:=| statement. It is invoked, when the cursor is behind an assignment to an event.
419+```
418420
419421Esimerkiksi: Kirjoita lomakkeen FormCreate-tapahtumaan rivi 'OnPaint:=':
420422
421423``` pascal
422424procedure TForm1.Form1Create(Sender: TObject);
423425begin
424426 OnPaint:=|
425427end;
426428```
427429
428430Kursorin paikka on merkitty '\|' -kirjaimella eikä kyseistä kirjainta kirjoiteta. Code completion kutsutaan painamalla `Ctrl`+`Shift`+`C`. Lause täydennetään
429431
430432``` pascal
431433OnPaint:=@Form1Paint;
432434```
433435
434436ja uusi metodi Form1Paint lisätään TForm1 luokkaan. Tällöin luokka valmistuu ja saadaan myös:
435437
436438``` pascal
437439procedure TForm1.Form1Paint(Sender: TObject);
438440begin
439441 |
440442end;
441443```
442444
443445Tämä toimii samalla tavoin kuin lisätään menetelmiä komponenttimuokkaimella.
444446
445447> **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.
446448
447449Vinkit:\
448450*Uuden metodin oletusarvoinen näkyvyys voidaan valita Työkalut / Asetukset / Codetools / Luokan täydennys / Default section of methods (versiosta 1.8 lähtien)
449451
450452- Uuden metodin nimen voi määrittää itse. Esimerkiksi:
451453
452454``` pascal
453455 OnPaint:=@ThePaintMethod;
454456```
455457
456458Versiosta 0.9.31 Lazarus täydentää aliohjelman parametreja. Esimerkiksi
457459
458460``` pascal
459461procedure TForm1.FormCreate(Sender: TObject);
460462var
461463 List: TList;
462464begin
463465 List:=TList.Create;
464466 List.Sort(@MySortFunction|);
465467end;
466468```
467469
468470Sijoita kursori 'MySortFunction' kohtaan ja paina `Ctrl`+`Shift`+`C` niin saadaan uusi aliohjelma:
469471
470472``` pascal
471473function MySortFunction(Item1, Item2: Pointer): Integer;
472474begin
473475 |
474476end;
475477
476478procedure TForm1.FormCreate(Sender: TObject);
477479var
478480 List: TList;
479481begin
480482 List:=TList.Create;
481483 List.Sort(@MySortFunction);
482484end;
483485```
484486
485487### Variable Declaration Completion
486488
487489"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.
488490
489491Esimerkiksi:
490492
491493``` pascal
492494procedure TForm1.Form1Create(Sender: TObject);
493495begin
494496 i:=3;
495497end;
496498```
497499
498500Kursorin paikka on tunnisteessa 'i' tai sen jälkeen. Painamalla `Ctrl`+`Shift`+`C` saadaan:
499501
500502``` pascal
501503procedure TForm1.Form1Create(Sender: TObject);
502504var
503505 i: Integer;
504506begin
505507 i:=3;
506508end;
507509```
508510
509511Toiminto 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.
510512
511513Toinen esimerkki:
512514
513515``` pascal
514516type
515517 TWhere = (Behind, Middle, InFront);
516518
517519 procedure TForm1.Form1Create(Sender: TObject);
518520 var
519521 a: array[TWhere] of char;
520522 begin
521523 for Where:=Low(a) to High(a) do writeln(a[Where]);
522524 end;
523525```
524526
525527Kursorin paikka on 'Where'-sanan kohdalla ja painetaan `Ctrl`+`Shift`+`C` niin saadaan:
526528
527529``` pascal
528530 procedure TForm1.Form1Create(Sender: TObject);
529531 var
530532 a: array[TWhere] of char;
531533 Where: TWhere;
532534 begin
533535 for Where:=Low(a) to High(a) do writeln(a[Where]);
534536 end;
535537```
536538
537539Lazarus on versiosta 0.9.11 lähtien myös täydentänyt parametreja. Esimerkiksi
538540
539541``` pascal
540542 procedure TForm1.FormPaint(Sender: TObject);
541543 begin
542544 with Canvas do begin
543545 Line(x1,y1,x2,y2);
544546 end;
545547 end;
546548```
547549
548550Sijoita kursori 'x1' ja paina `Ctrl`+`Shift`+`C` niin saadaan:
549551
550552``` pascal
551553 procedure TForm1.FormPaint(Sender: TObject);
552554 var
553555 x1: integer;
554556 begin
555557 with Canvas do begin
556558 Line(x1,y1,x2,y2);
557559 end;
558560 end;
559561```
560562
561563Lazarus on versiosta 0.9.31 täydentänyt osoittimen parametrit. Esimerkiksi
562564
563565``` pascal
564566 procedure TForm1.FormCreate(Sender: TObject);
565567 begin
566568 CreateIconIndirect(@IconInfo);
567569 end;
568570```
569571
570572Sijoita kursori 'IconInfo':n ja paina `Ctrl`+`Shift`+`C` niin saadaan:
571573
572574``` pascal
573575 procedure TForm1.FormCreate(Sender: TObject);
574576 var
575577 IconInfo: TIconInfo;
576578 begin
577579 CreateIconIndirect(@IconInfo);
578580 end;
579581```
580582
581583Kaikissa edellä olevissa esimerkeissä voit käyttää `Ctrl`+`Shift`+`X`-näppäintä näyttääksesi koodin luomisen valintaikkunan, jossa voit asettaa lisää vaihtoehtoja.
582584
583585### Procedure Call Completion
584586
585587Code completion voi luoda uuden aliohjelman sen kutsusta.
586588
587589Oletataan että kirjoitettiin vain lause "DoSomething(Width);"
588590
589591``` pascal
590592procedure SomeProcedure;
591593var
592594 Width: integer;
593595begin
594596 Width:=3;
595597 DoSomething(Width);
596598end;
597599```
598600
599601Sijoita kursori tekstiin "DoSomething" ja paina `Ctrl`+`Shift`+`C` niin saadaan:
600602
601603``` pascal
602604procedure DoSomething(aWidth: LongInt);
603605begin
604606
605607end;
606608
607609procedure SomeProcedure;
608610var
609611 Width: integer;
610612begin
611613 Width:=3;
612614 DoSomething(Width);
613615end;
614616```
615617
616618Se ei vielä luo funktioita tai metodeja.
617619
618620### Reversed Class Completion
619621
620622"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.
621623
622624Esimerkiksi:
623625
624626``` pascal
625627 procedure TForm1.DoSomething(Sender: TObject);
626628 begin
627629 end;
628630```
629631
630632DoSomething-metodia ei ole vielä määritelty TForm1: ssä. Paina `Ctrl`+`Shift`+`C` ja IDE lisää aliohjelman "procedure DoSomething (Sender: TObject);" TForm1: n yksityisiin metodeihin.
631633
632634Delphi 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.
633635
634636### Kommentit ja Code Completion
635637
636638Code completion yrittää pitää kommentteja, johon ne kuuluvat. Esimerkiksi:
637639
638640``` pascal
639641 FList: TList; // list of TComponent
640642 FInt: integer;
641643```
642644
643645Kun lisätään uusi muuttuja FListin ja FInt: n välillä, kommentti pidetään FList-rivillä. Sama pätee myös
644646
645647``` pascal
646648 FList: TList; { list of TComponent
647649 Tämä on usean rivin kommentti, alkaen
648650 FList-riviltä, joten codetools olettaa sen kuuluvan
649651 FLIst-riviin ja ei riko tätä
650652 suhdetta. Koodi lisätään kommentin taakse. }
651653 FInt: integer;
652654```
653655
654656Jos kommentti alkaa seuraavalla rivillä, sitä käsitellään kuin se kuuluu alla olevaan koodiin. Esimerkiksi:
655657
656658``` pascal
657659 FList: TList; // list of TComponent
658660 { Tämä kommentti kuuluu alla olevaan lauseeseen.
659661 Uusi koodi lisätään tämän kommentin yläpuolelle ja
660662 FList-rivin kommentin taakse. }
661663 FInt: integer;
662664```
663665
664666### Metodin päivitys
665667
666668Normaalisti 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*.
667669
668670``` pascal
669671 public
670672 procedure DoSomething;
671673 end;
672674
673675procedure TForm.DoSomething;
674676begin
675677end;
676678```
677679
678680Nyt lisätään parameteri:
679681
680682``` pascal
681683 public
682684 procedure DoSomething(i: integer);
683685 end;
684686```
685687
686688Code Completion kutsuminen (`Ctrl`+`Shift`+`C`) päivittää metodin rungon ja uusi parametri kopioidaan:
687689
688690``` pascal
689691procedure TForm.DoSomething(i: integer);
690692begin
691693end;
692694```
693695
694696## Refactoring
695697
696698### Käännä sijoitus päinvastaiseksi
697699
698700Abstract
699701
700702"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.
701703
702704Esimerkki:\
703705
704706``` pascal
705707procedure DoSomething;
706708begin
707709 AValueStudio:= BValueStudio;
708710 AValueAppartment :=BValueAppartment;
709711 AValueHouse:=BValueHouse;
710712end;
711713```
712714
713715Valitaan 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:
714716
715717Tulos:
716718
717719``` pascal
718720procedure DoSomething;
719721begin
720722 BValueStudio := AValueStudio;
721723 BValueAppartment := AValueAppartment;
722724 BValueHouse := AValueHouse;
723725end;
724726```
725727
726728### Kapseloi valinta
727729
728730Valitse jokin teksti ja ota "Kapseloi valinta" käyttöön. Avautuu valintaikkuna, jossa voidaan valita, haluaako valinnan **try..finally** tai monista muista tavoista .
729731
730732### Vaihda tunnisteen nimeä
731733
732734Aseta kohdistin tunnisteeseen ja valitse "Vaihda tunnisteen nimeä". Näyttöön tulee valintaikkuna, jossa voit määrittää hakualueen ja uuden nimen.
733735
734736- 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.
735737- Se tarkistaa ensin nimen ristiriidat.
736738- Rajoitukset: Se toimii vain pascal-lähdekoodeilla, ei vielä nimeä tiedostoja eikä muokkaa lfm / lrs-tiedostoja eikä lazdoc-tiedostoja.
737739
738740### Etsi viittauksia tunnisteeseen
739741
740742Aseta 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.
741743
742744### Abstraktit metodit
743745
744746Tä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*) .
745747
746748### Extract Procedure
747749
748750Katso [[IDE Window: Extract Procedure|Extract Procedure]].
749751
750752## Etsi määritys
751753
752754Aseta 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.
753755
754756Jokainen 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.
755757
756758Delphissä 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:
757759
758760*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.
759761
760762Sama pätee myös tyypeille kuten *TColor*. Kääntäjälle se on yksinkertaisesti 'longint'. Mutta lähdekoodissa se on määritelty
761763
762764``` pascal
763765TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
764766TColor = TGraphicsColor;
765767```
766768
767769Ja sama **forward defined classes**: esimerkiksi *TControl*:ssa on yksityinen muuttuja
768770
769771``` pascal
770772FHostDockSite: TWinControl;
771773```
772774
773775Etsi määritys hyppää TWinControl eteenpäin määrittelyyn
774776
775777``` pascal
776778TWinControl = class;
777779```
778780
779781Ja se taas hyppää todelliseen toteutukseen
780782
781783``` pascal
782784TWinControl = class(TControl)
783785```
784786
785787Tällä tavoin voit etsiä jokaisen tunnisteen ja löytää jokaisen ylikuormituksen (overload).
786788
787789### Vihjeitä
788790
789791- Hyppää takaisin `Ctrl`+`H`.
790792- Voidaan tarkastella / navigoida kaikki vierailut kohteet valikon kautta: Näytä -\> "hyppyhistoria"
791793- 5-näppäimellä hiirellä voidaan 2 ylimääräistä painiketta hyödyntää siirtyäksesi eteenpäin / taaksepäin vierailtujen kohteiden välillä
792794
793795[[IDE Window: EditorMouseOptionsAdvanced|advanced mouse options]] painikkeet voidaan uudelleen määrittää.
794796
795797## Identifier Completion
796798
797799"Identifier Completion" kutsutaan painamalla `Ctrl`+`space`. Se näyttää kaikki näkyvyyden tunnisteet. Esimerkiksi:
798800
799801``` pascal
800802procedure TForm1.FormCreate(Sender: TObject);
801803begin
802804 |
803805end;
804806```
805807
806808Sijoita 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.
807809
808810> **Note:** Delphi käyttäjille: Delphi kutsuu tätä nimellä *Code completion*.
809811
810812Joitakin 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.
811813
812814*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.
813815
814816Identifier completion näyttää myös ne tunnisteet, jotka eivät ole yhteensopivia.
815817
816818### Täydennys sanan alkuosan mukaan
817819
818820Identifier completion voidaan kutsua kun on muutamia kirjaimia sanasta. Sijoita kursori sanaan. Jolloin kursorin vasemmalla puolella olevia merkkejä käytetään tunnisteiden etsimiseen. Esimerkiksi:
819821
820822``` pascal
821823procedure TForm1.FormCreate(Sender: TObject);
822824begin
823825 Ca|ption
824826end;
825827```
826828
827829Sanaluettelolaatikko näyttää vain tunnukset, jotka alkavat "Ca": lla (\| osoittaa kursorin sijainnin).
828830
829831### Näppäimet
830832
831833- Kirjain tai numero : lisää merkin lähdekoodieditoriin ja käytettyyn etuliitteeseen. Tämä päivittää luettelon.
832834- `Backspace`: poistaa viimeisen merkin lähdekoodieditorista ja etuliitteestä. Päivittää luettelon
833835- `Return`: vaihtaa koko sanan kohdistimella valittuun tunnisteeseen ja sulkee ponnahdusikkunan.
834836- `Shift`+`Return`: kuten *Return*, mutta korvaa vain sanan etuliitteen (kursorin vasemmanpuolinen osa)
835837- `Up`/`Down`: Siirtyy valintaluettelossa (ylöspäin/alaspäin)
836838- `Esc`: sulkee ponnahdusikkunan ilman muutosta
837839- `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'.
838840- Muutoin: kuten `Return` ja lisätään merkki lähdekoodieditoriin
839841
840842### Metodit
841843
842844Kun kohdistin on luokkamäärittelyssä ja identifier complete määrittää metodia esi-luokassa niin parametrit ja override avainsana lisätään automaattisesti. Esimerkiksi:
843845
844846``` pascal
845847TMainForm = class(TForm)
846848protected
847849 mous|
848850end;
849851```
850852
851853Täydennys **MouseDown** antaa:
852854
853855``` pascal
854856TMainForm = class(TForm)
855857protected
856858 procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X,
857859 Y: Integer); override;
858860end;
859861```
860862
861863### Ominaisuudet
862864
863865``` pascal
864866property MyInt: integer read |;
865867```
866868
867869Identifier completion näyttää **FMyInt** ja **GetMyInt**.
868870
869871``` pascal
870872property MyInt: integer write |;
871873```
872874
873875Identifier completion näyttää **FMyInt** ja **SetMyInt**.
874876
875877### Uses osio / käännösyksikön nimet
876878
877879Uses 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* ).
878880
879881### Lauseet
880882
881883``` pascal
882884procedure TMainForm.Button1Click(Sender: TObject);
883885begin
884886 ModalRe|;
885887end;
886888```
887889
888890tulee:
889891
890892``` pascal
891893procedure TMainForm.Button1Click(Sender: TObject);
892894begin
893895 ModalResult:=|;
894896end;
895897```
896898
897899### Kuvakkeet täydennysikkunassa
898900
899901Lazarus versiosta 1.9 lähtien on olemassa vaihtoehto, jolla näytetään kuvakkeita "tyyppien" sijaan täydennysikkunassa. Kuvassa nähdään nämä kuvakkeet:
900902
901903![](/wiki-images/e/e6/Ide_completion_icons.png)
902904
903905## Word Completion
904906
905907*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.
906908
907909Muutoin se toimii samoin kuin identifier completion.
908910
909911## Siirry Include määrittelyyn
910912
911913"Siirry Include määrittelyyn" hyppää {\$ I filename} -lauseen, jossa käytetään nykyistä tiedostoa.
912914
913915## Julkaise projekti
914916
915917Luo 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.
916918
917919Tavallinen 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".
918920
919921> **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.
920922
921923Valintaikkunassa voidaan määrittää suodattimen tiettyjen tiedostojen sisällyttämiseksi ja sulkemiseksi pois. Komennolla voidaan pakata tuotos yhteen arkistoon.
922924
923925## Huomautuksia näytettävistä vihjeistä
924926
925927Useilla 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:
926928
927929### Comments shown in the hint
928930
929931Comments in front of a declaration, without empty line and not starting with the *\<* sign:
930932
931933``` pascal
932934var
933935 {Comment}
934936 Identifier: integer;
935937```
936938
937939Comments with the *\<* sign belong to the prior identifier.
938940
939941Comments behind an identifier on the same line:
940942
941943``` pascal
942944var
943945 identifier, // Comment
944946 other,
945947```
946948
947949Comments behind the definition on the same line:
948950
949951``` pascal
950952var
951953 identifier:
952954 char; // Comment
953955```
954956
955957An example for **\<** sign:
956958
957959``` pascal
958960const
959961 a = 1;
960962 //< comment for a
961963 b = 2;
962964 // comment for c
963965 c = 3;
964966```
965967
966968All three comment types are supported:
967969
968970``` pascal
969971 {Comment}(*Comment*)//Comment
970972 c = 1;
971973```
972974
973975### Comments not shown in the hint
974976
975977Comments starting with **\$** or **%** are ignored. For example *//% Hiddden*, *//\$ Hidden*, *(*\$ Hidden*)*.
976978
977979Comments 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:
978980
979981``` pascal
980982type
981983 { TMyClass }
982984
983985 TMyClass = class
984986```
985987
986988The 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.
987989
988990The following comment will be shown for GL_TRUE, but not for GL_FALSE:
989991
990992``` pascal
991993 // Boolean
992994 GL_TRUE = 1;
993995 GL_FALSE = 0;
994996```
995997
996998## Quick Fixes
997999
9981000Quick 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.
9991001
10001002- Unit not found: remove from uses section
10011003- Unit not found: find unit in loaded packages and allow to auto add package dependency
10021004- Constructing a class "\$1" with abstract method "\$2": show dialog to override all abstract methods
10031005- Local variable "\$1" not used: remove definition
10041006- Circular unit reference between \$1 and \$2: show Unit Dependencies dialog with full path between the two units
10051007- Identifier not found: search via Code Browser
10061008- Identifier not found: search via Cody Dictionary (needs package [[Cody]])
10071009- Identifier not found: add local variable
10081010- Recompiling \$1, checksum changed for \$2: show a dialog with search paths and other information
10091011- IDE warning: other sources path of package %s contains directory...: open package
10101012- any hint, note, warning: add IDE directive {%H-}
10111013- any hint, note, warning: add compiler directive {\$warn id off} (since 1.7)
10121014- any hint, note, warning: add compiler option -vm\<messageid\>
10131015- Local variable "i" does not seem to be initialized: insert assignment (since 1.5)
10141016
10151017## Outline
10161018
10171019Tämä asetus sijaitsee IDEn asetukset ikkunassa, Editori - Näkymä - Merkintä ja osumat - Outline (global).
10181020
10191021Se korostaa Pascalin avainsanoja yhdistäen vastaavat begin - end parit. Tämä sallii isot sisäkkäiset lohkot Esimerkiksi vaikka tälläinen aliohjelman runko:
10201022
10211023``` pascal
10221024 with ADockObject do
10231025 begin
10241026 if DropAlign = alNone then
10251027 begin
10261028 if DropOnControl <> nil then
10271029 DropAlign := DropOnControl.GetDockEdge(DropOnControl.ScreenToClient(DragPos))
10281030 else
10291031 DropAlign := Control.GetDockEdge(DragTargetPos);
10301032 end;
10311033 PositionDockRect(Control, DropOnControl, DropAlign, FDockRect);
10321034 end;
10331035```
10341036
10351037Tuodaan korostaen esiin:
10361038
10371039- ulompi with-do-begin-end oranssin värisenä
10381040- seuraavan tason if-then-begin-end vihreän värisenä
10391041- sisempi if-then-else cyanin värisenä
10401042
10411043![](/wiki-images/3/3c/Ide_outline.png)
10421044
10431045---
10441046*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