Sign in Join
Wiki copytemporary

Revision 1 of 3, by Trev on 2-17-2020. The page as it is now.

IDE tricks/hu

IDE trükkök

Új fájl létrehozása Fájl megnyitásával

<div style="text-align: justify;">

Létrehozhatsz új fájlt és elmentheted, vagy létrehozhatsz egy új fájl fájlnévvel és típussal egy lépésben is: egyszerűen nyiss meg egy fájlt (<span class="kbd">CTRL</span> + <span class="kbd">O</span>) és válassz ki egy nem létező fájlt. Például: unit1.pas. Az IDE rá fog kérdezni, hogy létrehozza-e.

</div>

Új unit / form testreszabása

<div style="text-align: justify;">

A 0.9.27-es verziótól kezdve jobb gombbal klikkelve az 'Új unit' (Új form) gyorsgombra, beállíthatod a létrehozandó fájl típusát. Regisztrálhatsz további fájltípusokat az IDEIntf-en vagy a projekt sablonok csomagon keresztül.

</div>

IDE makrók

IDE makrók az elérési utakban és fájlnevekben

IDE direktívák

IDE direktívák

Az IDE által létrehozott fordítói parancssori paraméterek megszerzése

<div style="text-align: justify;">

Kimásolhatod a paramétereket a Projekt -> Fordító beállításai ... menü Beállítások megjelenítése gombra klikkelve megnyíló ablakból. Itt a projekt könyvtárhoz képest relatív elérési utak vannak megadva. Tehát a legtöbb esetben módosítás nélkül felhasználhatod őket.

A paraméterek a *.compiled fájlban is megtalálhatók. Például, ha a projekted neve test1.lpi, akkor a test1.compiled is létrejön. Ez egy egyszerű XML fájl, tehát egyszerűen kimásolhatod az opciókat, és beállíthatod az elérési utakat, hogy egy másik számítógépen is le tudd fordítani a projektedet. A fájl ugyanabba a könyvtárba kerül, ahol a futtatható fájl létrejön.

Csomagok esetén is ugyanez az eljárás használható.

Ezzel a módszerrel lefordíthatod a - remélhetőleg működő és hibamentes - kódodat, a Lazarus IDE-n kívül is.

</div>

Minden szerkesztett fájl bezárása egy kivételével

<div style="text-align: justify;">

GTK alatt (elérhető Linux-on, Mac OS X-en és FreeBSD-n), a forráskód szerkesztő lapfülein bezáró gombok is megjelennek. Ha a bezáró gombra klikkelsz a CTRL lenyomásával egy időben, akkor minden szerkesztett fájl be lesz zárva, kivéve amelyikre klikkeltél.

</div>

Komponens paletta

Komponens megkeresése a palettában

<div style="text-align: justify;">

Tudod a komponens nevét, vagy egy részét, de nem tudod, melyik lapon található? Ez az eszköz segít: klikkelj a jobb egérgombbal az egyik komponensre a palettában, hogy a felugró menüt megjelenítsd. Válaszd ki a 'Komponens megkeresése' menüpontot. Írd be a komponens nevének részletét, hogy szűrd a listát.

</div>

A palettában lévő komponens csomagjának megnyitása

Jobb klikk a komponensen a felugró menü megnyitásához, majd válaszd ki a Csomag megnyitását.

A palettában lévő komponens forrásának megnyitása

Jobb klikk a komponensen a felugró menü megnyitásához, majd válaszd ki a Unit megnyitását.

Az alkalmazásom lefagyasztja a Linux asztalomat hibakeresés közben

Az X (az asztalod) lefagyhat, amikor a gdb (a hibakereső) leállítja az alkalmazást, amelyikben az egér van.

Második X munkamenet használata

Egy második X-et elindíthatsz így:

  X :1 &

Ctrl-Alt-F7-tel átváltasz :0-ra és Ctrl-Alt-F8-cal :1-re ezután elindíthatsz egy második gnome munkamenetet így:

  gnome-session --display=:1 &

