Difference between revisions of "Lazarus IDE Tools/sk"
m (úprava nadpisu) |
m (Fixed syntax highlighting) |
||
(6 intermediate revisions by 4 users not shown) | |||
Line 30: | Line 30: | ||
Príklad: | Príklad: | ||
− | <pascal> | + | <syntaxhighlight lang=pascal> 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> |
− | </ | ||
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 |
− | |||
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> |
− | </ | ||
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> |
− | </ | ||
− | 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 | + | 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 | + | Š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) |
− | |||
private | private | ||
Line 107: | 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'. | ||
Line 118: | Line 111: | ||
Napríklad | Napríklad | ||
− | <pascal> | + | <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. | 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ú | + | 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 143: | Line 134: | ||
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> 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: | 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> { TExample } | + | <syntaxhighlight lang=pascal> { TExample } |
constructor TExample.Create; | constructor TExample.Create; | ||
Line 160: | 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. | ||
Line 169: | Line 160: | ||
Teraz pridajte metódu '''DoSomething''': | Teraz pridajte metódu '''DoSomething''': | ||
− | <pascal> 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á: | Potom stlačte '''Ctrl+Shift+C''' a IDE pridá: | ||
− | <pascal> procedure TExample.DoSomething(i: integer); | + | <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 Prostredie > Voľby Codetools -> Tvorenie kódu. | 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. | ||
Line 186: | Line 177: | ||
===Dokončovanie vlastností=== | ===Dokončovanie vlastností=== | ||
Pridajte vlastnosť '''AnInteger''': | Pridajte vlastnosť '''AnInteger''': | ||
− | <pascal> TExample = class(TObject) | + | <syntaxhighlight lang=pascal> TExample = class(TObject) |
public | public | ||
constructor Create; | constructor Create; | ||
Line 192: | 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: | ||
− | <pascal> 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+C''' a uvidíte, že v triede pribudlo: | Preskočte do triedy pomocou '''Ctrl+Shift+C''' a uvidíte, že v triede pribudlo: | ||
− | <pascal> TExample = class(TObject) | + | <syntaxhighlight lang=pascal> TExample = class(TObject) |
private | private | ||
FAnInteger: integer; | FAnInteger: integer; | ||
Line 213: | 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 Prostredie > Voľby Codetools -> Tvorenie kódu. | 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: | Vytvorenie vlastnosti len na čítanie: | ||
− | <pascal> property PropName: PropType read;</ | + | <syntaxhighlight lang=pascal> property PropName: PropType read;</syntaxhighlight> |
Bude rozšírené na: | Bude rozšírené na: | ||
− | <pascal> property PropName: PropType read FPropName;</ | + | <syntaxhighlight lang=pascal> property PropName: PropType read FPropName;</syntaxhighlight> |
Vytvorenie vlastnosti len pre zápis: | Vytvorenie vlastnosti len pre zápis: | ||
− | <pascal> property PropName: PropType write;</ | + | <syntaxhighlight lang=pascal> property PropName: PropType write;</syntaxhighlight> |
Bude rozšírené na: | Bude rozšírené na: | ||
− | <pascal> property PropName: PropType write SetPropName;</ | + | <syntaxhighlight lang=pascal> property PropName: PropType write SetPropName;</syntaxhighlight> |
Vytvorenie read only vlastnosti s metódou na čítanie: | Vytvorenie read only vlastnosti s metódou na čítanie: | ||
− | <pascal> property PropName: PropType read GetPropName;</ | + | <syntaxhighlight lang=pascal> property PropName: PropType read GetPropName;</syntaxhighlight> |
Deklarácia ostane nezmenená, ale bude pridaná funkcia '''GetPropName''': | Deklarácia ostane nezmenená, ale bude pridaná funkcia '''GetPropName''': | ||
− | <pascal> function GetpropName: PropType;</ | + | <syntaxhighlight lang=pascal> function GetpropName: PropType;</syntaxhighlight> |
Vytvorenie vlastnosti s direktívou '''stored''': | Vytvorenie vlastnosti s direktívou '''stored''': | ||
− | <pascal> property PropName: PropType stored;</ | + | <syntaxhighlight lang=pascal> property PropName: PropType stored;</syntaxhighlight> |
Bude rozšírené na: | Bude rozšírené na: | ||
− | <pascal> 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ú pridané aj kľúčové slová '''read''' a '''write'''. | Pretože direktíva '''stored''' je používaná pre streamovanie čítania a zápisu, sú pridané aj kľúčové slová '''read''' a '''write'''. | ||
Line 245: | Line 236: | ||
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> 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'''. | ||
Line 256: | Line 247: | ||
Napríklad: | Napríklad: | ||
Pridajte novú procedúru do časti '''interface''': | Pridajte novú procedúru do časti '''interface''': | ||
− | <pascal> procedure DoSomething;</ | + | <syntaxhighlight lang=pascal> procedure DoSomething;</syntaxhighlight> |
Umiestnite kurzor na ňu a stlačte '''Ctrl+Shift+C''' pre dokončovanie kó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> procedure DoSomething; | + | <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: | ||
− | <pascal> 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 '''Prostredie > Voľby Codetools -> Tvorenie kódu'''. | 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> 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). | ||
Line 291: | Line 282: | ||
;Napríklad: | ;Napríklad: | ||
V metóde, povedzme udalosti FormCreate, pridajte riadok: 'OnPaint:=': | V metóde, povedzme udalosti FormCreate, pridajte riadok: 'OnPaint:=': | ||
− | <pascal> 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: | ||
− | <pascal> 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: | Do triedy '''TForm1''' bude pridaná nová metóda '''Form1Paint'''. Potom je spustené dokončovanie tried a dostanete: | ||
− | <pascal> procedure TForm1.Form1Paint(Sender: TObject); | + | <syntaxhighlight lang=pascal> procedure TForm1.Form1Paint(Sender: TObject); |
begin | begin | ||
| | | | ||
− | end;</ | + | end;</syntaxhighlight> |
Pracuje presne ako pridávanie metód v '''Inšpektore objektov'''. | Pracuje presne ako pridávanie metód v '''Inšpektore objektov'''. | ||
Line 313: | Line 304: | ||
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> |
===Dokončovanie deklarácie premenných=== | ===Dokončovanie deklarácie premenných=== | ||
Line 321: | Line 312: | ||
Napríklad: | Napríklad: | ||
− | <pascal> | + | <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: | ||
− | <pascal> | + | <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: | ||
− | <pascal> | + | <syntaxhighlight lang=pascal> type |
− | |||
TWhere = (Behind, Middle, InFront); | TWhere = (Behind, Middle, InFront); | ||
Line 350: | 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: | ||
− | <pascal> | + | <syntaxhighlight lang=pascal> procedure TForm1.Form1Create(Sender: TObject); |
− | |||
var | var | ||
a: array[TWhere] of char; | a: array[TWhere] of char; | ||
Line 361: | 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=== | ===Spätné dokončovanie triedy=== | ||
Line 371: | Line 354: | ||
Napríklad: | Napríklad: | ||
− | <pascal> | + | <syntaxhighlight lang=pascal> procedure TForm1.DoSomething(Sender: TObject); |
− | |||
begin | begin | ||
− | end; | + | 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. | 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 388: | 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 |
− | + | FInt: integer;</syntaxhighlight> | |
− | FInt: integer; | ||
− | </ | ||
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 |
− | |||
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: | ||
− | <pascal> | + | <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 | + | ===Otočenie priradení=== |
(''Invert Assignments'') | (''Invert Assignments'') | ||
− | Otočenie | + | 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> |
− | </ | ||
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; |
− | |||
begin | begin | ||
BValueStudio := AValueStudio; | BValueStudio := AValueStudio; | ||
BValueAppartment := AValueAppartment; | BValueAppartment := AValueAppartment; | ||
BValueHouse := AValueHouse; | BValueHouse := AValueHouse; | ||
− | end; | + | end;</syntaxhighlight> |
− | </ | ||
=== Uzavrieť výber === | === Uzavrieť výber === | ||
Line 476: | 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; |
− | + | TColor = TGraphicsColor;</syntaxhighlight> | |
− | TColor = TGraphicsColor; | ||
− | </ | ||
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> |
− | |||
− | </ | ||
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> |
− | |||
− | </ | ||
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> |
− | |||
− | </ | ||
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 505: | Line 469: | ||
Napríklad: | Napríklad: | ||
− | <pascal> | + | <syntaxhighlight lang=pascal> procedure TForm1.FormCreate(Sender: TObject); |
− | |||
begin | begin | ||
| | | | ||
− | end; | + | end;</syntaxhighlight> |
− | </ | ||
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 526: | Line 488: | ||
Napríklad: | Napríklad: | ||
− | <pascal> | + | <syntaxhighlight lang=pascal> procedure TForm1.FormCreate(Sender: TObject); |
− | |||
begin | begin | ||
Ca|ption | Ca|ption | ||
− | end; | + | end;</syntaxhighlight> |
− | </ | ||
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 559: | 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 01: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
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)