?: Jak mohu získat VFP 7.0 BETA na testování?
!: Můžete si ji objednat po webu na http://msdn.microsoft.com/vfoxpro v rámci Visual Studio .NET BETA 1 - poštovné stojí 15.99$. Nebo ji lze získat jako jeden z mnoha produktů dodávaných v MSDN Universal (nejvyšší verze tohoto produktu), o kterém se píše na jiném místě časopisu.
A teď ke slibovanému povídání o nové verzi FoxPro.
Když jsem do ruky dostal CD s "první verzí" VFP 7.0, hned jsem ji zvědavě zasunul do mechaniky. Viděl jsem ji, jako ostatně i mnozí z vás, na FoxPro DevCon, Praha 1900, ale to je něco jiného. Pouze se koukat mi nestačí. Instalace proběhla rychle a bez závad. Po spuštění se objeví velké barevné logo a pak staré známé hlavní okno VFP s menu, toolbarem a příkazovým oknem a... nic víc. Na první pohled jsem nepoznal, kterou verzi jsem si spustil. Přibylo jen několik nových ikonek v toolbaru. Zkouším první - Properties. A hle, toto okno je stejné jako při návrhu formuláře, ale zde si mohu nastavit vlastnosti hlavního okna. Zkusil jsem okno přetáhnout do strany a hned se přichytilo k okraji. Chvíle hraní a zjišťuji, že systémová okna (Command, Document View, Properties a Data Session) se dají spojovat k sobě, přichytit k okraji nebo vytvořit jedno okno se záložkami. Ušetří to místo. Ale ouha! Okna jsou stále v popředí (On Top) a ostatní okna se pod ně schovávají, chce to velký monitor. No, snad se to ještě změní.
Tak a teď honem vyzkoušet na vlastní kůži Intellisense. Do okna Command píšu BROW a mezeru. A objeví se žluté okno s celým příkazem BROWSE. Je to jen text jako připomenutí, co vše si mohu s tímto příkazem dovolit. Tak jinak. Napíšu: MessageBox( - hned se zobrazí okno s nápovědou, doplním "Pokus" a čárku, teď se žluté okno změní a já mohu vybrat, co chci za další parametr - už si nemusím pamatovat, jak se jmenuje definice ve FOXPRO.H nebo jaké číslo má tlačítko OK, pouze vyberu a pak dopíšu titulek. Hm, tak tohle pomůže, protože je to i u dalších funkcí, které mají volitelné parametry. Vyvolat teď funkci SYS() je pohoda, pouze si vybírám. Navíc Intellisense kontroluje závorky, a tak i vnořená funkce IIF bude hračkou. Pro nastavení této užitečné pomůcky slouží Intellisense Manager. Vše je tu uloženo přehledně v tabulkách, které se dají dobře editovat. Malé žluté nápovědné okno lze změnit na "Tips window", ze kterého se dá kus příkazu zkopírovat.
Změn doznalo i nastavování vlastností pro soubory. Písmo, krok tabulátoru, barevné rozlišení syntaxe, odsazování a zalamování apod. můžete nastavit ve vlastnostech souboru (přes pravé tlačítko), ale teď i centrálně v Options na záložce IDE. Přibyla možnost vkládání hypertextových odkazů. Editovací okno má po levé straně šedivý proužek, na který se dá vložit zarážka pro debugger.
Jako asi každého foxaře, i mne zajímalo, co vývojový tým změnil na návrháři menu a v reportech. Tohle je zatím zklamání. Menu je stále stejné. Přibyla pouze možnost přidat do menu ikonu (malý obrázek známý z Office). Jinak nic. A reporty? Zůstávají stejné, ale podle informací budeme mít možnost využít externí reportér (asi Crystal Reports od Seagate). No uvidíme.
Dál jsem si vyzkoušel několik nových funkcí. Jako první InputBox(). Je to jednoduché vyvolání dialogu pro zadání znakové hodnoty do proměnné. K tomu se váže i změna v MessageBox(), přibyl parametr Timeout, který po zadaném čase okno sám odstřelí. Komu scházela v databázi možnost odchytit práci s tabulkou (otevření, modifikaci či jiné), může si v Sedoně vybrat z množství nových událostí DBC_*. Jen namátkou: DBC_BeforeAddTable, DBC_BeforeOpenTable, DBC_BeforeModifyTable. Podobně si odvodíte DBC_After... nebo události pro View.
Nové funkce a příkazy a vylepšení "starých známých" funkcí a příkazů o nové parametry a fráze opravdu usnadní programátorům život. Novinek je na celé číslo, ale tolik místa nedostanu, počkejte si na pokračování v příštím čísle. Těšte se. Třeba na funkce pro práci s poli, s řetězci, s objekty - nebo na něco jiného.
Document View se dá použít pro přehled příkazů #DEFINE, #INCLUDE, #IF...#ENDIF apod., procedur a funkcí. I v předchozí verzi se dal zobrazit seznam pomocí místní nabídky Procedure/Function List, teď je tato informace stále na ploše a dá se díky ní rychle přejít na jinou část souboru. Asi největší využití bude mít v dlouhém souboru procedur nebo při nevizuálním návrhu tříd DEFINE CLASS…. Okno Command bylo vždy při startu VFP prázdné. V této verzi zde vidíte všechny příkazy od minulého mazání obsahu. I nadále lze spouštět více řádků z tohoto okna najednou; stačí je pouze vybrat do bloku a stisknout ENTER. Ale pozor, pokud tímto způsobem chcete zavést do paměti nějaké proměnné, tak to vás zklamu - musíte je psát řádek po řádku. FoxPro totiž vybraný blok spouští jako dočasný program a tak proměnné po jeho skončení zavedeny nejsou.
Přibyly dvě desítky funkcí a příkazů a množství funkcí a příkazů bylo rozšířeno. Do rodiny funkcí, které informacemi plní pole, přibyly další čtyři:
Vadí vám zalamování dlouhé cesty k souborům v informačních oknech? Už nebude: funkce DisplayPath() zkrátí cestu přehledně na zadaný počet znaků. Funkce ExecScript() umožňuje spustit příkazy uložené v proměnné, příkazu můžete dodat i parametry, pokud je na začátku řetězce uvedeno PARAMETERS nebo LPARAMETERS. Používali jste pro zápis XML externí knihovny? Teď máte k dispozici funkce XMLToCursor() a CursorToXML(), plus dalších pár funkcí pro práci s XML. Pro založení nebo změnu SCX, PRG, MNX, FRX a dalších souborů lze použít funkci EditSource(). Podle přípony se spustí příslušný editor nebo návrhář. Můžete si kurzor nastavit na dvacátý druhý řádek J. Nové jsou i některé funce SYS() a nové vlastnosti tříd. Ale tohle necháme až na finální verzi nebo nějakou další BETU, to může doznat ještě značných změn.
Které příkazy jsou rozšířeny?
Přibyla fráze "IN WorkArea" u BLANK, PACK, RECALL, CALCULATE a SET FILTER.
Budete moci odstranit pouze vybrané DLL knihovny CLEAR DLLS .
A funkce? ALINES() může nyní řádky oddělovat i pomocí jiných oddělovačů než CHR(13) nebo CHR(10), stačí napsat jejich seznam.
Pěkná změna je ve funkci ASCAN(), která v SEDONĚ umožňuje hledat i v zadaném sloupci a podle zadaných kritérií (např. rozlišovat malá/velká písmena, nastavení EXACT, apod.).
Ve funkci ASORT() lze nastavit třídění "case insensitive".
Stejně tak i ve funkci STRTRAN() lze ignorovat malá/velká písmena.
Funkce GetDir() má nový parametr, který umožní zobrazení pouze adresáře a jeho podadresářů, ale výš (nebo níž) do adresářové struktury uživatele nepustí a tak přispívá k bezpečnosti aplikací.
Nechtěl jsem se zmiňovat o vlastnostech tříd, ale jedno rozšíření přece jen prozradím, protože jde o dost častý dotaz: Header v gridu už může mít více řádků díky vlastnosti WordWrap. Tímto se rozloučím a budu se s vámi nadále těšit na novou verzi
.Martin Růžička