VNC használata

<div style="text-align: justify;">

A VNC szerver/kliens használható a tightvncserver/realvncserver telepítésével. Indítsd el a szervert így:

  vncserver :1

Ha minden igaz, egy munkamenet is el fog indulni. Csatlakozhatsz a VNC szerverhez a vncviewer-rel.

</div>

Alkalmazás hibakeresése a második szerveren

<div style="text-align: justify;">

Lazarus-ban, a projekted futtatási paraméterei között pipáld be a "Megjelenítő használatá"-t és írd be:

 :1

Így az alkalmazásod a második szerveren fog futni, tehát amikor a hibakereső fut, csak a második szerver fog lefagyni, de ez nem fog befolyásolni téged, mivel az elsőn megy a hibakeresés.

</div>

Az IDE gyors fordítása

<div style="text-align: justify;">

A Lazarus-szal való dolgozás során sokszor előfordul, hogy újra kell építeni az IDE-t. Ha a következő trükköket használod és van elég memóriád egy újabb CPU-val, akkor lehetőséged van pár másodperc alatt újrafordítani az IDE-t.

</div>

IDE vagy LCL alkalmazás DebugLn-jei

<div style="text-align: justify;">

Az IDE sok hasznos tippet kiír a DebugLn-en keresztül. Windows alatt elmentheted őket a Lazarus --debug-log=filename.txt parancssori paraméterével. Linux/BSD/Mac OS X/Solaris alatt: egyszerűen indítsd a Lazarus-t egy terminálból. Ez egy általános LCL lehetőség.

</div>

Egy IDE ablak forrás fájljának megkeresése

Objektum Felügyelő: Események: Keretek: Ugrás az öröklött esemény forrására

<div style="text-align: justify;">

Az Objektum Felügyelő megjeleníti az öröklött események eseményeit Osztálynév.Metódusnév-ként. Dupla kattintásra egy új esemény jön létre. Ctrl+Klikk az esemény legördülő menüjén közvetlenül az öröklött metódusra ugrik, anélkül, hogy új eseményt hozna létre.

</div>

Események (Metódus tulajdonságok) az Objektum Felügyelőben

<div style="text-align: justify;">

Az események (Metódus tulajdonságok) különleges tulajdonságok, mert értékként egy kódra (függvényre) mutató pointer-t kérnek, ami nem létezik tervezés közben. Ez az, amiért a Lazarus ugyanazt a trükköt alkalmazza, mint a Delphi: Minden metódus értékének típusa konvertálható ("type cast"-elhető) TMethod-ra, ami tartalmazza a Data (az objektum vagy osztály pointer) és a Code (a cím pointer) mezőket. Alap esetben, egyik sem nil (null pointer). Az IDE beállítja a Data-t egy különleges kulcs értékre a belső kereső táblája alapján, és a Code-ot nil-re. Ez azt jelenti:

Ne használd:

pascal
if OnMyEvent <> nil then OnMyEvent(...); // hibás, mert ellenőrzi a Data-t is

Mivel ez így ellenőrzi a Data-t és a Code-ot is, és egy hamis metódusra fog ugrani, magyarán ugrás lesz nil-re. Ez kivételt fog generálni, szóval nem okoz különösebb gondot, de az IDE hibaüzenetet fog küldeni, és a program futása leáll. Helyette használd inkább az Assigned függvényt:

pascal
if Assigned(OnMyEvent) then OnMyEvent(...); // helyes, mert csak a Code-ot ellenőrzi

Ne használd:

pascal
if OnMyEvent = NewValue then Exit; // hibás, mert csak a Code-ot ellenőrzi

Mivel ez így csak a Code-ot ellenőrzi, használd inkább ezt:

pascal
if CompareMem(@FOnMyEvent, @NewValue, SizeOf(TMethod)) then Exit; // helyes, mert a Data-t és a Code-ot is ellenőrzi

</div>


From the Free Pascal wiki, page "IDE tricks/hu", as it stood on 2020-02-17 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.