Po čtvrté verzi a třech záplatách přichází pátá verze oblíbeného nástroje Delphi. Nejen na otázku, zda bude i k této verzi zapotřebí opravného balíku, se budu snažit odpovědět právě na těchto několika stranách.
Dodávka a instalace
Delphi se na trh dodává stejně jako dříve ve třech baleních: Standard,
Proffesional a Enterprise (dříve Client/Server). Měl jsem možnost podívat
se na Delphi nejtěžšího kalibru. V krabici kromě vlastního CD s Delphi
naleznete čtyři manuály – tenký Quick Start, silnější Object Pascal
Language Guide a Operation Guard k InterBase a nejsilnější
Developer‘s Guide – a další CD: Companion Tools, C++ Builder 3 a
JBuilder 2. Co mě překvapilo bylo balení CD. Všechna, kromě C++ Builderu,
byla v papíru, C++ Builder v klasické umělohmotné krabičce. Na to, kolik
produkt stojí, bych čekal, že v umělohmotné krabičce budou všechna CD.
Pro pokročilé bude asi nejpoužívanější hierarchický strom objektů
(tříd), který doporučuji mít pověšený hned nad monitorem. Instalace
Delphi 5 proběhla bez sebemenších problémů. Chcete-li však používat
ADO, je potřeba nainstalovat si MDAC zvlášť.
Object Inspector
První, co nás zaujme, jsou změny v uživatelském prostředí. Object
Inspector má změn hned několik. Již nemusíme dlouho očima hledat
vlastnosti typu objekt (vlastnosti s „křížkem“), jsou lépe vidět,
protože jsou světle podbarveny. Dále lze zvolit dvojí pohled: podle
abecedního seznamu vlastností, jak jsme zvyklí dosud, nebo podle kategorií,
kam vlastnost logicky patří (viz obrázek). To, že je vlastnost v jedné
skupině ještě neznamená, že se nemůže objevit i v jiné. Například
vlastnosti Width a Height můžeme nalézt ve skupině Visual ale stejně tak
v Layout (ale i jinde). Při programování komponenty lze říct, v jaké
skupině či skupinách má nová vlastnost být. Na stavovém panelu Object
Inspectoru je zobrazen počet nezobrazených vlastností.
Už je konec psaní si čísel obrázků v ImageListu vedle klávesnice na
papírek a pak jejich doplňování. U takovýchto seznamů (kurzory, obrázky,
barvy, …), nazývaných kombinované seznamy, je vše zobrazeno přímo
u vlastnosti v Object Inspektoru.
Co jsem tam měl ještě dodělat?
Také si všude kolem sebe píšete na papíry, co ještě máte do projektu
udělat a stejně je pak nemůžete nalézt, nebo máte celý monitor polepený
klasickými žlutými papírky? Nezoufejte. Pomůže vám ToDo List, což je
nástroj, kam si zaznamenáváte věci, které máte na projektu udělat a pak
již jen odškrtáváte, co máte hotové. Pokud to přeci jenom chcete mít na
papíře, máte možnost si seznam převést do tabulky, kterou lze následně
získat v HTML podobě a vystavit třeba na intranetovém serveru ve firmě.
Seznam lze třídit a filtrovat podle zvoleného kritéria – pouze vybraného
uživatele, stavu,vybrané kategorie, zda je akce již hotová či nikoliv a
dalších.
Kdo má ta okna pořád hledat, otvírat a zavírat
Pokud jste stále přepínali mezi okny a hledali při ladění jiná okna
než při vývoji, můžete tomu učinit konec. Delphi 5 umožňují uložit si
vlastní nastavení Desktopu, z nichž jedno nastavení lze zvolit jako
ladící. Pak můžete mít různá okna jako sledování proměnných,
zásobníku apod. pouze v ladícím módu a ostatní při psaní kódu.
Nastavení oken platí globálně, tedy pro všechny projekty současně. Nelze
si tedy pro každý projekt udělat vlastní nastavení, což se může někomu
zdát jako nevýhoda – zde samozřejmě záleží na samotném
vývojáři.
Změny ve VCL
Větších změn dosáhla komponenta TListView. Kromě jiného umožňuje
zobrazovat obrázky ve stylu vsReport i u podřízených členů (subitems).
Umožňuje vybírání položek myší, aniž by uživatel na položku kliknul.
Nápověda (Hint, zde InfoTip) se nyní může použít u všech členů
seznamu. Přibyla také událost OnColumnRightClick. Z názvu je jasné,
k čemu slouží. Vylepšení doznala komponenta TCheckListBox, kde přibyla
vlastnost ItemEnabled určující, který člen je nebo není možno vybrat.
Obsluhu událostí aplikace lze již provádět pomocí nové komponenty
TApplicationEvents, kde jsou shromážděny události aplikace. Co mi je však
záhadou, proč tam nejsou i vlastnosti. No, možná příště. Do třídy
TApplication přibyly ještě vlastnosti BiDiKeyboard a NonBiDiKeyboard, které
dovolují uživateli navrhnout si klávesnici dle potřeby národního
prostředí.
Objekt TScreen obsahuje dvě nové vlastnosti: HintFont a MenuFont, které
určují písmo používané pro hinty a pro menu. Menu má další příjemnou
vlastnost. Aby se vývojáři vyvarovali typické chybě – dvě stejná
podtržená písmenka – zavedly Delphi vlastnost AutoHotkeys, které zajistí
jednoznačné přiřazení klávesové zkratky do menu (pozor, je to vidět až
po spuštění projektu). Pro efekt je možné určit, jakým způsobem se menu
rozbalí (známe například z Windows 98) – funguje pouze pro Windows 98 a
pro Windows 2000.
OnContextPopup je událost, která byla přidána do třídy TControl. Jedná
se o zapouzdření zprávy Windows WM_CONTEXTMENU, tedy běžně používaná
při kliknutí pravým tlačítkem na ovládacím prvku k vyvolání
kontextového menu. V této události můžete ještě před vyvoláním menu
provést vlastní akci, dokonce můžete vyvolání menu potlačit.
TClientDataset umožňuje díky vlastnosti Constraints, která je nyní
published, zadávat různá uživatelská omezení. Pokud chcete použít SQL
příkaz, již není potřeba kvůli tomu speciálně používat TQuery, ale
můžete použít přímo metodu Execute komponenty TDatabase. Nastavením
vlastnosti AutoRefresh komponenty TDBDataSetu máte zajištěno, že defaultní
hodnoty a autoinkrementální hodnoty jsou automaticky načteny při zápisu
záznamu (není tedy potřeba volat metodu Refresh jako dosud).
V adresáři Source jsou nově zdrojové soubory pro rozhodovací krychle
(Decision Cube), které mohli někomu v minulé verzi chybět.
Pro vývojáře, kteří potřebují vytvářet i aplikace, které jsou
součástí Control Panelu (Ovládací Panel), jsou Delphi 5 dobře vybaveny.
Poskytují dvě třídy k tomuto určené – TAppletApplication a
TAppletModule.
Pozor si dejte při přechodu z nižší verze u komponenty TListBox,
konkrétně u metody Exchange vlastnosti Items, kdy dochází k jinému
zaměření po provedení výměny. Dříve zůstala hodnota vlastnosti
ItemIndex nezměněna, nyní dochází k její aktualizaci.
Rámce
Rámec (Frame) je další novinkou v Delphi 5. Rámec slouží jako
kontejnér pro další komponenty a jako takový může být vložen do jiného
rámce nebo – častěji – přímo na formulář. Jsou-li tedy na
formuláři stejné skupiny komponent (příkladem může být hrací kostka
složená z TPanelu a devíti TShape), pak je použití rámce velmi výhodné.
Rámce se navrhují stejně jako formulář. Pokud chcete udělat změnu
v každé skupině, stačí ji provést pouze v rámci a vše se promítne do
použitých rámců v projektu. Vložení rámce do formuláře probíhá
pomocí umístění komponenty TFrame na formulář a následný výběr ze
seznamu rámců. Komponenty na vloženém rámci lze přesouvat, měnit jejich
velikost apod., nelze je však smazat – to musíte udělat v návrhu rámce.
Stejně tak chcete-li na panel umístěný v rámci přidat třeba vstupní
pole (TEdit), nepovede se vám to – vlastníkem vstupního pole bude
formulář. Rámec použitý na formuláři již není kontejnérem.
Nové možnosti ladění
Delphi 5 mají (konečně) větší možnosti nastavování bodů
přerušení (breakpoints) oproti dřívějším verzím. Kromě dříve
podporované podmínky či počtu průchodů přibyla možnost shlukovat
jednotlivé body přerušení do skupin a pak dle potřeby jednotlivé skupiny
povolovat či zakazovat. Dále je možno posílat do Event Logu zprávu včetně
možnosti vyhodnocení výrazu a také nastavit, zda se má při dosažení bodu
přerušení běh programu opravdu přerušit. Je konec různým zápisům do
externího souboru. Poslední možností je určit si chování bodu
přerušení v případě výjimky. Další novinkou je možnost sledování
jednotky FPU případně MMX registrů. Přidávání proměnných a výrazů je
nyní snažší díky podpoře drag‘n‘drop. Stačí označit proměnnou či
výraz myší a pak přetáhnout do okna WatchList (nejste-li v ladícím modu,
držte navíc klávesu Alt).
Pokud potřebujete ladit více procesů najednou, stačí k tomu již pouze
jedna instance Delphi. Stejně dobře můžete ladit proces, který z Delphi
nebyl spuštěn a dokonce nebyl ani v Delphi vytvořen. Ovšem pozor, zkoušet
ladit takový kernel32.dll zcela jistě vede k zamrznutí počítače, což
samozřejmě není chyba Delphi…
Trojí pohled na data
Velkého rozšíření se dočkal datový modul, který nyní umožňuje
dívat se na data třemi různými pohledy. První z nich – komponentový
pohled – nikoho nepřekvapí, neboť jej zná z dřívějších verzí.
Další dva jsou již novinkou. Hierarchický pohled ukazuje stromovou strukturu
našich dat a zobrazuje vztahy vlastník – vlastněný tak, jak jsou na sebe
logicky navázáni. Například TDatabase má „pod sebou“ TTable či TQuery,
kteří získávají některé vlastnosti rodiče – SessionName či
DatabaseName. TTable má zase jednotlivé položky (TFields). Pokud chcete
přidat další dotaz či tabulku, stačí odpovídající komponentu umístit
na TDatabase v hierarchickém pohledu a vše potřebné je automaticky
doplněno za vás. Červeným rámečkem kolem ikony nám Delphi říkají, že
musíme ještě vyplnit nějakou vlastnost, abychom mohli daný prvek
používat. Posledním je pohled s názvem Datový diagram, který popisuje
vztahy mezi komponentami. Jednoduše lze zobrazit vztahy typu master-detail nebo
lookup, ale i nadřazenost komponent (například TDatabase). Přehlednost je
dále zvýšena pomocí voleb barev a možností dopsat si libovolné
komentáře k návrhu. Datový diagram je pěkně vyvedený, ale pokud si
myslíte, že si s ním budete moci navrhovat vlastní, nové, datové
diagramy, máte smůlu. Datový diagram zobrazuje to, co je již hotovo, co již
běžně máte v některém CASE systému nebo co máte namalované tužkou na
papíře. Doufám, že nás tím vývojáři v Borlandu navnadili na verzi 6,
kde by jistě většina z nás ocenila datové modelování od začátku, bez
použití jiného CASE systému. Osobně bych byl zklamán, kdyby to tam
nebylo.
Na server InterBase přímo
Velkou novinkou v Delphi 5 je i připojení k InterBase serveru
nativními linky, jejichž funkce zapouzdřují speciální komponenty. Od verze
5 tedy není potřeba ani BDE ani ODBC a dokonce ani ADO. Stačí použít
komponentu TIBDatabase, definovat k ní transakci a již se můžete začít
připojovat. Chcete-li zadat SELECT příkaz do TIBQuery, pomůže vám
jednoduchý wizard, který přímo v editoru vlastnosti zobrazuje všechny
tabulky a jejich sloupce (samozřejmě, jste-li připojeni na databázi). Je to
sice maličkost, ale ušetří práci. TIBDataSet je vypracovanější
komponenta mající kromě jiného vlastnosti DeleteSQL, InsertSQL, ModifySQL,
RefreshSQL a SelectSQL, což opět urychluje práci a hlavně šetří
zdroji – nemusíte totiž používat TIBUpdateSQL.
ADO Express
KAPITOLA OD ZBYŠKA HLINKY
Lokalizace v Delphi
KAPITOLA OD ZBYŠKA HLINKY
Jiný způsob ukládání
Pokud se díváte, co že vám to vlastně Delphi do vašeho adresáře
s projektem uložily, jistě si všimnete drobné změny. Definice formulářů
se již ukládají v textové podobě, byť mají stejnou příponu jako ve
verzích nižších. Pokud se vám to nelíbí, lze samozřejmě přepnout na
binární podobu.
Vylepšený prohlížeč objektů
Prohlížeč objektů (Object Browser) je přepracovaný od základů.
Umožňuje zobrazit informace ve třech náhledech. Globals zobrazuje všechny
globální deklarace, které seskupuje podle typů. Hierarchický pohled
umožňuje Classes. Zobrazuje vztahový diagram od prapředka všech tříd
TObject ke zvolené třídě. Konečně poslední typ pohledu je Units, kde lze
sledovat příslušnost jednotlivých prvků k modulům. Výběr lze
samozřejmě omezit pouze na symboly vyskytující se v daném projektu nebo
můžete prohlížet všechny dostupné symboly z VCL.
Microsoft Office
Na paletě Servers naleznete komponenty pro práci s aplikacemi
z kancelářského balíku Microsoft Office. Tyto komponenty fungují na
principu COM technologie. Již pomocí tří základních příkazů lze
komunikovat například s Excelem nebo lze naformátovat text a poslat jej
přímo do Wordu (k tomu už samozřejmě příkazů potřebujete více).
Práce se seznamy
Snad každý někdy napsal projekt, který potřeboval seznam. Delphi
5 přicházejí s knihovnou contnrs, která umožňuje pracovat s několika
druhy seznamů. TClassList představuje seznam tříd, TObjectList seznam
objektů (i vlastněných), TComponentList je seznam komponent. Pro frontu
resp. zásobník ukazatelů je připraven TQueue resp. TStack. Pro objekty jsou
TObjectQueue a TObjectStack. Drobnou poznámku bych měl k TComponentList. Tato
třída existovala již v Delphi 4 v jednotce dsgnintf a nyní je
přejmenována na TDesignerSelectionList, což může vést k problémům
při přechodu právě ze čtvrté verze.
Delphi 5 a registry
V nové verzi Delphi došlo také ke změně ukládání informací
o seznamu balíčků v registrech. Pátá verze je oproti dřívějším
ukládá do HKEY_CURRENT_USER namísto do HKEY_LOCAL_MACHINE, což vede
k problémům s uživateli. Pokud jeden uživatel nainstaluje komponenty,
musí je druhý na tom samém počítači nainstalovat také. Pokud pracuje
jeden vývojář na jednom počítači, toliko to ještě nevadí, ale
například ve školách, kdy se na jednom počítači střídá velké
množství studentů, je toto řešení neúnosné.
Práce v týmu
Pro práci v týmu přichází s Delphi zcela nový produkt – Borland
TeamSource (BTS). Jedná se o samostatnou aplikaci, kterou musíte instalovat
zvlášť. BTS podporuje dvě možnosti ukládání projektů: Zlib, který je
standardní a PVCS, který je známý z dřívějších verzí Delphi. Ostatní
si můžete naprogramovat sami. BTS funguje jako paralelní model správy dat,
což znamená, že každý vývojář pracuje na své vlastní kopii projektu,
kterou si umístí na svůj lokální počítač a při ukládání hotové
práce se případné změny ve stejném souboru s jiným vývojářem
skombinují (slijí, anglicky merge). Nic proti tomu celkem nemám, ale osobně
to nepovažuji za úspěšný model týmové spolupráce na projektech. Ale
jdeme dál. Definujeme si projekt, uživatelé, kteří mohou na projektu
pracovat a potřebné adresáře, kam se bude projekt ukládat. Sice jsem
delší dobu tápal, než jsem přišel na to, jak se s BTS pracuje, ale
nakonec se mi to povedlo a mohl jsem začít přidávat soubory, upravovat je a
dávat zase zpět. Problém nastal, pokud jsem změnil soubor, který taktéž
změnil virtuální kolega na druhém počítači. Ejhle, Zlib neumožňuje
slévání dvou verzí dohromady, což mě vzhledem k velkým titulkům na
reklamních letácích značně zarazilo! Čekal jsem, že slévání bude na
standardní instalaci BTS, ale asi jsem náročný uživatel. Slívání by
mělo umožňovat PVCS.
Při vývoji středních a velkých projektů bývá zvykem zakládat si tzv.
podprojekty. S BTS máte dvě možnosti. Buďto si založíte jeden velký
projekt s velkým množstvím adresářů a souborů a nebo si každý
podprojekt založíte jako vlastní samostatný projekt. Budete-li mít jeden
velký projekt, pak všichni vývojáři pracující na daném projektu vidí a
mohou upravovat všechny ostatní „podprojekty“, což nemusí být
žádoucí. Mám-li založeno větší množství projektů, musíte ke
každému založit uživatele. Máte-li například deset vývojářů,
z nichž každý pracuje třeba jen na dvou projektech a přitom si může
prohlížet pět ostatních, pak jméno každého vývojáře napíšete
sedmkrát (není tam ani combo box s dříve použitými vývojáři). Co
teprve v týmech, kde jsou kromě vývojářů i tým, který projekty
testuje.
Na BTS se mi kromě zmíněného nelíbí ještě další věci. První je
absence manuálu. Nápověda je sice dodána, ale je natolik stručná, že vám
nezbude nic jiného než experimentovat. Nepodařilo se mi umožnit pracovat
více lidem na jednom počítači (Windows 95). Ať jsem se přihlásil jako
kterýkoliv uživatel, vždy jsem tam byl jako již zavedený uživatel. Každý
vývojář tedy musí mít vlastní počítač. Kromě adresářů, které
programu sami řeknete, si BTS udělá ještě navíc adresář na disku C:,
což také není nejslušnější chování aplikace.
Ač to říkám nerad, BTS je pěkný ročníkový projekt univerzitního
studenta, ale pro práci v týmech bych raději sáhl například po produktu
Visual SourceSafe od Microsoftu.
Další novinky
S Delphi dostáváte (konečně) aplikaci Resource Workshop. Delphi jsou
připravené na soubory typu .RC a lze je začlenit do projektu a kompilovat
spolu s ostatními soubory projektu. Komponenta WebBrowser integruje HTML
prohlížeč přímo do vývojového prostředí. Kromě podpory HTML je
v Delphi i podpora jazyka XML.
Stabilita a rychlost
Delphi 5 působí mnohem stabilněji, než první edice verze čtvrté.
Bohužel ale nejsou stabilní úplně. Občas se mi zdálo, že se jim některé
mé projekty nelíbí a proto při druhém či třetím spuštění projektu
Delphi zamrzly. Tuto nepříjemnou vlastnost jsem omezil tím, že jsem smazal
všechna nastavení ploch, ale i tak se mi to nepodařilo zcela vyloučit.
Zvláštní na tom je, že bylo celkem jedno, na jakém projektu jsem pracoval.
Ať to byl projekt naprosto nový s minimálním počtem komponent a kódu nebo
napsaný v dřívějších verzích, ať šlo o aplikace databázové nebo
nedatabázové. Prostě některé projekty Delphi úplně milovaly a ani jednou
nezamrzly, a některé vyloženě nenáviděly – jako by žárlily.
Postupným omezováním komponent na formuláři jsem zaznamenal zamrznutí při
použití TStringGrid nebo TListView. Projekt byl v Delphi 4 bezproblémový,
proto bych vyloučil komplikace s hardware. Na druhou stranu žádný jiný
počítač, na kterém se jeden konkrétní projekt testoval, s tímto problém
neměl. Pokusy byly provedeny na Windows 95, Windows 95 OSR 2 a Windows
2000 RC 1. Pouze na Windows 2000 RC 1 se zdálo, že k zamrznutí nedojde.
Bohužel jsem neměl tu možnost otestovat problém na Windows NT, ale vzhledem
k tomu, že Windows 2000 jsou následníkem Windows NT, nemusel by být
problém ani tam.
Co se rychlosti týče, nezaznamenal jsem kromě startu žádné výrazné
zpomalení. Překlad i ladění aplikací probíhal srovnatelně rychle
s Delphi 4 (testovací počítač byl Pentium 200 MMX, 64 MB paměti a
6,4 MB pevný disk).
Delphi Professional
KAPITOLA OD ZBYŠKA HLINKY
Verdikt
V recenzi nebylo možno postihnout všechny novinky a vylepšení, dost jich
zůstalo kvůli nedostatku místa nevyřčeno. Snažil jsem se zaměřit na ty,
které jsou na první pohled vidět nebo na takové, které jsem považoval za
výrazné. Informace o dalších novinkách naleznete přímo na stránkách
firmy Borland (Inprise).
Delphi jako takové jsou kvalitním produktem. Novinek není (vzhledem
k verzi 4) tolik, ale jsou v samotném prostředí takové, po kterých
programátoři již delší dobu volali. Důraz byl kladen více na kvalitu a je
to znát. Borland si napravil reputaci po neúspěchu s Delphi 4. Otázkou je,
zda přecházet na vyšší verzi či nikoliv. Samozřejmě je důležité, na
jakých projektech pracujete. Chcete-li vytvářet aplikace pro Internet,
vícevrstvé aplikace či chcete-li využívat moderních technologií, pak
přechod bude důležitý. Používáte-li Delphi 3 a nižší, přechod bude
jistě velkým zpříjemněním práce. Máte-li verzi 4 a nepotřebujete-li
používat vymožeností nových Delphi, zůstaňte u své verze.
Obrázky
Co se líbilo
- vykreslování kombinovaných seznamů
- nastavitelné body přerušení
- rámce
- ToDo List
Co zklamalo
Tento článek byl napsán pro časopis Softwarové noviny 12/1999.
Upozornění: tento text neprošel redakční úpravou, takže je
tak, jak byl napsán včetně případných chyb. Žádná část tohoto
článku nesmí být použita bez předchozího souhlasu autora.
Seznam mých dalších článků je v tomto přehledu.