Difference between revisions of "Lazarus IDE Tools/sk"

From Lazarus wiki
Jump to navigationJump to search
m (Refactoring - preklad a doplnenie)
m (Fixed syntax highlighting)
 
(15 intermediate revisions by 4 users not shown)
Line 9: Line 9:
 
{|
 
{|
 
|-
 
|-
| [[Lazarus IDE Tools/sk#Prepínanie_deklarácií | Prepínanie deklarácií]] (Declaration Jumping) || Ctrl+Click alebo Alt+Up
+
| [[Lazarus IDE Tools/sk#Hľadanie_deklarácie | Hľadanie deklarácie]] (Declaration Jumping) || '''Ctrl+Click''' alebo '''Alt+Up'''
 
|-
 
|-
| [[Lazarus IDE Tools/sk#Prepínanie_metód | Prepínanie metód]] (Method Jumping) || Ctrl+Shift+Up
+
| [[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#Šablóny_kódu | Šablóny kódu]] (Code Templates) || Ctrl+J
+
| [[Lazarus IDE Tools/sk#Šablóny_kódu | Šablóny kódu]] (Code Templates) || '''Ctrl+J'''
 
|-
 
|-
| [[Lazarus IDE Tools/sk#Dokončovanie_kódu | Dokončovanie kódu]] (Code/Class Completion) || Ctrl+Shift+C
+
| [[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+Space
+
| [[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#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
+
| [[Lazarus IDE Tools/sk#Pomoc_s_parametrami |Pomoc s parametrami]] (Parameter Hints) || '''Ctrl+Shift+Space'''
 
|}
 
|}
  
Line 30: Line 30:
  
 
Príklad:
 
Príklad:
<pascal>
+
<syntaxhighlight lang=pascal> interface
interface
 
 
   
 
   
 
  procedure DoSomething; // procedure definition
 
  procedure DoSomething; // procedure definition
Line 39: Line 38:
 
  procedure DoSomething; // procedure body  
 
  procedure DoSomething; // procedure body  
 
  begin
 
  begin
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
 
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 48: Line 46:
  
 
Príklad procedúry s rôznymi typmi parametrov:
 
Príklad procedúry s rôznymi typmi parametrov:
<pascal>
+
<syntaxhighlight lang=pascal> interface
interface
 
 
   
 
   
 
  procedure DoSomething(p: char); // procedure definition
 
  procedure DoSomething(p: char); // procedure definition
Line 57: Line 54:
 
  procedure DoSomething(p: string); // procedure body
 
  procedure DoSomething(p: string); // procedure body
 
  begin
 
  begin
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
 
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.
Line 64: Line 60:
 
Príklad:
 
Príklad:
 
Premenovali sme 'DoSomething' na 'MakeIt':
 
Premenovali sme 'DoSomething' na 'MakeIt':
<pascal> interface
+
<syntaxhighlight lang=pascal> interface
 
   
 
   
 
  procedure MakeIt; // procedure definition
 
  procedure MakeIt; // procedure definition
Line 72: Line 68:
 
  procedure DoSomething; // procedure body
 
  procedure DoSomething; // procedure body
 
  begin
 
  begin
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
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==
Line 96: Line 91:
 
(''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:
<pascal>
+
<syntaxhighlight lang=pascal> T = class(T)
T = class(T)
 
 
  private
 
  private
 
   
 
   
Line 107: Line 101:
 
   constructor Create;
 
   constructor Create;
 
   destructor Destroy; override;
 
   destructor Destroy; override;
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
 
a kurzor bude za 'T'.
 
a kurzor bude za 'T'.
Line 118: Line 111:
  
 
Napríklad
 
Napríklad
<pascal>
+
<syntaxhighlight lang=pascal> Canvas.FillRect(|);</syntaxhighlight>
  Canvas.FillRect(|);
 
</pascal>
 
  
 
Umiestnite kurzor do zátvoriek a stlačte Ctrl+Shift+Space. Objaví sa pomocné okno, ukazujúce parametre FillRect.
 
Umiestnite kurzor do zátvoriek a stlačte Ctrl+Shift+Space. Objaví sa pomocné okno, ukazujúce parametre FillRect.
Line 127: Line 118:
 
(''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 139: Line 130:
 
(''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):
<pascal>
+
<syntaxhighlight lang=pascal> TExample = class(TObject)
TExample = class(TObject)
 
 
  public
 
  public
 
   constructor Create;
 
   constructor Create;
 
   destructor Destroy; override;
 
   destructor Destroy; override;
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
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:
+
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:
<pascal>
+
<syntaxhighlight lang=pascal> { TExample }
{ TExample }
 
 
   
 
   
 
  constructor TExample.Create;
 
  constructor TExample.Create;
Line 164: Line 151:
 
  begin
 
  begin
 
   inherited Destroy;
 
   inherited Destroy;
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
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''':
<pascal>
+
<syntaxhighlight lang=pascal> TExample = class(TObject)
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>
</pascal>
 
  
Potom stlačte Ctrl+Shift+C a IDE pridá:
+
Potom stlačte '''Ctrl+Shift+C''' a IDE pridá:
<pascal>
+
<syntaxhighlight lang=pascal> procedure TExample.DoSomething(i: integer);
procedure TExample.DoSomething(i: integer);
 
 
  begin
 
  begin
 
   |
 
   |
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
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''':
<pascal>
+
<syntaxhighlight lang=pascal> TExample = class(TObject)
TExample = class(TObject)
 
 
  public
 
  public
 
   constructor Create;
 
   constructor Create;
Line 202: Line 183:
 
   destructor Destroy; override;
 
   destructor Destroy; override;
 
   property AnInteger;
 
   property AnInteger;
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
 
Stlačte Ctrl+Shift+C a dostanete:
 
Stlačte Ctrl+Shift+C a dostanete:
<pascal>
+
<syntaxhighlight lang=pascal> procedure TExample.SetAnInteger(const AValue: integer);
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>
</pascal>
 
  
 
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:
<pascal>
+
<syntaxhighlight lang=pascal> TExample = class(TObject)
TExample = class(TObject)
 
 
  private
 
  private
 
   FAnInteger: integer;
 
   FAnInteger: integer;
Line 227: 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>
</pascal>
 
  
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'''.
+
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.
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.
 
  
Vytvorenie read only vlastnosti:
+
Vytvorenie vlastnosti len na čítanie:
<pascal>
+
<syntaxhighlight lang=pascal> property PropName: PropType read;</syntaxhighlight>
property PropName: PropType read;
 
</pascal>
 
  
 
Bude rozšírené na:
 
Bude rozšírené na:
<pascal>
+
<syntaxhighlight lang=pascal> property PropName: PropType read FPropName;</syntaxhighlight>
property PropName: PropType read FPropName;
 
</pascal>
 
  
Vytvorenie write only vlstnosti:
+
Vytvorenie vlastnosti len pre zápis:
<pascal>
+
<syntaxhighlight lang=pascal> property PropName: PropType write;</syntaxhighlight>
  property PropName: PropType write;
 
</pascal>
 
  
 
Bude rozšírené na:
 
Bude rozšírené na:
<pascal>
+
<syntaxhighlight lang=pascal> property PropName: PropType write SetPropName;</syntaxhighlight>
property PropName: PropType write SetPropName;
 
</pascal>
 
  
Vytvorenie read only vlastnosti s metódou Read:
+
Vytvorenie read only vlastnosti s metódou na čítanie:
<pascal>
+
<syntaxhighlight lang=pascal> property PropName: PropType read GetPropName;</syntaxhighlight>
property PropName: PropType read GetPropName;
 
</pascal>
 
  
Ostane nezmenené a bude pridaná funkcia GetPropName:
+
Deklarácia ostane nezmenená, ale bude pridaná funkcia '''GetPropName''':
<pascal>
+
<syntaxhighlight lang=pascal> function GetpropName: PropType;</syntaxhighlight>
function GetpropName: PropType;
 
</pascal>
 
  
 
Vytvorenie vlastnosti s direktívou '''stored''':
 
Vytvorenie vlastnosti s direktívou '''stored''':
<pascal>
+
<syntaxhighlight lang=pascal> property PropName: PropType stored;</syntaxhighlight>
property PropName: PropType stored;
 
</pascal>
 
  
 
Bude rozšírené na:
 
Bude rozšírené na:
<pascal>
+
<syntaxhighlight lang=pascal> property PropName: PropType read FPropName write SetPropName stored PropNameIsStored;</syntaxhighlight>
property PropName: PropType read FPropName write SetPropName stored PropNameIsStored;
 
</pascal>
 
  
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:
<pascal>
+
<syntaxhighlight lang=pascal> property PropName: PropType read |;</syntaxhighlight>
property PropName: PropType read |;
 
</pascal>
 
  
 
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''':
<pascal>
+
<syntaxhighlight lang=pascal> procedure DoSomething;</syntaxhighlight>
procedure DoSomething;
 
</pascal>
 
  
Umiestnite kurzor na ňu a stlačte Ctrl+Shift+C pre dokončovaniekódu. V časti '''implementation''' bude doplnené:
+
Umiestnite kurzor na ňu a stlačte '''Ctrl+Shift+C''' pre dokončovanie kódu. V časti '''implementation''' bude doplnené:
<pascal>
+
<syntaxhighlight lang=pascal> procedure DoSomething;
procedure DoSomething;
 
 
  begin
 
  begin
 
   |
 
   |
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
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:
<pascal>
+
<syntaxhighlight lang=pascal> procedure Proc1;
  procedure Proc1;
 
 
   procedure Proc2; // nová procedúra
 
   procedure Proc2; // nová procedúra
   procedure Proc3;
+
   procedure Proc3;</syntaxhighlight>
</pascal>
 
  
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:
<pascal>
+
<syntaxhighlight lang=pascal> procedure Proc1_Old; // telo existuje
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>
</pascal>
 
  
 
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:=':
<pascal>
+
<syntaxhighlight lang=pascal> procedure TForm1.Form1Create(Sender: TObject);
procedure TForm1.Form1Create(Sender: TObject);
 
 
  begin
 
  begin
 
   OnPaint:=|
 
   OnPaint:=|
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
 
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:
<pascal>
+
<syntaxhighlight lang=pascal> OnPaint:=@Form1Paint;</syntaxhighlight>
OnPaint:=@Form1Paint;
 
</pascal>
 
  
Do triedy TForm1 bude pridaná nová metóda Form1Paint. Potom je spustené dokončovanie tried a dostanete:
+
Do triedy '''TForm1''' bude pridaná nová metóda '''Form1Paint'''. Potom je spustené dokončovanie tried a dostanete:
<pascal>
+
<syntaxhighlight lang=pascal> procedure TForm1.Form1Paint(Sender: TObject);
procedure TForm1.Form1Paint(Sender: TObject);
 
 
  begin
 
  begin
 
   |
 
   |
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
Pracuje presne ako pridávanie metó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:
<pascal>
+
<syntaxhighlight lang=pascal> OnPaint:=@ThePaintMethod;</syntaxhighlight>
  OnPaint:=@ThePaintMethod;
 
</pascal>
 
  
 
===Dokončovanie deklarácie premenných===
 
===Dokončovanie deklarácie premenných===
Line 373: Line 312:
  
 
Napríklad:
 
Napríklad:
<pascal>
+
<syntaxhighlight lang=pascal> procedure TForm1.Form1Create(Sender: TObject);
procedure TForm1.Form1Create(Sender: TObject);
 
 
  begin
 
  begin
 
   i:=3;
 
   i:=3;
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
 
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:
<pascal>
+
<syntaxhighlight lang=pascal> procedure TForm1.Form1Create(Sender: TObject);
procedure TForm1.Form1Create(Sender: TObject);
 
 
  var
 
  var
 
   i: Integer;
 
   i: Integer;
 
  begin
 
  begin
 
   i:=3;
 
   i:=3;
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
 
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:
<pascal>
+
<syntaxhighlight lang=pascal> type
type
 
 
   TWhere = (Behind, Middle, InFront);
 
   TWhere = (Behind, Middle, InFront);
 
   
 
   
Line 402: 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>
</pascal>
 
  
 
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:
<pascal>
+
<syntaxhighlight lang=pascal> procedure TForm1.Form1Create(Sender: TObject);
procedure TForm1.Form1Create(Sender: TObject);
 
 
  var
 
  var
 
   a: array[TWhere] of char;
 
   a: array[TWhere] of char;
Line 413: 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>
</pascal>
 
  
 
===Spätné dokončovanie triedy===
 
===Spätné dokončovanie triedy===
Line 423: Line 354:
  
 
Napríklad:
 
Napríklad:
<pascal>
+
<syntaxhighlight lang=pascal> procedure TForm1.DoSomething(Sender: TObject);
  procedure TForm1.DoSomething(Sender: TObject);
 
 
   begin
 
   begin
   end;
+
   end;</syntaxhighlight>
</pascal>
 
  
 
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.
 
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.
Line 440: Line 369:
 
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:
<pascal>
+
<syntaxhighlight lang=pascal> FList: TList; // zoznam prvkov TComponent
  FList: TList; // zoznam prvkov TComponent
+
   FInt: integer;</syntaxhighlight>
   FInt: integer;
 
</pascal>
 
  
 
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:
<pascal>
+
<syntaxhighlight lang=pascal> FList: TList; { zoznam prvkov TComponent
  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>
</pascal>
 
  
 
Ak komentár začína na ďalšom riadku:
 
Ak komentár začína na ďalšom riadku:
<pascal>
+
<syntaxhighlight lang=pascal> FList: TList; // zoznam prvkov TComponent
  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>
</pascal>
 
  
 
==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:
<pascal> procedure DoSomething;
+
<syntaxhighlight lang=pascal> procedure DoSomething;
 
  begin
 
  begin
 
   AValueStudio:= BValueStudio;
 
   AValueStudio:= BValueStudio;
 
   AValueAppartment :=BValueAppartment;
 
   AValueAppartment :=BValueAppartment;
 
   AValueHouse:=BValueHouse;
 
   AValueHouse:=BValueHouse;
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
 
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:
<pascal>
+
<syntaxhighlight lang=pascal> procedure DoSomething;
procedure DoSomething;
 
 
  begin
 
  begin
 
   BValueStudio    := AValueStudio;
 
   BValueStudio    := AValueStudio;
 
   BValueAppartment := AValueAppartment;
 
   BValueAppartment := AValueAppartment;
 
   BValueHouse      := AValueHouse;
 
   BValueHouse      := AValueHouse;
  end;
+
  end;</syntaxhighlight>
</pascal>
 
  
 
=== Uzavrieť výber ===
 
=== Uzavrieť výber ===
Line 528: Line 448:
 
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:
<pascal>
+
<syntaxhighlight lang=pascal> TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
+
  TColor = TGraphicsColor;</syntaxhighlight>
  TColor = TGraphicsColor;
 
</pascal>
 
  
 
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á
<pascal>
+
<syntaxhighlight lang=pascal> FHostDockSite: TWinControl;</syntaxhighlight>
FHostDockSite: TWinControl;
 
</pascal>
 
  
 
Hľadanie deklarácie pre TWinControl skočí na forward definíciu:
 
Hľadanie deklarácie pre TWinControl skočí na forward definíciu:
<pascal>
+
<syntaxhighlight lang=pascal> TWinControl = class;</syntaxhighlight>
TWinControl = class;
 
</pascal>
 
  
 
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:
<pascal>
+
<syntaxhighlight lang=pascal> TWinControl = class(TControl)</syntaxhighlight>
TWinControl = class(TControl)
 
</pascal>
 
  
 
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.
Line 557: Line 469:
  
 
Napríklad:
 
Napríklad:
<pascal>
+
<syntaxhighlight lang=pascal> procedure TForm1.FormCreate(Sender: TObject);
  procedure TForm1.FormCreate(Sender: TObject);
 
 
   begin
 
   begin
 
     |
 
     |
   end;
+
   end;</syntaxhighlight>
</pascal>
 
  
 
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ší.
 
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ší.
Line 578: Line 488:
  
 
Napríklad:
 
Napríklad:
<pascal>
+
<syntaxhighlight lang=pascal> procedure TForm1.FormCreate(Sender: TObject);
  procedure TForm1.FormCreate(Sender: TObject);
 
 
   begin
 
   begin
 
     Ca|ption
 
     Ca|ption
   end;
+
   end;</syntaxhighlight>
</pascal>
 
  
 
Okno bude zobrazovať len identifikátory začínajúce sa na 'Ca'.
 
Okno bude zobrazovať len identifikátory začínajúce sa na 'Ca'.
Line 611: Line 519:
 
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.
 
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.
+
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.
 
V ponúknutom dialógu môžete nastaviť filter pre zahrnutie/vynechanie, či pre kompresiu výstupu do jediného archívu.

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)