Dnešní jubilejní díl bude trochu netradiční: poprvé (a nadlouho naposledy) se totiž nebude příliš věnovat programování. Než se nad tou zdánlivou opovážlivostí znechuceně pohoršíte, dovolte mi podotknout, že i tak reaguje na vaše přání. Vstupte a spatříte kromě jiného obsah dosavadních dílů seriálu i s hypertextovými odkazy.
Stručný pohled do minulosti našeho seriálu
První díl seriálu se na Živě objevil přesně 19.3.2001 (je to tedy prakticky přesně jeden rok). Dnes vás vítám u padesátého dílu. Protože padesátka se neslaví každý den, dovolte mi, abych stručně shrnul, co všechno bylo v seriálu až do dneška k vidění. Reaguji tím také na vaše četné e-maily, ve kterých vyjadřujete přání mít seriál k dispozici kompletní, všechny díly pěkně pohromadě. Toto přání vám, pravda, splnit nemohu, nicméně pokusím se alespoň trochu vykročit správným směrem:)
Je samozřejmé, že v padesátidílném seriálu se již poměrně těžko vyhledává. Pokud čas od času využijete tento seriálu jako jakousi referenci, asi jste již nejednou vypustili několik ostřejších výrazů v marné snaze najít hledané. Pokud totiž například potřebujete najít popis tisku v Delphi a nevíte, ve kterých dílech se přesně objevil, můžete strávit realitně dlouhou dobu neefektivním procházením vybraných dílů.
V přehledu uvedeném níže proto najdete obsah všech dosud publikovaných dílů seriálu. Přehled je hypertextový, to znamená, že pokud budete hledat zmíněný tisk, snadno do přehledu nahlédnete a jedním klepnutím se přenesete na odpovídající stránku. Věřím, že toto vylepšení uvítáte a že pro vás tento padesátý díl bude zároveň jakýmsi portálem našeho seriálu.
Nejprve trochu statistiky, pak poděkování
Ještě předtím ale připomenu několik zajímavých statistických údajů. Padesát zveřejněných dílů obsahuje celkem skoro 800 kB čistého textu, průměrný díl je tedy dlouhý zhruba 16 kB textu. Pokud bychom vycházeli z toho, že průměrná (mnou psaná:)) stránka A4 bez obrázků, která je psaná v MS Wordu písmem Times New Roman o velikosti 12 bodů, obsahuje zhruba 2 kB čistého textu (jde o přibližný, empiricky ověřený údaj), snadno spočítáme, že jste si dosud mohli přečíst přibližně 400 stránek čistého A4 textu. V jednotlivých dílech se ovšem celkem objevilo skoro 190 obrázků. Řekněme, že na jednu stránku A4 se vejdou 3-4 průměrné obrázky. Pak je zřejmé, že
náš seriál dosud zabral přibližně 450 průměrných stránek A4. V průběhu seriálu jsme společně vytvořili skoro 40 ukázkových aplikací, přičemž vytvoření každé z nich jsme si popsali krok za krokem. Myslím, že tyto údaje z našeho seriálu činí jeden z ojedinělých projektů na českém internetu.
A za to bych vám, milí čtenáři, velmi rád upřímně poděkoval. Bez vašeho zájmu a bez vaší podpory by nepochybně tento projekt skončil tak jako řada jiných – v tichosti, po několika prvních dílech. Budu rád, pokud budete svůj zájem projevovat i nadále; budu se i nadále těšit na vaše náměty a připomínky. V závěru tohoto dílu najdete stručný výhled do budoucnosti, tedy přehled témat, která se v seriálu v nejbližší době objeví. I k tomuto přehledu vítám veškeré vaše komentáře.
Hypertextový obsah jednotlivých dílů
Nyní již se pojďme podívat na to, co dosud obsahovaly jednotlivé díly seriálu. Klepnutím na nadpis dílu si můžete snadno příslušný díl otevřít.
Díl 1: -
Úvodní informace
Popis nástroje Delphi
Srovnání dostupných verzí a edicí Delphi
Díl 2: Ahoj, světe!
První aplikace
Základní pojmy (komponenta, vlastnost, událost)
Překlad a spuštění projektu
Díl 3: Přehled podstatných komponent
Palety komponent
Důležité komponenty z palety Standard i z ostatních palet
Vytvoření stavového řádku.
Díl 4: Vlastnosti komponent
- Co jsou vlastnosti
- Návrhové a run-time vlastnosti
- Popis nejdůležitějších vlastností společných většině komponent
Díl 5: Události, překlad, hledání chyb
Co jsou události
Popis nejdůležitějších událostí s důrazem na události formuláře
Jak pracovat s událostmi
Možnosti integrovaného debuggeru Delphi
Hledání chyb v kódu.
Díl 6: Struktura programu, VCL, standardní boxy
- Struktura programu a projektu v Delphi
- Správa většího projektu
- Hierarchie tříd, knihovna VCL
- Standardní boxy (ShowMessage, MessageDlg, MessageDlgPos)
Díl 7: Zadávání informací, uživatelský vstup
- Funkce a komponenty pro komunikaci s uživatelem: CheckBox, RadioButton, RadioGroup, InputBox, Edit, MaskEdit, Memo, ScrollBar, SpinEdit
Díl 8: Zadávání informací, vstupy, časovač
- Další komponenty pro komunikaci s uživatelem: ListBox, ComboBox, StringGrid, Timer, Gauge, ProgressBar
Díl 9: Uživatelská menu
- Popis vytváření hlavních nabídek
- Zásady tvorby menu
- Komponenty MainMenu a PopupMenu
- Nástroj MenuDesigner pro vytváření nabídek
Díl 10: Objektové koncepty
- Popis základních rysů, konceptů a pojmů objektově orientované architektury: třída, objekt, konstruktor, destruktor, zapouzdření, polymorfismus, dědičnost, autorizovaný přístup k datům
Díl 11: Běhové chyby a mechanismus výjimek
- Popis mechanismu výjimek v Delphi
- Ošetřování chyb bez použití výjimek a s ním
Díl 11_2: Práce se soubory
- Souborová podpora v Object Pascalu
- Rozšířená souborová podpora Delphi
- Chyby (a chybové kódy) při práci se soubory
Díl 12: Standardní dialogy
Několik komponent pro práci se soubory
Filozofie standardních dialogů, jejich přehled a popis: OpenDialog, SaveDialog, OpenPictureDialog, SavePictureDialog, FontDialog, ColorDialog, PrintDialog, PrinterSetupDialog, FindDialog, ReplaceDialog
Díl 13: Textový editor
- Komponenta RichEdit
- Vlastnosti textu (třída TTextAttributes)
- Vlastnosti odstavce (třída TParagraph)
- Implementace vyhledávání v textu
- Vytvoření jednoduchého textového editoru
Díl 14: Podrobněji o formulářích a oknech
- Rozdíl mezi formulářem a oknem
- Okna z hlediska uživatele a operačních systému
- Typy oken
- MDI, SDI architektura
- Vytvoření MDI aplikace
- Automatické a ruční vytváření formulářů (oken)
- Vytvoření konzolové aplikace
Díl 15: Pouťáky
- Důvody pro používání pouťových efektů
- Popis komponent pro vylepšení vzhledu aplikace: Bevel, BitBtn, SpeedButton, ImageList, ToolBar, PageControl
Díl 16: Grafika v Delphi
- Práce s myší (podrobný popis příslušných událostí)
- Popis filozofie kreslení v Delphi
- Plátno (Canvas, třída TCanvas)
- Vlastnosti plátna, štětec, pero
- Metody pro vykreslování geometrických obrazců
- Problém s kreslením ve Windows – překreslování, jeho řešení ručně a použitím komponenty Image.
- Vytvoření jednoduchého grafického prográmku
Díl 17: Databáze v Delphi
- Vytváření databází a databázové nástroje Delphi: databázové rozhraní Borland Databáze Engine, klientský program Databáze Desktop
- Komponenty Data Access, DataSource
- Podrobně komponenta Table, Query
Díl 18: Databáze v Delphi, pokračování
- Komponenty DataControls
- Podrobně komponenta DBGrid, DBNavigator, DBCheckBox
- Kompletní příklad vytvoření databázové aplikace (včetně vytvoření databáze)
Díl 19: Multimédia v Delphi
- Práce s multimédii – podrobný popis komponenty MediaPlayer
- Vytvoření velmi jednoduchých přehrávačů CD a hudebních či video souborů
Díl 20: Tisk v Delphi
- Popis filozofie tisku v Delphi a ve Windows
- Tisk formuláře
- Složitější tiskové operace, třída TPrinter
Díl 21: Tisk v Delphi, pokračování
- Tisk textu
- Problém rozdílné velikosti objektů na monitoru a na tiskárně, jeho řešení
Díl 22: Tvorba výstupních sestav
- Co jsou výstupní sestavy z databází
- Základní komponenta pro tvorbu výstupních sestav: QuickRep, její podrobný popis
- Další důležité komponenty: QRBand, QRLabel, QRDBText, QRExpr
Díl 23: Tvorba výstupních sestav prakticky
- Tři možnosti při vytváření sestavy: použití průvodce, použití šablony, kompletní ruční vytvoření
- Vytvoření sestavy pomocí průvodce
- Vytvoření sestavy za použití šablony
- Ruční vytvoření sestavy
- Modifikace tisknutých dat
- Shrnutí obecného postupu při vytváření výstupních sestav
Díl 24: Práce se soubory podrobněji, 1. část
- Soubory v Object Pascalu – teoretický úvod
- Základní operace prováděné s každým typem souboru
- Ošetřování chyb při práci se soubory a používání příslušných direktiv překladače
- Procedury a funkce použitelné pro soubory všech typů
Díl 25: Práce se soubory podrobněji, 2. část
- Implementace vyhledávání souborů (procedury FindFirst a FindNext)
- Práce s typovanými soubory (se soubory s udaným typem)
- Práce s netypovanými soubory (blokový přístup)
- Práce s textovými soubory
Díl 26: Programovat DLL knihovny může úplně každý – úvod
- Připomenutí architektury aplikace (obsah souboru *.EXE)
- Teoretický popis knihoven DLL
- Výhody a nevýhody dynamicky linkovaných knihoven
- Pro pokročilé: popis sdílení kódu v šestnáctibitových a ve dvaatřicetibitových Windows
- Vytvoření jednoduché DLL knihovny: úvod
Díl 27: Programovat DLL knihovny může úplně každý, dokončení
- Vytvoření jednoduché DLL knihovny: pokračování
- Vytvoření programu využívajícího funkce z DLL knihovny
- Vytvoření nové verze této aplikace bez modifikace jejího zdrojového kódu
- Lepší znovupoužitelnost knihoven DLL: modifikátor stdcall
- Načítání knihoven do paměti: implicitní a explicitní linkování, funkce LoadLibrary, LoadLibraryEx, FreeLibrary
- Kompatibilita DLL knihoven
- Smart-linking aneb dynamické linkování statických modulů
Díl 28: Využití schránky Windows, začínáme
- Využívání systémové schránky (clipboard) v okenních aplikacích
- Prohlížení obsahu schránky ve Win9x a Win2000
- Formáty (typy) dat ve schránce
- Základní metody Delphi pro práci se schránkou (CopyToClipboard, PasteFromClipboard, CutoClipboard)
- Obtížnější operace se schránkou: třída TClipboard
Díl 29: Využití schránky Windows, dokončení
- Vlastnosti a metody třídy TClipboard, metoda HasFormat a ukázková aplikace zjišťující aktuální formáty dat ve schránce
- Práce s obrázky a schránkou, ukázková aplikace
Díl 30: Aby se uživatel neopařil
- Používání klávesových zkratek
- Klávesové zkratky bez speciálních komponent – vlastnost ShortCut
- Komponenta HotKey
- Ukázková aplikace používající komponentu HotKey
Díl 31: Chcete efektivně prohlížet seznamy?
- Komponenta ListView, její vlastnosti a možnosti nastavení, její metody a události
- Ukázkové aplikace demonstrující různé možností této komponenty
Díl 32: Uživatel často zapomíná…
- Vytvoření kalendáře: komponenta Calendar, její vlastnosti a metody
Díl 33: Rutiny pro obsluhu systémového datumu a času
- Práce se systémovým časem v Delphi, základní datové typy
- Konverzní funkce pro převod údajů mezi jednotlivými datovými typy
- Metody pro získání a zpracování systémového datumu a času
- Proměnné z jednotky SysUtils, které souvisejí s datumem a časem
- Formátovací specifikátory pro metodu FormatDateTime
- Ukázková aplikace využívající komponentu Calendar
Díl 34: BPL: packages (balíky), 1. část
Filozofie dynamicky linkovaných balíků, jejich podobnost s dynamicky linkovanými knihovnami
Kdy používat dynamicky linkované balíky
Běhové balíky: popis, praktické používání
Přehled modulů ve standardních běhových balících Delphi
Návrhové balíky: popis, praktické používání
Díl 35: BPL: packages (balíky), dokončení
Soubory vytvořené při programování balíků
Vytváření vlastních, uživatelských balíků: praktický popis
Zdrojový kód jednoduchého modulu určeného pro experimentování s balíky
Díl 36: Datum a čas je nade vše: měsíční kalendář
- Atraktivní komponenta pro vytvoření kalendáře: MonthCalendar, její vlastnosti, události
Komponenta DateTimePicker - úvod
Díl 37: Datum a čas je nade vše: výběr data a času
- Vlastnosti, události, metody komponenty DateTimePicker
Ukázková aplikace používající komponenty MonthCalendar a DateTimePicker
Díl 38: Technologie OLE jasně a srozumitelně, 1. část
- Podrobný teoretický popis technologie OLE (Object Linking and Embedding, vkládání a propojování objektů)
Další, navazující technologie: COM, ActiveX, OLE Automation, Active Server Pages, Active Documents…
Další, podrobnější informace o technologii OLE
Rozdíl mezi propojováním a vkládáním
Díl 39: Technologie OLE jasně a srozumitelně, 2. část
Mechanismus Ole v Delphi: komponenta OLEContainer, její podrobný popis
Jenoduchá ukázková aplikace využívající technologii OLE
Vlastnosti a metody komponenty OLEContainer
Různé možnosti pro práci s OLE
Díl 40: Technologie OLE jasně a srozumitelně, dokončení
- Události komponenty OLEContainer
Jednoduchá ukázková aplikace: načítání a ukládání objektů
Spojování nabídek, vznikající problémy a jejich řešení
Panely nástrojů a technologie OLE
Rozsáhlejší ukázková aplikace demonstrující technologii OLE
Díl 41: Pracujeme s celou aplikací
- Podrobnější popis hierarchie tříd knihovny VCL
Třída TObject zapoudřující základní chování objektů VCL
Třída TComponent jako základní třída při vytváření nevizuálních komponent
Třída TApplication zapouzdřující projekt jako aplikaci systému Windows, objekt Application
Podrobný popis třídy TApplication, její vlastnosti a události
Díl 42: Třída TApplication, dokončení
- Metody třídy TApplication
Metoda Application.ProcessMessages – zpracování zpráv při déletrvajícím výpočtu
Metoda Application.MessageBox – zobrazování výpisových boxů
Komponenty vs. Objekty
Díl 43: Další možnosti komunikace s uživatelem
- Funkce InputBox pro získání jednořádkového údaje – varianta standardního boxu
Funkce InputQuery – další standardní box pro získání jednořádkového vstupu s možností zjistit způsob opuštění tohoto boxu
Funkce CreateMessageDialog – potřebujete-li opakovaně zobrazovat tentýž box
Komponenta MaskEdit – podrobný popis komponenty pro omezení formátu vstupu
Komponenta UpDown – šipky nahoru a dolů
Komponenta CheckListBox – seznam s možností zaškrtávat jednotlivé položky
Díl 44: Vytvořte si vlastní komponentu, 1. část
- Vytváření uživatelských komponent – teoretický základ
Popis komponent z hlediska jejich programátora
Rámcový postup při vytváření nové komponenty
Praktická ukázka vytvoření komponenty „seznam tiskáren“: postup krok za krokem
Inicializace vlastností komponenty, vznikající problémy a jejich řešení
Díl 45: Vytvořte si vlastní komponentu, 2. část
- Podrobný popis všech kroků realizovaných při tvorbě komponenty
Úvodní analýza a výběr vhodného předka pro komponentu, přehled vhodných bázových tříd, šablony komponent
Vytvoření komponenty: tvorba vlastností, vlastnosti přístupné v době návrhu, klíčové slovo property, vytváření vlastností jednoduchých typů, vytváření vlastností výčtových typů, vytváření vlastností typu množina
Díl 46: Vytvořte si vlastní komponentu, 3. část
- Vytváření vlastností typu objekt, vytváření vlastností typu pole
Součásti deklarace vlastností: direktiva Default, direktiva NoDefault, direktiva Stored, direktivy Index a Dispid
Čtení a zápis hodnot vlastností (přístupové metody read a write)
Inicializace hodnot vlastností: předefinování konstruktoru Create, předefinování metody Loaded, předefinování metody CreateWnd
Díl 47: Vytvořte si vlastní komponentu, dokončení
- Definice metod, zásady při vytváření metod, virtuální a abstraktní metody
Definice událostí, filozofie událostí (zprávy systému Windows), metody předání události, implementace událostí jako vlastností
- Používání událostí rodičovské třídy, předefinování standardních událostí, vytváření uživatelských událostí
- Testování vytvořené komponenty – dva možné způsoby, jejich výhody a nevýhody
- Vytvoření ukázkové komponenty: běžící text
- Instalace komponenty do balíku a do palety komponent
- Opravování chyb ve zdrojovém kódu komponenty
- Vytvoření ikony pro komponentu
Díl 48: Procházka po zajímavých vlastnostech
- Vlastnosti související s polohou komponenty na formuláři: Left, Top, Height, Width, Align, Anchors, Constraits
Kurzor myši: vlastnost Cursor
Formulář a jeho vlastnosti
Styl okraje formuláře, systémová tlačítka formuláře
Díl 49: Pohrajte si s formulářem
- Ikona formuláře, ikona celé aplikace – vytvoření a začlenění
Události formuláře
- Sekvence volaných událostí při vytváření, resp. rušení formuláře
- Metody formuláře
- Perlička na závěr: vytvoření formuláře eliptického tvaru (použití datových typů a funkcí Windows API: datový typ HRGN, funkce CreateEllipticRgn, funkce SetWindowRgn)
Díl 50: Hypertextová historie seriálu
Sentimentální pohled do historie tohoto seriálu :-)
Obsahy jednotlivých dílů seriálu
Hypertextové odkazy na jednotlivé díly
Tolik tedy k historii. Doufám, že uvedený přehled využijete a že pro vás bude užitečným pomocníkem při vyhledávání popisu některého tématu Delphi. Nyní se ale pojďme podívat na to, co nás čeká v blízké budoucnosti.
Dosud jsem byl poměrně obezřetný v prozrazování toho, co nás čeká. Tuto opatrnost si zachovám i pro dnešek, nicméně přesto své plány alespoň trochu poodhalím. Činím to především proto, abych vás vyprovokoval k připomínkám a komentářům. Pokud existuje některé téma, které byste rádi v seriálu našli, nebojte se mi jej sdělit.
Při popisu plánů pro nejbližší dobu nemůžeme začít nikde jinde než v příštím dílu. Protože předchozí dva díly byly zaměřené spíše „na klikání“ než na programování, a protože dnešní díl se netýkal vývoje prakticky vůbec, za týden bychom se měli věnovat něčemu typicky programátorskému. A to také učiníme. Otevřeme totiž problematiku paralelního programování, vláken a jejich synchronizace v Delphi a popíšeme si nejčastější problémy, které v této souvislosti obvykle nastávají.
Mezi další témata, kterých bych se rád dotkl, patří popis tříd pro práci s inicializačními soubory a s registry systému Windows, jistě se podíváme také na volací konvence v Delphi, popíšeme si další komponenty (např. TreeView, která se velmi často používá). Kromě toho bych rád jeden díl věnoval „Unixové“ verzi Delphi – projektu Kylix. V plánu je také komunikace s porty (či jiná „technická“ témata), přemýšlím o knihovně OpenGL. Rozhodně se podrobněji vrátíme k databázím, při té příležitosti si také popíšeme nové databázové (i jiné) možnosti Delphi 6. V žádném případě nezapomeneme na práci s internetem a sítěmi a zaměříme se i na aplikace klient/server.
To samozřejmě není vše, ale nemohu přece odhalit veškeré své plány:)) Vidíte, že námětů je dost a důležitých témat ještě více. Pokud nám všem vydrží dosavadní entuziasmus, nemusíme se o budoucnost našeho seriálu vůbec obávat.