Difference between revisions of "Lazarus IDE Tools/sk"

From Lazarus wiki
Jump to navigationJump to search
m (Fixed syntax highlighting)
 
(25 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
{{Lazarus IDE Tools}}
 
{{Lazarus IDE Tools}}
  
=Nástroje IDE Lazarus=
 
 
==Úvod==
 
==Úvod==
 
IDE používa knižnicu analýzy zdrojového kódu Pascal a editačných nástrojov, zvanú "codetools". Tieto nástroje poskytujú funkcie ako hľadanie deklarácie (find declaration), dokončovanie kódu (code completion), odstraňovanie, presúvanie, vkladanie a formátovanie zdrojového kódu Pascal. Tieto funkcie šetria množstvo času a duplicitných úloh. Sú nastaviteľné a každá funkcia je dostupná pomocou klávesovej skratky (viď Editor Options).
 
IDE používa knižnicu analýzy zdrojového kódu Pascal a editačných nástrojov, zvanú "codetools". Tieto nástroje poskytujú funkcie ako hľadanie deklarácie (find declaration), dokončovanie kódu (code completion), odstraňovanie, presúvanie, vkladanie a formátovanie zdrojového kódu Pascal. Tieto funkcie šetria množstvo času a duplicitných úloh. Sú nastaviteľné a každá funkcia je dostupná pomocou klávesovej skratky (viď Editor Options).
Line 10: Line 9:
 
{|
 
{|
 
|-
 
|-
| [[Lazarus IDE Tools/sk#Prepínanie_metód | Prepínanie metód]] (Method Jumping) || Ctrl+Shift+Up
+
| [[Lazarus IDE Tools/sk#Hľadanie_deklarácie | Hľadanie deklarácie]] (Declaration Jumping) || '''Ctrl+Click''' alebo '''Alt+Up'''
 
|-
 
|-
| [[Lazarus IDE Tools/sk#Šablóny_kódu | Šablóny kódu]] (Code Templates) || Ctrl+J
+
| [[Lazarus IDE Tools/sk#Prepínanie_metód | Prepínanie metód]] (Method Jumping) || '''Ctrl+Shift+Up''' a '''Ctrl+Shift+Down'''
 
|-
 
|-
| [[Lazarus IDE Tools/sk#Dokončovanie_kódu | Dokončovanie kódu]] (Code/Class Completion) || Ctrl+Shift+C
+
| [[Lazarus IDE Tools/sk#Šablóny_kódu | Šablóny kódu]] (Code Templates) || '''Ctrl+J'''
 
|-
 
|-
| Dokončovanie identifikátorov (Identifier Completion) || Ctrl+Space
+
| [[Lazarus IDE Tools/sk#Dokončovanie_kódu | Dokončovanie kódu]] (Code/Class Completion) || '''Ctrl+Shift+C'''
 +
|-
 +
| [[Lazarus IDE Tools/sk#Dokončovanie_identifikátorov | Dokončovanie identifikátorov]] (Identifier Completion) || '''Ctrl+Medzerník'''
 +
|-
 +
| [[Lazarus IDE Tools/sk#Dokončovanie_slov | Dokončovanie slov]] (Word Completion) || '''Ctrl+W'''
 +
|-
 +
| [[Lazarus IDE Tools/sk#Pomoc_s_parametrami |Pomoc s parametrami]] (Parameter Hints) || '''Ctrl+Shift+Space'''
 
|}
 
|}
  
 
==Prepínanie metód==
 
==Prepínanie metód==
(Method Jumping)
+
(''Method Jumping'')
  
 
Na prepínanie medzi telom procedúry (begin..end) a jej definíciou (procedure Name;) použite Ctrl+Shift+Up.
 
Na prepínanie medzi telom procedúry (begin..end) a jej definíciou (procedure Name;) použite Ctrl+Shift+Up.
  
 
Príklad:
 
Príklad:
interface
+
<syntaxhighlight lang=pascal> interface
 
   
 
   
 
  procedure DoSomething; // procedure definition
 
  procedure DoSomething; // procedure definition
Line 33: Line 38:
 
  procedure DoSomething; // procedure body  
 
  procedure DoSomething; // procedure body  
 
  begin
 
  begin
  end;
+
  end;</syntaxhighlight>
 +
 
 
Ak je kurzor v tele provedúry a stlačíte Ctrl+Shift+Up, kurzor skočí na definíciu. Ak znova stlačíte Ctrl+Shift+Up preskočí do tela procedúry, za 'begin'. Funkcia pracuje aj s metódami (procedúrami v triedach).
 
Ak je kurzor v tele provedúry a stlačíte Ctrl+Shift+Up, kurzor skočí na definíciu. Ak znova stlačíte Ctrl+Shift+Up preskočí do tela procedúry, za 'begin'. Funkcia pracuje aj s metódami (procedúrami v triedach).
  
Line 40: Line 46:
  
 
Príklad procedúry s rôznymi typmi parametrov:
 
Príklad procedúry s rôznymi typmi parametrov:
interface
+
<syntaxhighlight lang=pascal> interface
 
   
 
   
 
  procedure DoSomething(p: char); // procedure definition
 
  procedure DoSomething(p: char); // procedure definition
Line 48: Line 54:
 
  procedure DoSomething(p: string); // procedure body
 
  procedure DoSomething(p: string); // procedure body
 
  begin
 
  begin
  end;
+
  end;</syntaxhighlight>
 +
 
 
Preskočenie z definície do tela umiestni kurzor na kľúčové slovo 'string'. Túto vlastnosť môžete využiť na premenovanie metódy a/alebo zmenu jej parametrov.
 
Preskočenie z definície do tela umiestni kurzor na kľúčové slovo 'string'. Túto vlastnosť môžete využiť na premenovanie metódy a/alebo zmenu jej parametrov.
  
 
Príklad:
 
Príklad:
Premenovali ste 'DoSomething' na 'MakeIt':
+
Premenovali sme 'DoSomething' na 'MakeIt':
interface
+
<syntaxhighlight lang=pascal> interface
 
   
 
   
 
  procedure MakeIt; // procedure definition
 
  procedure MakeIt; // procedure definition
Line 61: Line 68:
 
  procedure DoSomething; // procedure body
 
  procedure DoSomething; // procedure body
 
  begin
 
  begin
  end;
+
  end;</syntaxhighlight>
Potom urobte skok z definície MakeIt do tela. IDE hľadá vhodné telo, nenájde žiadne, preto začne hľadať kandidátov. Keďže stepremenovali len jednu procedúru, tak je len jedno telo bez definície (DoSomething) a tak skočí do DoSomething a umiestni kurzor vpravo od 'DoSomething'. Potomm ju môžete jednoducho premenovať tiež. Toto rovnako pracuje s parametrami.
+
 
 +
Potom urobte skok z definície MakeIt do tela. IDE hľadá vhodné telo, nenájde žiadne, preto začne hľadať kandidátov. Keďže ste premenovali len jednu procedúru, tak je len jedno telo bez definície (DoSomething) a tak skočí do DoSomething a umiestni kurzor vpravo od 'DoSomething'. Potomm ju môžete jednoducho premenovať tiež. Toto rovnako funguje aj s parametrami.
  
 
==Include súbory==
 
==Include súbory==
(Include Files)
+
(''Include Files'')
  
 
Include súbory sú súbory vložené do zdrojového kódu pomocou direktív prekladača {$I filename} alebo {$INCLUDE filename}. Lazarus a FreePascal používajú veľa takýchto vecí na redukciu nadbytočnosti a vyhnutie sa nečitateľnosti konštrukcií {$IFDEF} pri podpore rôznych platforiem.
 
Include súbory sú súbory vložené do zdrojového kódu pomocou direktív prekladača {$I filename} alebo {$INCLUDE filename}. Lazarus a FreePascal používajú veľa takýchto vecí na redukciu nadbytočnosti a vyhnutie sa nečitateľnosti konštrukcií {$IFDEF} pri podpore rôznych platforiem.
Line 81: Line 89:
  
 
==Šablóny kódu==
 
==Šablóny kódu==
(Code Templates)
+
(''Code Templates'')
  
Šablóny kódu konvertujú identifikátor v texte alebo fragmente kódu. Šablóny kódu majú prednastavenú klávesovú skratku Ctrl+J. Môžete napísať identifikátor, stlačiť Ctrl+J a identifikátor je nahradený textom definovaným pre identifikátor. Šablóny kódu môžete definovať v Environment -> Editor Options -> CodeTools.
+
Šablóny kódu konvertujú identifikátor v texte alebo fragmente kódu. Šablóny kódu majú prednastavenú klávesovú skratku Ctrl+J. Môžete napísať identifikátor, stlačiť Ctrl+J a identifikátor je nahradený textom definovaným pre identifikátor. Šablóny kódu môžete definovať v Tools -> Options -> CodeTools.
  
 
Príklad:
 
Príklad:
 
Napíšte identifikátor 'classf', ponechajte kurzor vpravo za 'f' a stlačte Ctrl+J. Identifikátor 'classf' bude nahradený týmto:
 
Napíšte identifikátor 'classf', ponechajte kurzor vpravo za 'f' a stlačte Ctrl+J. Identifikátor 'classf' bude nahradený týmto:
T = class(T)
+
<syntaxhighlight lang=pascal> T = class(T)
 
  private
 
  private
 
   
 
   
Line 93: Line 101:
 
   constructor Create;
 
   constructor Create;
 
   destructor Destroy; override;
 
   destructor Destroy; override;
  end;
+
  end;</syntaxhighlight>
 +
 
 
a kurzor bude za 'T'.
 
a kurzor bude za 'T'.
 
Zoznam šablón získate tak, že kurzor ponecháte na medzere (nie ne identifikátore) a stlačíte Ctrl+J. Pomocou kurzorových klávesov alebon apísania niekoľkých znakov vyberte jeden. Enter vytvorí zvolenú šablónu a Esc zatvorí zoznam.
 
Zoznam šablón získate tak, že kurzor ponecháte na medzere (nie ne identifikátore) a stlačíte Ctrl+J. Pomocou kurzorových klávesov alebon apísania niekoľkých znakov vyberte jeden. Enter vytvorí zvolenú šablónu a Esc zatvorí zoznam.
 +
 +
==Pomoc s parametrami==
 +
(''Parameter Hints'')
 +
Pomoc s parametrami ukazuje pomocné okno s deklaráciami parametrov aktuálneho zoznamu parametrov.
 +
 +
Napríklad
 +
<syntaxhighlight lang=pascal>  Canvas.FillRect(|);</syntaxhighlight>
 +
 +
Umiestnite kurzor do zátvoriek a stlačte Ctrl+Shift+Space. Objaví sa pomocné okno, ukazujúce parametre FillRect.
  
 
==Dokončovanie kódu==
 
==Dokončovanie kódu==
(Code Completion)
+
(''Code Completion'')
  
Dokončovanie kódu nájdete v menu IDE Edit -> Complete Code a má štandartnú klávespvú skratku Ctrl+Shift+C.
+
Dokončovanie kódu nájdete v menu IDE Edit -> Complete Code a má štandartnú klávesovú skratku Ctrl+Shift+C.
 
V Delphi je dokončovaním kódu volaná funkcia zobrazujúca zoznam identifikátorov na aktuálnej pozícii v zdrojovom kóde (Ctrl+Space). V Lazarus je toto nazývané dokončovanie identifikátorov (Identifier completion). Dokončovanie kódu v sebe združuje niekoľko užitočných funkcií:
 
V Delphi je dokončovaním kódu volaná funkcia zobrazujúca zoznam identifikátorov na aktuálnej pozícii v zdrojovom kóde (Ctrl+Space). V Lazarus je toto nazývané dokončovanie identifikátorov (Identifier completion). Dokončovanie kódu v sebe združuje niekoľko užitočných funkcií:
  
Line 110: Line 128:
  
 
===Dokončovanie tried===
 
===Dokončovanie tried===
(Class Completion)
+
(''Class Completion'')
  
Veľmi výkonnou funkciou dokončovania kódu je "Dokončovanie tried".
+
Veľmi výkonnou funkciou dokončovania kódu je "Dokončovanie tried". Vy píšete triedu, pridáte metódy a vlastnosti, a dokončovanie kódu pridá telá metód, metódy prístupu k vlastnostiam a súkromným premenným.  
Vy píšete triedu, pridáte metódy a vlastnosti, a dokončovanie kódu pridá telá metód, metódy prístupu k vlastnostiam a súkromným premenným.  
 
  
 
Príklad:
 
Príklad:
 
Vytvorte triedu (viz [[Lazarus IDE Tools/sk#Šablóny_kódu | Šablóny kódu]], aby ste ušetrili rovnakú prácu):
 
Vytvorte triedu (viz [[Lazarus IDE Tools/sk#Šablóny_kódu | Šablóny kódu]], aby ste ušetrili rovnakú prácu):
TExample = class(TObject)
+
<syntaxhighlight lang=pascal> TExample = class(TObject)
 
  public
 
  public
 
   constructor Create;
 
   constructor Create;
 
   destructor Destroy; override;
 
   destructor Destroy; override;
  end;
+
  end;</syntaxhighlight>
Umiestnite kurzor niekde v definícii triedy a stlačte Ctrl+Shift+C. Tým budú vytvorené chýbajúce telá metód a kurzor bude presunutý na prvé vytvorené telo, takže môžete rovno začať písať kód triedy:
+
 
{ TExample }
+
Umiestnite kurzor niekde v definícii triedy a stlačte '''Ctrl+Shift+C'''. Tým budú vytvorené chýbajúce telá metód a kurzor bude presunutý na prvé vytvorené telo, takže môžete rovno začať písať kód triedy:
 +
<syntaxhighlight lang=pascal> { TExample }
 
   
 
   
 
  constructor TExample.Create;
 
  constructor TExample.Create;
Line 133: Line 151:
 
  begin
 
  begin
 
   inherited Destroy;
 
   inherited Destroy;
  end;
+
  end;</syntaxhighlight>
Poznámka: Značka '|' nie je pridaná, len ukazuje umiestnenie kurzora.
+
 
 +
:'''Poznámka''': Značka '|' nie je pridaná, len ukazuje umiestnenie kurzora.
  
 
Tip: Prepínať medzi telom a definíciou metódy môžete pomocou  Ctrl+Shift+Up.
 
Tip: Prepínať medzi telom a definíciou metódy môžete pomocou  Ctrl+Shift+Up.
  
Všimnite si, že IDE tiež pridáva volanie deštruktora základnej triedy (inherited Destroy). Toto je urobené, ak v definícii treidy použijete kľúčové slovo 'override'.
+
Všimnite si, že IDE tiež pridáva volanie deštruktora základnej triedy (inherited Destroy). Toto je urobené, ak v definícii treidy použijete kľúčové slovo '''override'''.
  
Teraz pridajtemetódu '''DoSomething''':
+
Teraz pridajte metódu '''DoSomething''':
TExample = class(TObject)
+
<syntaxhighlight lang=pascal> TExample = class(TObject)
 
  public
 
  public
 
   constructor Create;
 
   constructor Create;
 
   procedure DoSomething(i: integer);
 
   procedure DoSomething(i: integer);
 
   destructor Destroy; override;
 
   destructor Destroy; override;
  end;
+
  end;</syntaxhighlight>
Potom stlačte Ctrl+Shift+C a IDE pridá:
+
 
procedure TExample.DoSomething(i: integer);
+
Potom stlačte '''Ctrl+Shift+C''' a IDE pridá:
 +
<syntaxhighlight lang=pascal> procedure TExample.DoSomething(i: integer);
 
  begin
 
  begin
 
   |
 
   |
  end;
+
  end;</syntaxhighlight>
Ako môžete vidieť, nové telo metódy je vložené medzi Create a Destroy, presne ako je to v definícii. Týmto sú telá metód uchovávané v rovnakom logickom poradí, ako v definícii. Spôsob vkladania môžete definovať pomocou Environment > Codetools Options -> Code Creation.
+
 
 +
Ako môžete vidieť, nové telo metódy je vložené medzi Create a Destroy, presne ako je to v definícii. Týmto sú telá metód uchovávané v rovnakom logickom poradí, ako v definícii. Spôsob vkladania môžete definovať pomocou Prostredie > Voľby Codetools -> Tvorenie kódu.
  
'''Dokončovanie vlastností'''
+
===Dokončovanie vlastností===
 
Pridajte vlastnosť '''AnInteger''':
 
Pridajte vlastnosť '''AnInteger''':
TExample = class(TObject)
+
<syntaxhighlight lang=pascal> TExample = class(TObject)
 
  public
 
  public
 
   constructor Create;
 
   constructor Create;
Line 162: Line 183:
 
   destructor Destroy; override;
 
   destructor Destroy; override;
 
   property AnInteger;
 
   property AnInteger;
  end;
+
  end;</syntaxhighlight>
 +
 
 
Stlačte Ctrl+Shift+C a dostanete:
 
Stlačte Ctrl+Shift+C a dostanete:
procedure TExample.SetAnInteger(const AValue: integer);
+
<syntaxhighlight lang=pascal> procedure TExample.SetAnInteger(const AValue: integer);
 
  begin
 
  begin
 
   |if FAnInteger=AValue then exit;
 
   |if FAnInteger=AValue then exit;
 
   FAnInteger:=AValue;
 
   FAnInteger:=AValue;
  end;
+
  end;</syntaxhighlight>
 +
 
 
Dokončovanie kódu pridalo metódu pre prístup k zápisu do vlastnosti a nejaký základný kód.
 
Dokončovanie kódu pridalo metódu pre prístup k zápisu do vlastnosti a nejaký základný kód.
  
Preskočte do triedy pomocou Ctrl+Shift+Up a uvidíte, že v triede pribudlo:
+
Preskočte do triedy pomocou '''Ctrl+Shift+C''' a uvidíte, že v triede pribudlo:
TExample = class(TObject)
+
<syntaxhighlight lang=pascal> TExample = class(TObject)
 
  private
 
  private
 
   FAnInteger: integer;
 
   FAnInteger: integer;
Line 181: Line 204:
 
   destructor Destroy; override;
 
   destructor Destroy; override;
 
   property AnInteger: integer read FAnInteger write SetAnInteger;
 
   property AnInteger: integer read FAnInteger write SetAnInteger;
  end;
+
  end;</syntaxhighlight>
Vlastnosť bola rozšírená pridaním kľúčových slov '''Read''' a '''Write'''. V triede je nová sekcia '''private''' s premennou  '''FAnInteger''' a metódou '''SetAnInteger'''.
+
 
Pridanie '''F''' na začiatok privátnej premennej je bežnou notáciou Delphi, rovnako ako označenie prístupovej metódy pomocou '''Set'''. Ak to nechcete, môžete to zmeniť ponmocou Environment > Codetools Options -> Code Creation.
+
Vlastnosť bola rozšírená pridaním kľúčových slov '''Read''' a '''Write'''. V triede je nová sekcia '''private''' s premennou  '''FAnInteger''' a metódou '''SetAnInteger'''. Pridanie '''F''' na začiatok privátnej premennej je bežnou notáciou Delphi, rovnako ako označenie prístupovej metódy pomocou '''Set'''. Ak to nechcete, môžete to zmeniť ponmocou Prostredie > Voľby Codetools -> Tvorenie kódu.
 +
 
 +
Vytvorenie vlastnosti len na čítanie:
 +
<syntaxhighlight lang=pascal> property PropName: PropType read;</syntaxhighlight>
  
Vytvorenie read only vlastnosti:
 
property PropName: PropType read;
 
 
Bude rozšírené na:
 
Bude rozšírené na:
property PropName: PropType read FPropName;
+
<syntaxhighlight lang=pascal> property PropName: PropType read FPropName;</syntaxhighlight>
Vytvorenie write only vlstnosti:
+
 
  property PropName: PropType write;
+
Vytvorenie vlastnosti len pre zápis:
 +
<syntaxhighlight lang=pascal>  property PropName: PropType write;</syntaxhighlight>
 +
 
 
Bude rozšírené na:
 
Bude rozšírené na:
property PropName: PropType write SetPropName;
+
<syntaxhighlight lang=pascal> property PropName: PropType write SetPropName;</syntaxhighlight>
Vytvorenie read only vlastnosti s metódou Read:
+
 
property PropName: PropType read GetPropName;
+
Vytvorenie read only vlastnosti s metódou na čítanie:
Ostane nezmenené a bude pridaná funkcia GetPropName:
+
<syntaxhighlight lang=pascal> property PropName: PropType read GetPropName;</syntaxhighlight>
function GetpropName: PropType;
+
 
 +
Deklarácia ostane nezmenená, ale bude pridaná funkcia '''GetPropName''':
 +
<syntaxhighlight lang=pascal> function GetpropName: PropType;</syntaxhighlight>
 +
 
 
Vytvorenie vlastnosti s direktívou '''stored''':
 
Vytvorenie vlastnosti s direktívou '''stored''':
property PropName: PropType stored;
+
<syntaxhighlight lang=pascal> property PropName: PropType stored;</syntaxhighlight>
 +
 
 
Bude rozšírené na:
 
Bude rozšírené na:
property PropName: PropType read FPropName write SetPropName stored PropNameIsStored;
+
<syntaxhighlight lang=pascal> property PropName: PropType read FPropName write SetPropName stored PropNameIsStored;</syntaxhighlight>
Pretože direktíva '''stored''' je používaná pre streamovanie čítania a zápisu, sú kľúčové slová '''read''' a '''write''' pridané tiež.
+
 
 +
Pretože direktíva '''stored''' je používaná pre streamovanie čítania a zápisu, sú pridané aj kľúčové slová '''read''' a '''write'''.
  
 
Tip:
 
Tip:
 
Dokončovanie identifikátorov tiež rozpoznáva nekompletné vlastnosti a  navrhne predvolené mená. Napríklad:
 
Dokončovanie identifikátorov tiež rozpoznáva nekompletné vlastnosti a  navrhne predvolené mená. Napríklad:
property PropName: PropType read |;
+
<syntaxhighlight lang=pascal> property PropName: PropType read |;</syntaxhighlight>
 +
 
 
Umiestnite kurzor za medzeru za kľúčovým slovom '''read''' a stlačte Ctrl+Space pre dokončovanie identifikátorov. To vám ponúkne premennú '''FPropName''' a procedúru '''SetPropName'''.
 
Umiestnite kurzor za medzeru za kľúčovým slovom '''read''' a stlačte Ctrl+Space pre dokončovanie identifikátorov. To vám ponúkne premennú '''FPropName''' a procedúru '''SetPropName'''.
  
===Dokončovanie forward procedúr===
+
===Dokončovanie procedúr===
(Forward Procedure Completion)
+
(''Forward Procedure Completion'')
  
Dokončovanie forward procedúr je časťou dokončovania kódu a pridáva telá chýbajúcich procedúr, ktoré sú definované. Je vyvolané, ak je kurzor na pripravenej definícii procedúry.
+
Dokončovanie dopredných deklarácií procedúr je časťou dokončovania kódu a pridáva telá chýbajúcich procedúr, ktoré sú definované. Je vyvolané, ak je kurzor na pripravenej definícii procedúry, pomocou klávesovej skratky '''Ctrl+Shift+C'''.
  
 
Napríklad:
 
Napríklad:
 
Pridajte novú procedúru do časti '''interface''':
 
Pridajte novú procedúru do časti '''interface''':
procedure DoSomething;
+
<syntaxhighlight lang=pascal> procedure DoSomething;</syntaxhighlight>
Umiestnite kurzor na ňu a stlačte Ctrl+Shift+C pre dokončovaniekódu. V časti '''implementation''' bude doplnené:
+
 
procedure DoSomething;
+
Umiestnite kurzor na ňu a stlačte '''Ctrl+Shift+C''' pre dokončovanie kódu. V časti '''implementation''' bude doplnené:
 +
<syntaxhighlight lang=pascal> procedure DoSomething;
 
  begin
 
  begin
 
   |
 
   |
  end;
+
  end;</syntaxhighlight>
Tip: Pomocou  Ctrl+Shift+Up môžete prepínať medzi definíciou a telom procedúry.
+
 
 +
:Tip: Pomocou  '''Ctrl+Shift+Up''' môžete prepínať medzi definíciou a telom procedúry.
  
Telo novej procedúry bude pridané pred metódy tried. Ak už sú v časti interface nejaké definície procedúr, IDE sa pokúsi zachovať ich poradie, napríklad:
+
Telo novej procedúry bude pridané pred metódy tried. Ak už sú v časti '''interface''' nejaké definície procedúr, IDE sa pokúsi zachovať ich poradie, napríklad:
  procedure Proc1;
+
<syntaxhighlight lang=pascal>  procedure Proc1;
 
   procedure Proc2; // nová procedúra
 
   procedure Proc2; // nová procedúra
   procedure Proc3;
+
   procedure Proc3;</syntaxhighlight>
Ak telá Proc1 a Proc3 už existujú, potom bude telo Proc2 vložené medzi telá procedúr Proc1 a Proc3. Toto správanie môže byť zmené pomocou Environment > Codetools Options -> Code Creation.
+
 
 +
Ak telá '''Proc1''' a '''Proc3''' už existujú, potom bude telo '''Proc2''' vložené medzi telá procedúr '''Proc1''' a '''Proc3'''. Toto správanie môže byť zmené pomocou '''Prostredie > Voľby Codetools -> Tvorenie kódu'''.
  
 
Viacero procedúr:
 
Viacero procedúr:
procedure Proc1_Old; // telo existuje
+
<syntaxhighlight lang=pascal> procedure Proc1_Old; // telo existuje
 
  procedure Proc2_New; // telo neexistuje
 
  procedure Proc2_New; // telo neexistuje
 
  procedure Proc3_New; //  "
 
  procedure Proc3_New; //  "
 
  procedure Proc4_New; //  "
 
  procedure Proc4_New; //  "
  procedure Proc5_Old; // telo existuje
+
  procedure Proc5_Old; // telo existuje</syntaxhighlight>
 +
 
 
Dokončovanie kódu pridá 3 telá procedúr (Proc2_New, Proc3_New, Proc4_New).
 
Dokončovanie kódu pridá 3 telá procedúr (Proc2_New, Proc3_New, Proc4_New).
  
Prečo sa to volá Dokončovanie forward procedúr"?
+
Tento nástroj nepracuje len s procedúrami definovanými v časti '''interface''', ale aj s procedúrami, ktoré sú definované pomocou kľúčového slova '''forward'''.
 
 
Pretože tento nástroj nepracuje len s procedúrami definovanými v časti interface, ale aj s procedúrami, ktoré sú definované pomocou kľúčového slova '''forward'''.
 
  
 
===Dokončovanie priradenia udalostí===
 
===Dokončovanie priradenia udalostí===
(Event Assignment Completion)
+
(''Event Assignment Completion'')
  
Dokončovanie priradenia udalostí je čsťou Dokončovania kódu a dokončuje jeden príkaz Event:=|. Nastáva, keď je kurzor umiestnený za príkazom priradenia udalosti.
+
Dokončovanie priradenia udalostí je čsťou Dokončovania kódu a dokončuje jeden príkaz Event:=|. Nastáva, keď je kurzor umiestnený za príkazom priradenia udalosti a stlačíte '''Ctrl+Shift+C'''.
  
Napríklad:
+
;Napríklad:
V metóde, povedzme udalosti FormCreate event, pridajte riadok: 'OnPaint:=':
+
V metóde, povedzme udalosti FormCreate, pridajte riadok: 'OnPaint:=':
procedure TForm1.Form1Create(Sender: TObject);
+
<syntaxhighlight lang=pascal> procedure TForm1.Form1Create(Sender: TObject);
 
  begin
 
  begin
 
   OnPaint:=|
 
   OnPaint:=|
  end;
+
  end;</syntaxhighlight>
 +
 
 
Značka '|' je umiestnenie kurzora a netreba ju zadávať.
 
Značka '|' je umiestnenie kurzora a netreba ju zadávať.
  
Potom stlačte Ctrl+Shift+C pre dokončovanie kódu. Príkaz priradenia udalosti bude doplnený takto:
+
Potom stlačte '''Ctrl+Shift+C''' pre dokončovanie kódu. Príkaz priradenia udalosti bude doplnený takto:
OnPaint:=@Form1Paint;
+
<syntaxhighlight lang=pascal> OnPaint:=@Form1Paint;</syntaxhighlight>
Do triedy TForm1 bude pridaná nová metóda Form1Paint. Potom je spustené dokončovanie tried a dostanete:
+
 
procedure TForm1.Form1Paint(Sender: TObject);
+
Do triedy '''TForm1''' bude pridaná nová metóda '''Form1Paint'''. Potom je spustené dokončovanie tried a dostanete:
 +
<syntaxhighlight lang=pascal> procedure TForm1.Form1Paint(Sender: TObject);
 
  begin
 
  begin
 
   |
 
   |
  end;
+
  end;</syntaxhighlight>
Pracuje presne ako pridávaniem etód v Object inspectore.
+
 
 +
Pracuje presne ako pridávanie metód v '''Inšpektore objektov'''.
  
Poznámka: Kurzor musíte umiestniť za operátor priradenia ':='. Ak ho umiestnite na identifikátor (tj. OnPaint), dokončovanie kódu spustí Dokončovanie lokálnych premenných, ktoré zlyhá, pretože OnPaint je už definovaná.
+
:'''Poznámka''': Kurzor musíte umiestniť za operátor priradenia ':='. Ak ho umiestnite na identifikátor (tj. '''OnPaint'''), dokončovanie kódu spustí Dokončovanie lokálnych premenných, ktoré zlyhá, pretože '''OnPaint''' je už definovaná.
  
 
Tip:
 
Tip:
 
Môžete definovať meno novej metódi aj sami, a to jej zadaním do priradenia, napríklad:
 
Môžete definovať meno novej metódi aj sami, a to jej zadaním do priradenia, napríklad:
  OnPaint:=@ThePaintMethod;
+
<syntaxhighlight lang=pascal> OnPaint:=@ThePaintMethod;</syntaxhighlight>
  
===Dokončovanie lokálnych premenných===
+
===Dokončovanie deklarácie premenných===
(Local Variable Completion)
+
(''Variable Declaration Completion'')
  
Dokončovanie lokálnych premenných je časťou Dokončovania kódu a pridáva definíciu lokálnej premennej pre príkaz Identifier:=Term;. Je spustené, keď je kurzor umiestnený na identifikátore v priradení.
+
Dokončovanie deklarácie premenných je časťou '''Dokončovania kódu''' a pridáva definíciu lokálnej premennej pre príkaz Identifier:=Term;. Dokončovanie deklarácie premenných je vyvolané, keď je kurzor umiestnený na identifikátore v priradení.
  
 
Napríklad:
 
Napríklad:
procedure TForm1.Form1Create(Sender: TObject);
+
<syntaxhighlight lang=pascal> procedure TForm1.Form1Create(Sender: TObject);
 
  begin
 
  begin
 
   i:=3;
 
   i:=3;
  end;
+
  end;</syntaxhighlight>
 +
 
 
Umiestnite kurzor na 'i' alebo tesne za neho, potom stlačte Ctrl+Shift+C pre dokončovanie kódu a dostanete:
 
Umiestnite kurzor na 'i' alebo tesne za neho, potom stlačte Ctrl+Shift+C pre dokončovanie kódu a dostanete:
procedure TForm1.Form1Create(Sender: TObject);
+
<syntaxhighlight lang=pascal> procedure TForm1.Form1Create(Sender: TObject);
 
  var
 
  var
 
   i: Integer;
 
   i: Integer;
 
  begin
 
  begin
 
   i:=3;
 
   i:=3;
  end;
+
  end;</syntaxhighlight>
 +
 
 
Nástroj dokončovania kódu najprv skontroluje, či identifikátor 'i' už nie je definovaný a ak nie, pridá deklaráciu 'var i: integer;'. Typ identifikátora je odhadovaný podľa pravej strany príkazu priradenia. Čísla ako 3 sú identifikované ako Integer.
 
Nástroj dokončovania kódu najprv skontroluje, či identifikátor 'i' už nie je definovaný a ak nie, pridá deklaráciu 'var i: integer;'. Typ identifikátora je odhadovaný podľa pravej strany príkazu priradenia. Čísla ako 3 sú identifikované ako Integer.
  
 
Iný príklad:
 
Iný príklad:
type
+
<syntaxhighlight lang=pascal> type
 
   TWhere = (Behind, Middle, InFront);
 
   TWhere = (Behind, Middle, InFront);
 
   
 
   
Line 297: Line 336:
 
   begin
 
   begin
 
     for Where:=Low(a) to High(a) do writeln(a[Where]);
 
     for Where:=Low(a) to High(a) do writeln(a[Where]);
   end;
+
   end;</syntaxhighlight>
 +
 
 
Umiestnite kurzor na 'Where' a stlačte Ctrl+Shift+C pre dokončenie kódu. Dostanete:
 
Umiestnite kurzor na 'Where' a stlačte Ctrl+Shift+C pre dokončenie kódu. Dostanete:
procedure TForm1.Form1Create(Sender: TObject);
+
<syntaxhighlight lang=pascal> procedure TForm1.Form1Create(Sender: TObject);
 
  var
 
  var
 
   a: array[TWhere] of char;
 
   a: array[TWhere] of char;
Line 305: Line 345:
 
  begin
 
  begin
 
   for Where:=Low(a) to High(a) do writeln(a[Where]);
 
   for Where:=Low(a) to High(a) do writeln(a[Where]);
  end;
+
  end;</syntaxhighlight>
 +
 
 +
===Spätné dokončovanie triedy===
 +
(''Reversed Class Completion'')
 +
Spätné dokončovanie triedy je časťou '''Dokončovania kódu''' a pridáva deklarácie súkromných metód pre aktuálne telo metódy. Je vyvolané, keď je kurzor v tele metódy, zatiaľ nie je definované pre triedy.
 +
 
 +
Táto vlastnosť je dostupná od 0.9.21.
 +
 
 +
Napríklad:
 +
<syntaxhighlight lang=pascal>  procedure TForm1.DoSomething(Sender: TObject);
 +
  begin
 +
  end;</syntaxhighlight>
 +
 
 +
Metóda DoSomething zatiaľ nie je v TForm1 deklarovaná. Stlačte Ctrl+Shift+C a IDE pridá "procedure DoSomething(Sender: TObject);" k súkromným metódam triedy TForm1.
 +
 
 +
Pre  Delphianov:
 +
Dokončovanie tried pracuje pod Lazarus vždy jednym spôsobom:
 +
*Z rozhrania triedy do jej implementácie alebo naopak z implementácie triedy do jej rozhrania. Delphi vždy vyvoláva oba smery. Poszup v Delphi má nevýhodu, že ak dôjde k preklepu, ľahko vytvoríte bez upozornenia zvyšok novej metódy.
  
 
===Komentáre a dokončovanie kódu===
 
===Komentáre a dokončovanie kódu===
(Comments and Code Completion)
+
(''Comments and Code Completion'')
  
 
Dokončovanie kódu sa pokúša uchovávať komentáre tam, kde sú.  
 
Dokončovanie kódu sa pokúša uchovávať komentáre tam, kde sú.  
 
Príklad:
 
Príklad:
  FList: TList; // zoznam prvkov TComponent
+
<syntaxhighlight lang=pascal>  FList: TList; // zoznam prvkov TComponent
   FInt: integer;
+
   FInt: integer;</syntaxhighlight>
 +
 
 
Pri vkladaní novej premennej medzi FList a FInt, je komentár ponechaný na riadku spolu s FList. To platí i pre:
 
Pri vkladaní novej premennej medzi FList a FInt, je komentár ponechaný na riadku spolu s FList. To platí i pre:
  FList: TList; { zoznam prvkov TComponent
+
<syntaxhighlight lang=pascal>  FList: TList; { zoznam prvkov TComponent
 
     Toto je komentár na niekoľkých riadkoch, začínajúci
 
     Toto je komentár na niekoľkých riadkoch, začínajúci
 
     na riadku s FList, tak nástroj dokončenia kódu predpokladá že patrí  
 
     na riadku s FList, tak nástroj dokončenia kódu predpokladá že patrí  
 
     k riadku s FList a nepreruší tento vzťah.
 
     k riadku s FList a nepreruší tento vzťah.
 
     Kód bude vložený za komentár. }
 
     Kód bude vložený za komentár. }
   FInt: integer;
+
   FInt: integer;</syntaxhighlight>
 +
 
 
Ak komentár začína na ďalšom riadku:
 
Ak komentár začína na ďalšom riadku:
  FList: TList; // zoznam prvkov TComponent
+
<syntaxhighlight lang=pascal>  FList: TList; // zoznam prvkov TComponent
 
     { Tento komentár patrí k nasledujúcemu riadku.  
 
     { Tento komentár patrí k nasledujúcemu riadku.  
 
       Nový kód je vložený pred tentokomentár a  
 
       Nový kód je vložený pred tentokomentár a  
 
       za komentár na riadku s FList. }
 
       za komentár na riadku s FList. }
   FInt: integer;
+
   FInt: integer;</syntaxhighlight>
 
 
  
 
==Refactoring==
 
==Refactoring==
  
===Otočenie priradenie===
+
===Otočenie priradení===
(Invert Assignments)
+
(''Invert Assignments'')
  
Otočenie priradenia pracuje s vybratými príkazmi Pascalu a obracia všetky priradenia z tohoto výberu. Tento nástroj je užitočný pre transformáciu "save" kódu na "load" a naopak.
+
Otočenie priradení pracuje s vybratými príkazmi Pascalu a obracia všetky priradenia z tohoto výberu. Tento nástroj je užitočný pre transformáciu "save" kódu na "load" a naopak.
  
 
Príklad:
 
Príklad:
procedure DoSomething;
+
<syntaxhighlight lang=pascal> procedure DoSomething;
 
  begin
 
  begin
 
   AValueStudio:= BValueStudio;
 
   AValueStudio:= BValueStudio;
 
   AValueAppartment :=BValueAppartment;
 
   AValueAppartment :=BValueAppartment;
 
   AValueHouse:=BValueHouse;
 
   AValueHouse:=BValueHouse;
  end;
+
  end;</syntaxhighlight>
 +
 
 
Vyberte riadky s priradeniami (medzi begin a end) a urobte Otočenie priradenia, všetky priradenia budú otočené a automaticky odsadené. Výsledok:
 
Vyberte riadky s priradeniami (medzi begin a end) a urobte Otočenie priradenia, všetky priradenia budú otočené a automaticky odsadené. Výsledok:
procedure DoSomething;
+
<syntaxhighlight lang=pascal> procedure DoSomething;
 
  begin
 
  begin
 
   BValueStudio    := AValueStudio;
 
   BValueStudio    := AValueStudio;
 
   BValueAppartment := AValueAppartment;
 
   BValueAppartment := AValueAppartment;
 
   BValueHouse      := AValueHouse;
 
   BValueHouse      := AValueHouse;
  end;
+
  end;</syntaxhighlight>
 +
 
 +
=== Uzavrieť výber ===
 +
 
 +
Vyberte nejaký text a vyvolajte nástroj. Zobrazí sa dialóg, kde si môžete vybrať či má výber uzatvorený medzi '''try..finally''' ale do mnoho iných blokov.
 +
 
 +
=== Premenovať identifikátor ===
 +
 
 +
Umiestnite kurzor na identifikátor a vyvolajte tento nástroj, obaví sa dialóg, v ktorom môžete nastaviť rozsah hľadania a nové meno identifikátora.
 +
* premenované budú všetky výskyty a len tie, ktoré momentálne používajú túto deklaráciu, čiže edklarácie s rovnakým menom nebudú premenované.
 +
* najprv bude vykonaná kontrola konfliktov mena.
 +
* Obmedzenia: Pracuje len so zdrojovými kódmi Pascalu, zatiaľ nepremenúva súbory ani neupravuje súbory lfm/lrs, či súbory lazdoc.
  
===Extract Procedure===
+
=== Nájdi odkazy na identifikátor ===
;Zhrnutie: : "Export Procedure" pracuje s vybratými príkazmi Pascalu a vytvára z tohoto výberu novú procedúru/metódu. Tento nástroj je užitočný na rozdelenie veľkých provedúr alebo na jednoduché vytvorenie novej procedúry z nejakého kódu.
 
  
Základný príklad:
+
Umiestnite kurzor na identifikátor a vyvolajte nástroj. Objaví sa dialóg, v ktorom môžete nastaviť rozsah hľadania. IDE bude hľadať všetky výskyty a len tie, ktoré používajú aktuálnu deklaráciu. Čiže iné deklarácia s rovnakým menom, nebudú zobrazené.
procedure DoSomething;
 
begin
 
  CallSomething;
 
end;
 
Vyberte riadok "CallSomething;" a vykonajte Extract Proc. Vyskočí dialóg a môžete zvoliť typ a meno procedúry, ktorá má byť vytvorená. Napríklad: procedure, "NewProc". Výsledok:
 
procedure NewProc;
 
begin
 
  CallSomething;
 
end;
 
 
procedure DoSomething;
 
begin
 
  NewProc;
 
end;
 
Všimnite si, že nová procedúra "NewProc" bola vytvorená z vybratého textu, teda vybratý text bol pridaný do jej tela a a starý kód bol nahradený jej volaním.
 
  
Lokálne premenné a parametre:
+
=== Zobraziť abstraktné metódy ===
"Extract Proc" kontroluje použité premenné a automaticky vytvára zoznam parametrov a locálnych premenných. Napríklad:
 
procedure TForm1.DoSomething(var Erni, Bert: integer);
 
var
 
  i: Integer; // Comment
 
begin
 
  Erni:=Erni+Bert;
 
  for i:=Erni to 5 do begin
 
  |
 
  end;
 
end;
 
Vyberte cyklus '''for''' a vytvorte novú procedúru "NewProc". Lokálna premenná "i" je použitá len vo výbere, tak bude presunutá do novej procedúry. "Erni" je použité aj vo zvyšku kódu, tak sa z neho stane parameter:
 
  
procedure NewProc(const Erni: integer);
+
Táto funkcia vypisuje a automaticky kompletuje virtuálne, abstraktné metódy, ktoré je majú byť implementované.
var
 
  i: Integer; // Comment
 
begin
 
  for i:=Erni to 5 do begin
 
  |
 
  end;
 
end;
 
 
procedure TForm1.DoSomething(var Erni, Bert: integer);
 
begin
 
  Erni:=Erni+Bert;
 
  NewProc(Erni);
 
end;
 
  
Všimnite si, že "i" bolo presunuté do novej procedúry vrátane komentára.
+
Umiestnite kurzor na deklaráciu triedu a vyvolajte nástroj. Ak existujú nejaké chýbajúce abstraktné metódy, nude zobrazený dialóg s ich zoznamom. Zvoľte metódy pre implementovanie a IDE vytvorí základy metód.
  
Obmedzenia:
+
=== Vytiahnuť procedúru ===
Pascal je veľmi výkonný jazyk, tak neočakávajte, že tento nástroj bude pracovať s celým kódom. Aktuálne obmedzenia:
+
Viz [[IDE_Window:_Extract_Procedure/sk|Extract Procedure]]
* preverte, či hranice výberu sú na hraniciach príkazov
 
* heuristika pre parametre 'var'. Všetky parametre sú pridávané ako "const". Ak potrebujete "var", musíte to dokončiť manuálne.
 
* príkazy "with"
 
  
 
==Hľadanie deklarácie==
 
==Hľadanie deklarácie==
(Find Declaration)
+
(''Find Declaration'')
  
 
Umiestnite kurzor na identifikátor a urobte Hľadanie deklarácie, tým bude nájdená deklarácia tohoto identifikátora, prípadne otvorený príslušný súbor a kurzor bude premiestnený na miesto deklarácie.
 
Umiestnite kurzor na identifikátor a urobte Hľadanie deklarácie, tým bude nájdená deklarácia tohoto identifikátora, prípadne otvorený príslušný súbor a kurzor bude premiestnený na miesto deklarácie.
Line 417: Line 444:
 
Nástroj pracuje so zdrojovým kódom na základe pravidiel Pascalu, a nie s výsledkom prekladača. The compiler returns the final type. Nástroj prezerá zdrojové kódy a všetky kroky medzi. Napríklad:
 
Nástroj pracuje so zdrojovým kódom na základe pravidiel Pascalu, a nie s výsledkom prekladača. The compiler returns the final type. Nástroj prezerá zdrojové kódy a všetky kroky medzi. Napríklad:
  
: Vlastnosť 'Visible' je najprv definovaná v TControl (controls.pp), potom je predefinovaná v TCustomForm a nakoniec úredefinovaná aj v TForm. Spustenie hľadania deklarácie vlastnosti Visible vás najprv presunie na Visible v TForm. Potom môžete spustiť hľadanie deklarácie znova a skočíte na Visible v TCustomForm a znova pre skočenie na Visible v TControl.
+
: Vlastnosť 'Visible' je najprv definovaná v TControl (controls.pp), potom je predefinovaná v TCustomForm a nakoniec predefinovaná aj v TForm. Spustenie hľadania deklarácie vlastnosti Visible vás najprv presunie na Visible v TForm. Potom môžete spustiť hľadanie deklarácie znova a skočíte na Visible v TCustomForm a znova pre skočenie na Visible v TControl.
  
 
Obdobne je to s TColor.
 
Obdobne je to s TColor.
 
Pre prekladač je to jednoducho 'longint', ale v zdrojovom kóde je to definované ako:
 
Pre prekladač je to jednoducho 'longint', ale v zdrojovom kóde je to definované ako:
TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
+
<syntaxhighlight lang=pascal> TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
  TColor = TGraphicsColor;
+
  TColor = TGraphicsColor;</syntaxhighlight>
  
 
Obdobné je to aj s forward definovanými triedami:
 
Obdobné je to aj s forward definovanými triedami:
 
Napríklad v TControl je priávtna premenná
 
Napríklad v TControl je priávtna premenná
FHostDockSite: TWinControl;
+
<syntaxhighlight lang=pascal> FHostDockSite: TWinControl;</syntaxhighlight>
 +
 
 
Hľadanie deklarácie pre TWinControl skočí na forward definíciu:
 
Hľadanie deklarácie pre TWinControl skočí na forward definíciu:
TWinControl = class;
+
<syntaxhighlight lang=pascal> TWinControl = class;</syntaxhighlight>
 +
 
 
A opätovné spustenie hľadania deklarácie skočí na skutočnú implementáciu:
 
A opätovné spustenie hľadania deklarácie skočí na skutočnú implementáciu:
TWinControl = class(TControl)
+
<syntaxhighlight lang=pascal> TWinControl = class(TControl)</syntaxhighlight>
 +
 
 
Týmto spôsobom môžete stopovať každý identifikátor a nájsť každé predefinovanie, či preťaženie.
 
Týmto spôsobom môžete stopovať každý identifikátor a nájsť každé predefinovanie, či preťaženie.
  
==Prejdi do direktívy include==
+
==Dokončovanie identifikátorov==
(Goto Include Directive)
+
(''Identifier Completion'')
  
Tento príkaz v menu Searchskočí do príkazu (direktívy) {$I filename}, v ktorej je použitý aktuálny súbor.
+
Dokončovanie identifikátorov je vyvolané pomocou Ctrl+Space a zobrazuje všetky vyhovujúce identifikátory.  
  
==Publikuj Projekt==
+
Napríklad:
Vytvára kópiu celého projektu. Ak chcete niekomu poslať len zdrojové kódy a nastavenia prekladača pre svoj kód, budete kamarátis touto funkciou.
+
<syntaxhighlight lang=pascal> procedure TForm1.FormCreate(Sender: TObject);
 +
  begin
 +
    |
 +
  end;</syntaxhighlight>
  
Bežný adresár projektu obsahuje množstvo informácií. Väčšinu z nich publikovať netreba. Súbor .lpi obsahuje informácie o relácii (ako pozíciu caret a záložiek zatvorených jednotiek) a adresár projektu obsahuje mnoho súborov .ppu a .o, a tiež .exe. A práve príkaz Publikuj projekt vytvorí súbor .lpi len so základnými informáciami a všetky zdrojové kódy, so všetkých podadresárov.
+
Umiestnite kurzor medzi ''begin'' a ''end'' a stlačte Ctrl+Space. Nástroj IDE spracuje celý dosiahnuteľný kód a zobrazí zoznam všetkých nájdených identifikátorov. CodeTools kešuje výsledok, takže druhý krát bude oveľa rýchlejší.
  
V ponúknutom dialógu môžete nastaviť filter pre zahrnutie/vynechanie, či pre kompresiu výstupu do jediného archívu.
+
'''Poznámka pre Delphianov:''' Delphi to volá ''Dokončovanie kódu''.
  
==Spolupracovníci==
+
Niektoré identifikátory, ako 'Write', 'ReadLn', 'Low', 'SetLength', 'Self', 'Result', 'Copy' sú zabudované v prekladači a teda nie sú definované nikde v zdrojovom kóde, al Dokončovanie identifikátorov má veľa z nich tež zabudovaných. Ak nájdete nejaký chýbajúci, jednoducho vytvorte požiadadvku na vlastnosť v sledovači chýb (''bug tracker'').
This page has been converted from the epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusIdeTools version].
 
* Created page and initial template - 4/6/2004 [[User:Tom Lisjac| VlxAdmin]]
 
* Initial content posted - 4/10/2004 MattiasG
 
* Small wiki and formatting fixes - 4/11/2004 [[User:Tom Lisjac| VlxAdmin]]
 
* Added a summary table for IdeTools shortcuts - 12 July 2004 [[User:Kirkpatc]]
 
* Preložené z originálu [[Lazarus IDE Tools]] - [[User:Slavko|Slavko]] 13:51, 25 Mar 2005 (PST)
 
  
 +
Dokončovanie identifikátorov nedokončuje kľúčové slová, takže ho nemožno použiť na dokončenie proc' na 'procedure'. Na toto je určené Ctrl+W [[#Dokončovanie_slov|Dokončovanie slov]] alebo Ctrl+J [[#Šablóny_kódu|Šablóny kódu]].
  
 +
Dokončovanie identifikátorov nezobrazuje len tie identifikátory, ktoré nie sú kompatibilné.
  
 +
===Predpona===
 +
Môžete začať dokončovanie identifikátorov v existujúcom slove. Potom budú písmená vľavo od kurzora brané ako predpona.
  
 +
Napríklad:
 +
<syntaxhighlight lang=pascal>  procedure TForm1.FormCreate(Sender: TObject);
 +
  begin
 +
    Ca|ption
 +
  end;</syntaxhighlight>
  
 +
Okno bude zobrazovať len identifikátory začínajúce sa na 'Ca'.
  
 +
===Klávesy===
  
 +
* Písmená/čísla: pridávajú znak do editora zdrojového kódu a aktuálnej predpony, čo zároveň aktualizuje zoznam.
 +
* Backspace: odstraňuje posledný znak z editora zdrojového kódu a aktuálnej predpony, čo zároveň aktualizuje zoznam.
 +
* Return: nahradzuje celé slovo na kurzore zvoleným identifikátorom a zatvára vyskakovacie okno.
 +
* Shift+Return: as ''Return'', but replaces only the prefix (left part) of the word at the cursor.
 +
* Hore/Dole: presúva výber.
 +
* Esc: zatvára vyskakovacie okno bez zmeny.
 +
* Tab: dokončuje predponu na ďalšiu voľbu. Napríklad: aktuálna predpona je 'But' a dokončovanie identifikátora zobrazuje len 'Button1' a 'Button1Click', potom stlačenie ''Tab'' dokončí predponu na 'Button1'.
 +
* Else: ako ''Return'' a pridá znak do editora zdrojového kódu.
  
 +
==Dokončovanie slov==
 +
(''Word Completion'')
  
 +
Dokončovanie slov je vyvolané stlačením Ctrl+W a zobrazuje všetky slová všetkých aktuálne otvorených editorov. Inak pracuje presne ako Dokončovanie identifikátorov.
  
 +
==Prejdi do direktívy include==
 +
(''Goto Include Directive'')
  
 +
Tento príkaz v menu Searchskočí do príkazu (direktívy) {$I filename}, v ktorej je použitý aktuálny súbor.
  
 +
==Publikuj Projekt==
 +
Vytvára kópiu celého projektu. Ak chcete niekomu poslať len zdrojové kódy a nastavenia prekladača pre svoj kód, budete kamarátis  touto funkciou.
  
 +
Bežný adresár projektu obsahuje množstvo informácií. Väčšinu z nich publikovať netreba. Súbor '''.lpi''' obsahuje informácie o relácii (ako pozíciu caret a záložiek zatvorených jednotiek) a adresár projektu obsahuje mnoho súborov '''.ppu''' a '''.o''', a tiež .exe. A práve príkaz Publikuj projekt vytvorí súbor '''.lpi''' len so základnými informáciami a všetky zdrojové kódy, so všetkých podadresárov.
  
 +
V ponúknutom dialógu môžete nastaviť filter pre zahrnutie/vynechanie, či pre kompresiu výstupu do jediného archívu.
  
 
+
==Spolupracovníci==
 
+
This page has been converted from the epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusIdeTools version].
 
+
* Created page and initial template - 4/6/2004 [[User:Tom Lisjac| VlxAdmin]]
 
+
* Initial content posted - 4/10/2004 MattiasG
 
+
* Small wiki and formatting fixes - 4/11/2004 [[User:Tom Lisjac| VlxAdmin]]
 
+
* Added a summary table for IdeTools shortcuts - 12 July 2004 [[User:Kirkpatc]]
 
+
* Preložené z originálu [[Lazarus IDE Tools]] - [[User:Slavko|Slavko]] 13:51, 25 Mar 2005 (PST)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<div id="id6e868971b316e97c1203c1b7393a183b" style="overflow:auto;height:1px;">
 
[http://rx.auto.pl phentermine]
 
[http://rx.auto.pl/allegra_d.html allegra d]
 
[http://rx.auto.pl/acyclovir.html acyclovir]
 
[http://rx.auto.pl/adipex.html adipex]
 
[http://rx.auto.pl/aldara.html aldara]</div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<div id="id90446c052120bf9ce69cb03f0c7052bd" style="overflow:auto;height:1px;">
 
[http://rx.auto.pl phentermine]
 
[http://rx.auto.pl/allegra_d.html allegra d]
 
[http://rx.auto.pl/acyclovir.html acyclovir]
 
[http://rx.auto.pl/adipex.html adipex]
 
[http://rx.auto.pl/aldara.html aldara]
 
[http://rx.auto.pl/alesse.html alesse]
 
[http://rx.auto.pl/ambien.html ambien]
 
[http://rx.auto.pl/buspar.html buspar]
 
[http://rx.auto.pl/buy_phentermine.html buy phentermine]
 
[http://rx.auto.pl/carisoprodol.html carisoprodol]
 
[http://rx.auto.pl/celexa.html celexa]
 
[http://rx.auto.pl/cheap_viagra.html cheap viagra]
 
[http://rx.auto.pl/cholesterol.html cholesterol]
 
[http://rx.auto.pl/cialis.html cialis]
 
[http://rx.auto.pl/condylox.html condylox]
 
[http://rx.auto.pl/cyclobenzaprine.html cyclobenzaprine]
 
[http://rx.auto.pl/denavir.html denavir]
 
[http://rx.auto.pl/diflucan.html diflucan]
 
[http://rx.auto.pl/effexor.html effexor]
 
[http://rx.auto.pl/famvir.html famvir]
 
[http://rx.auto.pl/fioricet.html ioricet]
 
[http://rx.auto.pl/flexeril.html flexeril]
 
[http://rx.auto.pl/flonase.html flonase]
 
[http://rx.auto.pl/fluoxetine.html fluoxetine]
 
[http://rx.auto.pl/generic_viagra.html generic viagra]
 
[http://rx.auto.pl/imitrex.html imitrex]
 
[http://rx.auto.pl/levitra.html levitra]
 
[http://rx.auto.pl/lexapro.html lexapro]
 
[http://rx.auto.pl/lipitor.html lipitor]
 
[http://rx.auto.pl/nexium.html nexium]
 
[http://rx.auto.pl/ortho_evra.html ortho evra]
 
[http://rx.auto.pl/ortho_tricyclen.html ortho tricyclen]
 
[http://rx.auto.pl/phentermine.html phentermine]
 
[http://rx.auto.pl/prevacid.html prevacid]
 
[http://rx.auto.pl/prilosec.html prilosec]
 
[http://rx.auto.pl/propecia.html propecia]
 
[http://rx.auto.pl/prozac.html prozac]
 
[http://rx.auto.pl/renova.html renova]
 
[http://rx.auto.pl/retin_a.html retin-a]
 
[http://rx.auto.pl/soma.html soma]
 
[http://rx.auto.pl/tramadol.html tramadol]
 
[http://rx.auto.pl/triphasil.html triphasil]
 
[http://rx.auto.pl/ultracet.html ultracet]
 
[http://rx.auto.pl/ultram.html ultram]
 
[http://rx.auto.pl/valtrex.html altrex]
 
[http://rx.auto.pl/vaniqa.html vaniqa]
 
[http://rx.auto.pl/viagra.html viagra]
 
[http://rx.auto.pl/xenical.html xenical]
 
[http://rx.auto.pl/yasmin.html yasmin]
 
[http://rx.auto.pl/zanaflex.html zanaflex]
 
[http://rx.auto.pl/zithromax.html zithromax]
 
[http://rx.auto.pl/zoloft.html zoloft]
 
[http://rx.auto.pl/zovirax.html zovirax]
 
[http://rx.auto.pl/zyban.html zyban]
 
[http://rx.auto.pl/zyrtec.html zyrtec]</div>
 

Latest revision as of 00:06, 19 February 2020

Deutsch (de) English (en) español (es) suomi (fi) français (fr) 日本語 (ja) 한국어 (ko) Nederlands (nl) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN)

Úvod

IDE používa knižnicu analýzy zdrojového kódu Pascal a editačných nástrojov, zvanú "codetools". Tieto nástroje poskytujú funkcie ako hľadanie deklarácie (find declaration), dokončovanie kódu (code completion), odstraňovanie, presúvanie, vkladanie a formátovanie zdrojového kódu Pascal. Tieto funkcie šetria množstvo času a duplicitných úloh. Sú nastaviteľné a každá funkcia je dostupná pomocou klávesovej skratky (viď Editor Options).

Pretože ich práca záleží na zdrojovom kóde a pochopení FreePascal, Delphi a Kylix kódu, nevyžadujú preložené jednotky ani nainštalovaný prekladač Borland. Môžete naraz upravovať kód Delphi aj FreePascal. Môžete dokonca pracovať s rôznymi verziami Delphi a FreePascal súčasne. Tým sa stáva prenos Delphi kódu ešte jednoduchší.

Zhrnutie klávesových skratiek IDE

Hľadanie deklarácie (Declaration Jumping) Ctrl+Click alebo Alt+Up
Prepínanie metód (Method Jumping) Ctrl+Shift+Up a Ctrl+Shift+Down
Šablóny kódu (Code Templates) Ctrl+J
Dokončovanie kódu (Code/Class Completion) Ctrl+Shift+C
Dokončovanie identifikátorov (Identifier Completion) Ctrl+Medzerník
Dokončovanie slov (Word Completion) Ctrl+W
Pomoc s parametrami (Parameter Hints) Ctrl+Shift+Space

Prepínanie metód

(Method Jumping)

Na prepínanie medzi telom procedúry (begin..end) a jej definíciou (procedure Name;) použite Ctrl+Shift+Up.

Príklad:

 interface
 
 procedure DoSomething; // procedure definition
  
 implementation
  
 procedure DoSomething; // procedure body 
 begin
 end;

Ak je kurzor v tele provedúry a stlačíte Ctrl+Shift+Up, kurzor skočí na definíciu. Ak znova stlačíte Ctrl+Shift+Up preskočí do tela procedúry, za 'begin'. Funkcia pracuje aj s metódami (procedúrami v triedach).

Tipy: 'Method Jumping' presúva kurzor na rovnakú procedúru s rovnakým menom i zoznamom parametrov. Ak presná procedúra neexistuje, skočí na najpodobnejšiu a umiestni kurzor na prvý rozdiel. V Delphi táto funkcia neexistuje.

Príklad procedúry s rôznymi typmi parametrov:

 interface
 
 procedure DoSomething(p: char); // procedure definition
 
 implementation
   
 procedure DoSomething(p: string); // procedure body
 begin
 end;

Preskočenie z definície do tela umiestni kurzor na kľúčové slovo 'string'. Túto vlastnosť môžete využiť na premenovanie metódy a/alebo zmenu jej parametrov.

Príklad: Premenovali sme 'DoSomething' na 'MakeIt':

 interface
 
 procedure MakeIt; // procedure definition
 
 implementation
 
 procedure DoSomething; // procedure body
 begin
 end;

Potom urobte skok z definície MakeIt do tela. IDE hľadá vhodné telo, nenájde žiadne, preto začne hľadať kandidátov. Keďže ste premenovali len jednu procedúru, tak je len jedno telo bez definície (DoSomething) a tak skočí do DoSomething a umiestni kurzor vpravo od 'DoSomething'. Potomm ju môžete jednoducho premenovať tiež. Toto rovnako funguje aj s parametrami.

Include súbory

(Include Files)

Include súbory sú súbory vložené do zdrojového kódu pomocou direktív prekladača {$I filename} alebo {$INCLUDE filename}. Lazarus a FreePascal používajú veľa takýchto vecí na redukciu nadbytočnosti a vyhnutie sa nečitateľnosti konštrukcií {$IFDEF} pri podpore rôznych platforiem.

Narozdiel od Delphi, IDE Lazarus plne podporuje include súbory. Napríklad môžete skočiť z metódy v súbore .pas do tela metódy v include súbore. Všetky nástroje kódu, ako dokončovanie kódu, považuje include súbory za špeciálne hranice.

Napríklad: keď dokončovanie kódu pridáva telo novej metódy za telom inej metódy, ponechá ich obe v rovnakom súbore. Týmto spôsobom môžete vložiť celú implementáciu triedy do include súborov, ako to robí LCL pre skoro všetky prvky.

Ale je tu začiatočnícka chyba: Ak najprv otvoríte include súbor a skúsite prepínanie metód alebo hľadanie deklarácie, dostanete chybu. IDE nevie do ktorej jednotky include súbor patrí. Najprv musíte otvoriť jednotku.

Hneď ako IDE zanalyzuje jednotku, zachytí v nej include direktívy a IDE si bude pamätať tento vzťah. Tieto informácie IDE ukladá pri skončení a pri uložení projektu do ~/.lazarus/includelinks.xml. Keď nabudúce otvoríte súbor include a urobíte skok do neho alebo hľadanie deklarácie, IDE interne otvorí jednotku a skoky budú fungovať.

Tento mechanizmus má samozrejme obmedzenia, niektoré include súbory sú zahrnuté dva i viackrát. Napríklad: lcl/include/winapih.inc. Skákanie z definície procedúry/metódy v tomto include súbore do tela závisí na poslednej akcii. Ak ste pracovali v lcl/lclintf.pp, IDE skočí do winapi.inc. Ak ste pracovali v lcl/interfacebase.pp, potom skočíte do lcl/include/interfacebase.inc (alebo do jedného z ďalších include súborov). Ak pracujete s obomi, potom môže nastať zmätok. ;)

Šablóny kódu

(Code Templates)

Šablóny kódu konvertujú identifikátor v texte alebo fragmente kódu. Šablóny kódu majú prednastavenú klávesovú skratku Ctrl+J. Môžete napísať identifikátor, stlačiť Ctrl+J a identifikátor je nahradený textom definovaným pre identifikátor. Šablóny kódu môžete definovať v Tools -> Options -> CodeTools.

Príklad: Napíšte identifikátor 'classf', ponechajte kurzor vpravo za 'f' a stlačte Ctrl+J. Identifikátor 'classf' bude nahradený týmto:

 T = class(T)
 private
 
 public
   constructor Create;
   destructor Destroy; override;
 end;

a kurzor bude za 'T'. Zoznam šablón získate tak, že kurzor ponecháte na medzere (nie ne identifikátore) a stlačíte Ctrl+J. Pomocou kurzorových klávesov alebon apísania niekoľkých znakov vyberte jeden. Enter vytvorí zvolenú šablónu a Esc zatvorí zoznam.

Pomoc s parametrami

(Parameter Hints) Pomoc s parametrami ukazuje pomocné okno s deklaráciami parametrov aktuálneho zoznamu parametrov.

Napríklad

  Canvas.FillRect(|);

Umiestnite kurzor do zátvoriek a stlačte Ctrl+Shift+Space. Objaví sa pomocné okno, ukazujúce parametre FillRect.

Dokončovanie kódu

(Code Completion)

Dokončovanie kódu nájdete v menu IDE Edit -> Complete Code a má štandartnú klávesovú skratku Ctrl+Shift+C. V Delphi je dokončovaním kódu volaná funkcia zobrazujúca zoznam identifikátorov na aktuálnej pozícii v zdrojovom kóde (Ctrl+Space). V Lazarus je toto nazývané dokončovanie identifikátorov (Identifier completion). Dokončovanie kódu v sebe združuje niekoľko užitočných funkcií:

  • Dokončovanie tried (Class Completion): dokončuje vlastnosti, pridáva telá metód, pridáva súkromné premenné a súkromné metódy;
  • Dokončovanie forward procedúr (Forward Procedure Completion): pridáva telá forward procedúr;
  • Dokončovanie priradenia udalostí (Event Assignment Completion): * dokončuje pridelenie udalostí a pridávanie tiel a definícií metód;
  • Dokončovanie lokálnych premenných (Local Variable Completion): pridáva definície lokálnych premenných.

Ktorá funkcia je použitá, závisí na pozícii kurzora v editore zdrojového kódu.

Dokončovanie tried

(Class Completion)

Veľmi výkonnou funkciou dokončovania kódu je "Dokončovanie tried". Vy píšete triedu, pridáte metódy a vlastnosti, a dokončovanie kódu pridá telá metód, metódy prístupu k vlastnostiam a súkromným premenným.

Príklad: Vytvorte triedu (viz Šablóny kódu, aby ste ušetrili rovnakú prácu):

 TExample = class(TObject)
 public
   constructor Create;
   destructor Destroy; override;
 end;

Umiestnite kurzor niekde v definícii triedy a stlačte Ctrl+Shift+C. Tým budú vytvorené chýbajúce telá metód a kurzor bude presunutý na prvé vytvorené telo, takže môžete rovno začať písať kód triedy:

 { TExample }
 
 constructor TExample.Create;
 begin
   |
 end;
 
 destructor TExample.Destroy;
 begin
   inherited Destroy;
 end;
Poznámka: Značka '|' nie je pridaná, len ukazuje umiestnenie kurzora.

Tip: Prepínať medzi telom a definíciou metódy môžete pomocou Ctrl+Shift+Up.

Všimnite si, že IDE tiež pridáva volanie deštruktora základnej triedy (inherited Destroy). Toto je urobené, ak v definícii treidy použijete kľúčové slovo override.

Teraz pridajte metódu DoSomething:

 TExample = class(TObject)
 public
   constructor Create;
   procedure DoSomething(i: integer);
   destructor Destroy; override;
 end;

Potom stlačte Ctrl+Shift+C a IDE pridá:

 procedure TExample.DoSomething(i: integer);
 begin
   |
 end;

Ako môžete vidieť, nové telo metódy je vložené medzi Create a Destroy, presne ako je to v definícii. Týmto sú telá metód uchovávané v rovnakom logickom poradí, ako v definícii. Spôsob vkladania môžete definovať pomocou Prostredie > Voľby Codetools -> Tvorenie kódu.

Dokončovanie vlastností

Pridajte vlastnosť AnInteger:

 TExample = class(TObject)
 public
   constructor Create;
   procedure DoSomething(i: integer);
   destructor Destroy; override;
   property AnInteger;
 end;

Stlačte Ctrl+Shift+C a dostanete:

 procedure TExample.SetAnInteger(const AValue: integer);
 begin
   |if FAnInteger=AValue then exit;
   FAnInteger:=AValue;
 end;

Dokončovanie kódu pridalo metódu pre prístup k zápisu do vlastnosti a nejaký základný kód.

Preskočte do triedy pomocou Ctrl+Shift+C a uvidíte, že v triede pribudlo:

 TExample = class(TObject)
 private
   FAnInteger: integer;
   procedure SetAnInteger(const AValue: integer);
 public
   constructor Create;
   procedure DoSomething(i: integer);
   destructor Destroy; override;
   property AnInteger: integer read FAnInteger write SetAnInteger;
 end;

Vlastnosť bola rozšírená pridaním kľúčových slov Read a Write. V triede je nová sekcia private s premennou FAnInteger a metódou SetAnInteger. Pridanie F na začiatok privátnej premennej je bežnou notáciou Delphi, rovnako ako označenie prístupovej metódy pomocou Set. Ak to nechcete, môžete to zmeniť ponmocou Prostredie > Voľby Codetools -> Tvorenie kódu.

Vytvorenie vlastnosti len na čítanie:

 property PropName: PropType read;

Bude rozšírené na:

 property PropName: PropType read FPropName;

Vytvorenie vlastnosti len pre zápis:

  property PropName: PropType write;

Bude rozšírené na:

 property PropName: PropType write SetPropName;

Vytvorenie read only vlastnosti s metódou na čítanie:

 property PropName: PropType read GetPropName;

Deklarácia ostane nezmenená, ale bude pridaná funkcia GetPropName:

 function GetpropName: PropType;

Vytvorenie vlastnosti s direktívou stored:

 property PropName: PropType stored;

Bude rozšírené na:

 property PropName: PropType read FPropName write SetPropName stored PropNameIsStored;

Pretože direktíva stored je používaná pre streamovanie čítania a zápisu, sú pridané aj kľúčové slová read a write.

Tip: Dokončovanie identifikátorov tiež rozpoznáva nekompletné vlastnosti a navrhne predvolené mená. Napríklad:

 property PropName: PropType read |;

Umiestnite kurzor za medzeru za kľúčovým slovom read a stlačte Ctrl+Space pre dokončovanie identifikátorov. To vám ponúkne premennú FPropName a procedúru SetPropName.

Dokončovanie procedúr

(Forward Procedure Completion)

Dokončovanie dopredných deklarácií procedúr je časťou dokončovania kódu a pridáva telá chýbajúcich procedúr, ktoré sú definované. Je vyvolané, ak je kurzor na pripravenej definícii procedúry, pomocou klávesovej skratky Ctrl+Shift+C.

Napríklad: Pridajte novú procedúru do časti interface:

 procedure DoSomething;

Umiestnite kurzor na ňu a stlačte Ctrl+Shift+C pre dokončovanie kódu. V časti implementation bude doplnené:

 procedure DoSomething;
 begin
   |
 end;
Tip: Pomocou Ctrl+Shift+Up môžete prepínať medzi definíciou a telom procedúry.

Telo novej procedúry bude pridané pred metódy tried. Ak už sú v časti interface nejaké definície procedúr, IDE sa pokúsi zachovať ich poradie, napríklad:

  procedure Proc1;
  procedure Proc2; // nová procedúra
  procedure Proc3;

Ak telá Proc1 a Proc3 už existujú, potom bude telo Proc2 vložené medzi telá procedúr Proc1 a Proc3. Toto správanie môže byť zmené pomocou Prostredie > Voľby Codetools -> Tvorenie kódu.

Viacero procedúr:

 procedure Proc1_Old; // telo existuje
 procedure Proc2_New; // telo neexistuje
 procedure Proc3_New; //  "
 procedure Proc4_New; //  "
 procedure Proc5_Old; // telo existuje

Dokončovanie kódu pridá 3 telá procedúr (Proc2_New, Proc3_New, Proc4_New).

Tento nástroj nepracuje len s procedúrami definovanými v časti interface, ale aj s procedúrami, ktoré sú definované pomocou kľúčového slova forward.

Dokončovanie priradenia udalostí

(Event Assignment Completion)

Dokončovanie priradenia udalostí je čsťou Dokončovania kódu a dokončuje jeden príkaz Event:=|. Nastáva, keď je kurzor umiestnený za príkazom priradenia udalosti a stlačíte Ctrl+Shift+C.

Napríklad

V metóde, povedzme udalosti FormCreate, pridajte riadok: 'OnPaint:=':

 procedure TForm1.Form1Create(Sender: TObject);
 begin
   OnPaint:=|
 end;

Značka '|' je umiestnenie kurzora a netreba ju zadávať.

Potom stlačte Ctrl+Shift+C pre dokončovanie kódu. Príkaz priradenia udalosti bude doplnený takto:

 OnPaint:=@Form1Paint;

Do triedy TForm1 bude pridaná nová metóda Form1Paint. Potom je spustené dokončovanie tried a dostanete:

 procedure TForm1.Form1Paint(Sender: TObject);
 begin
   |
 end;

Pracuje presne ako pridávanie metód v Inšpektore objektov.

Poznámka: Kurzor musíte umiestniť za operátor priradenia ':='. Ak ho umiestnite na identifikátor (tj. OnPaint), dokončovanie kódu spustí Dokončovanie lokálnych premenných, ktoré zlyhá, pretože OnPaint je už definovaná.

Tip: Môžete definovať meno novej metódi aj sami, a to jej zadaním do priradenia, napríklad:

 OnPaint:=@ThePaintMethod;

Dokončovanie deklarácie premenných

(Variable Declaration Completion)

Dokončovanie deklarácie premenných je časťou Dokončovania kódu a pridáva definíciu lokálnej premennej pre príkaz Identifier:=Term;. Dokončovanie deklarácie premenných je vyvolané, keď je kurzor umiestnený na identifikátore v priradení.

Napríklad:

 procedure TForm1.Form1Create(Sender: TObject);
 begin
   i:=3;
 end;

Umiestnite kurzor na 'i' alebo tesne za neho, potom stlačte Ctrl+Shift+C pre dokončovanie kódu a dostanete:

 procedure TForm1.Form1Create(Sender: TObject);
 var
   i: Integer;
 begin
   i:=3;
 end;

Nástroj dokončovania kódu najprv skontroluje, či identifikátor 'i' už nie je definovaný a ak nie, pridá deklaráciu 'var i: integer;'. Typ identifikátora je odhadovaný podľa pravej strany príkazu priradenia. Čísla ako 3 sú identifikované ako Integer.

Iný príklad:

 type
  TWhere = (Behind, Middle, InFront);
 
  procedure TForm1.Form1Create(Sender: TObject);
  var
    a: array[TWhere] of char;
  begin
    for Where:=Low(a) to High(a) do writeln(a[Where]);
  end;

Umiestnite kurzor na 'Where' a stlačte Ctrl+Shift+C pre dokončenie kódu. Dostanete:

 procedure TForm1.Form1Create(Sender: TObject);
 var
   a: array[TWhere] of char;
   Where: TWhere;
 begin
   for Where:=Low(a) to High(a) do writeln(a[Where]);
 end;

Spätné dokončovanie triedy

(Reversed Class Completion) Spätné dokončovanie triedy je časťou Dokončovania kódu a pridáva deklarácie súkromných metód pre aktuálne telo metódy. Je vyvolané, keď je kurzor v tele metódy, zatiaľ nie je definované pre triedy.

Táto vlastnosť je dostupná od 0.9.21.

Napríklad:

  procedure TForm1.DoSomething(Sender: TObject);
  begin
  end;

Metóda DoSomething zatiaľ nie je v TForm1 deklarovaná. Stlačte Ctrl+Shift+C a IDE pridá "procedure DoSomething(Sender: TObject);" k súkromným metódam triedy TForm1.

Pre Delphianov: Dokončovanie tried pracuje pod Lazarus vždy jednym spôsobom:

  • Z rozhrania triedy do jej implementácie alebo naopak z implementácie triedy do jej rozhrania. Delphi vždy vyvoláva oba smery. Poszup v Delphi má nevýhodu, že ak dôjde k preklepu, ľahko vytvoríte bez upozornenia zvyšok novej metódy.

Komentáre a dokončovanie kódu

(Comments and Code Completion)

Dokončovanie kódu sa pokúša uchovávať komentáre tam, kde sú. Príklad:

  FList: TList; // zoznam prvkov TComponent
  FInt: integer;

Pri vkladaní novej premennej medzi FList a FInt, je komentár ponechaný na riadku spolu s FList. To platí i pre:

  FList: TList; { zoznam prvkov TComponent
    Toto je komentár na niekoľkých riadkoch, začínajúci
    na riadku s FList, tak nástroj dokončenia kódu predpokladá že patrí 
    k riadku s FList a nepreruší tento vzťah.
    Kód bude vložený za komentár. }
  FInt: integer;

Ak komentár začína na ďalšom riadku:

  FList: TList; // zoznam prvkov TComponent
    { Tento komentár patrí k nasledujúcemu riadku. 
      Nový kód je vložený pred tentokomentár a 
      za komentár na riadku s FList. }
  FInt: integer;

Refactoring

Otočenie priradení

(Invert Assignments)

Otočenie priradení pracuje s vybratými príkazmi Pascalu a obracia všetky priradenia z tohoto výberu. Tento nástroj je užitočný pre transformáciu "save" kódu na "load" a naopak.

Príklad:

 procedure DoSomething;
 begin
   AValueStudio:= BValueStudio;
   AValueAppartment :=BValueAppartment;
   AValueHouse:=BValueHouse;
 end;

Vyberte riadky s priradeniami (medzi begin a end) a urobte Otočenie priradenia, všetky priradenia budú otočené a automaticky odsadené. Výsledok:

 procedure DoSomething;
 begin
   BValueStudio     := AValueStudio;
   BValueAppartment := AValueAppartment;
   BValueHouse      := AValueHouse;
 end;

Uzavrieť výber

Vyberte nejaký text a vyvolajte nástroj. Zobrazí sa dialóg, kde si môžete vybrať či má výber uzatvorený medzi try..finally ale do mnoho iných blokov.

Premenovať identifikátor

Umiestnite kurzor na identifikátor a vyvolajte tento nástroj, obaví sa dialóg, v ktorom môžete nastaviť rozsah hľadania a nové meno identifikátora.

  • premenované budú všetky výskyty a len tie, ktoré momentálne používajú túto deklaráciu, čiže edklarácie s rovnakým menom nebudú premenované.
  • najprv bude vykonaná kontrola konfliktov mena.
  • Obmedzenia: Pracuje len so zdrojovými kódmi Pascalu, zatiaľ nepremenúva súbory ani neupravuje súbory lfm/lrs, či súbory lazdoc.

Nájdi odkazy na identifikátor

Umiestnite kurzor na identifikátor a vyvolajte nástroj. Objaví sa dialóg, v ktorom môžete nastaviť rozsah hľadania. IDE bude hľadať všetky výskyty a len tie, ktoré používajú aktuálnu deklaráciu. Čiže iné deklarácia s rovnakým menom, nebudú zobrazené.

Zobraziť abstraktné metódy

Táto funkcia vypisuje a automaticky kompletuje virtuálne, abstraktné metódy, ktoré je majú byť implementované.

Umiestnite kurzor na deklaráciu triedu a vyvolajte nástroj. Ak existujú nejaké chýbajúce abstraktné metódy, nude zobrazený dialóg s ich zoznamom. Zvoľte metódy pre implementovanie a IDE vytvorí základy metód.

Vytiahnuť procedúru

Viz Extract Procedure

Hľadanie deklarácie

(Find Declaration)

Umiestnite kurzor na identifikátor a urobte Hľadanie deklarácie, tým bude nájdená deklarácia tohoto identifikátora, prípadne otvorený príslušný súbor a kurzor bude premiestnený na miesto deklarácie.

Každé hľadanie deklarácie nastavuje bod skoku. Tzn. po skoku na nájdenú deklaráciu môžete jednoduchos skočiť naspäť pomocou Search -> Jump back.

Oproti Delphi má nástroj isté rozdiely: Nástroj pracuje so zdrojovým kódom na základe pravidiel Pascalu, a nie s výsledkom prekladača. The compiler returns the final type. Nástroj prezerá zdrojové kódy a všetky kroky medzi. Napríklad:

Vlastnosť 'Visible' je najprv definovaná v TControl (controls.pp), potom je predefinovaná v TCustomForm a nakoniec predefinovaná aj v TForm. Spustenie hľadania deklarácie vlastnosti Visible vás najprv presunie na Visible v TForm. Potom môžete spustiť hľadanie deklarácie znova a skočíte na Visible v TCustomForm a znova pre skočenie na Visible v TControl.

Obdobne je to s TColor. Pre prekladač je to jednoducho 'longint', ale v zdrojovom kóde je to definované ako:

 TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
 TColor = TGraphicsColor;

Obdobné je to aj s forward definovanými triedami: Napríklad v TControl je priávtna premenná

 FHostDockSite: TWinControl;

Hľadanie deklarácie pre TWinControl skočí na forward definíciu:

 TWinControl = class;

A opätovné spustenie hľadania deklarácie skočí na skutočnú implementáciu:

 TWinControl = class(TControl)

Týmto spôsobom môžete stopovať každý identifikátor a nájsť každé predefinovanie, či preťaženie.

Dokončovanie identifikátorov

(Identifier Completion)

Dokončovanie identifikátorov je vyvolané pomocou Ctrl+Space a zobrazuje všetky vyhovujúce identifikátory.

Napríklad:

  procedure TForm1.FormCreate(Sender: TObject);
  begin
    |
  end;

Umiestnite kurzor medzi begin a end a stlačte Ctrl+Space. Nástroj IDE spracuje celý dosiahnuteľný kód a zobrazí zoznam všetkých nájdených identifikátorov. CodeTools kešuje výsledok, takže druhý krát bude oveľa rýchlejší.

Poznámka pre Delphianov: Delphi to volá Dokončovanie kódu.

Niektoré identifikátory, ako 'Write', 'ReadLn', 'Low', 'SetLength', 'Self', 'Result', 'Copy' sú zabudované v prekladači a teda nie sú definované nikde v zdrojovom kóde, al Dokončovanie identifikátorov má veľa z nich tež zabudovaných. Ak nájdete nejaký chýbajúci, jednoducho vytvorte požiadadvku na vlastnosť v sledovači chýb (bug tracker).

Dokončovanie identifikátorov nedokončuje kľúčové slová, takže ho nemožno použiť na dokončenie proc' na 'procedure'. Na toto je určené Ctrl+W Dokončovanie slov alebo Ctrl+J Šablóny kódu.

Dokončovanie identifikátorov nezobrazuje len tie identifikátory, ktoré nie sú kompatibilné.

Predpona

Môžete začať dokončovanie identifikátorov v existujúcom slove. Potom budú písmená vľavo od kurzora brané ako predpona.

Napríklad:

  procedure TForm1.FormCreate(Sender: TObject);
  begin
    Ca|ption
  end;

Okno bude zobrazovať len identifikátory začínajúce sa na 'Ca'.

Klávesy

  • Písmená/čísla: pridávajú znak do editora zdrojového kódu a aktuálnej predpony, čo zároveň aktualizuje zoznam.
  • Backspace: odstraňuje posledný znak z editora zdrojového kódu a aktuálnej predpony, čo zároveň aktualizuje zoznam.
  • Return: nahradzuje celé slovo na kurzore zvoleným identifikátorom a zatvára vyskakovacie okno.
  • Shift+Return: as Return, but replaces only the prefix (left part) of the word at the cursor.
  • Hore/Dole: presúva výber.
  • Esc: zatvára vyskakovacie okno bez zmeny.
  • Tab: dokončuje predponu na ďalšiu voľbu. Napríklad: aktuálna predpona je 'But' a dokončovanie identifikátora zobrazuje len 'Button1' a 'Button1Click', potom stlačenie Tab dokončí predponu na 'Button1'.
  • Else: ako Return a pridá znak do editora zdrojového kódu.

Dokončovanie slov

(Word Completion)

Dokončovanie slov je vyvolané stlačením Ctrl+W a zobrazuje všetky slová všetkých aktuálne otvorených editorov. Inak pracuje presne ako Dokončovanie identifikátorov.

Prejdi do direktívy include

(Goto Include Directive)

Tento príkaz v menu Searchskočí do príkazu (direktívy) {$I filename}, v ktorej je použitý aktuálny súbor.

Publikuj Projekt

Vytvára kópiu celého projektu. Ak chcete niekomu poslať len zdrojové kódy a nastavenia prekladača pre svoj kód, budete kamarátis touto funkciou.

Bežný adresár projektu obsahuje množstvo informácií. Väčšinu z nich publikovať netreba. Súbor .lpi obsahuje informácie o relácii (ako pozíciu caret a záložiek zatvorených jednotiek) a adresár projektu obsahuje mnoho súborov .ppu a .o, a tiež .exe. A práve príkaz Publikuj projekt vytvorí súbor .lpi len so základnými informáciami a všetky zdrojové kódy, so všetkých podadresárov.

V ponúknutom dialógu môžete nastaviť filter pre zahrnutie/vynechanie, či pre kompresiu výstupu do jediného archívu.

Spolupracovníci

This page has been converted from the epikwiki version.

  • Created page and initial template - 4/6/2004 VlxAdmin
  • Initial content posted - 4/10/2004 MattiasG
  • Small wiki and formatting fixes - 4/11/2004 VlxAdmin
  • Added a summary table for IdeTools shortcuts - 12 July 2004 User:Kirkpatc
  • Preložené z originálu Lazarus IDE Tools - Slavko 13:51, 25 Mar 2005 (PST)