Dnešní jubilejní díl bude opět trochu odlišný od tradičních, běžných částí seriálu. Obsahuje totiž podrobný obsah předešlých padesáti dílů i s odkazy na příslušné články na serveru Živě. Hledáte-li možnost, jak rychle a efektivně najít příslušné téma v tomto seriálu, je pro vás dnešní článek ideální volbou.
Stručný pohled do minulosti našeho seriálu
První díl tohoto seriálu se Živě vyšel dne 19. března 2001. Jinak řečeno – s články popisujícími jednotlivé aspekty Delphi se setkáváte (s dvěma oddechovými časy) již více než rok a půl.
Stejně jako u 50. dílu, i dnešní článek věnujeme hypertextovému obsahu předešlých částí seriálu. Je zřejmé, že stodílná sága není úplně šikovná na vyhledávání, zejména potřebujete-li se dočíst podrobnější informace o některém konkrétním tématu. Níže tedy naleznete nadpisy a podrobné obsahy dílů 51 – 99 (obsah částí 1 až 49 je uveden v dílu číslo 50).
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 stý díl bude zároveň jakýmsi portálem našeho seriálu.
Poděkování
Ještě než se vrhneme na samotný hypertextový obsah, dovolím si vám, milí čtenáři, poděkovat. Doufám, že vás tím nebudu nudit.
Předešlých padesát dílů obsahuje popis širokého spektra témat, přičemž zejména v poslední době je patrný určitý odklon od ryzího, ortodoxního popisu Delphi i k dalším zajímavým problémům, které s Delphi zdánlivě příliš nesouvisí (typicky některá databázová témata). Za to, že seriál stále vychází a nachází své čtenáře, vám všem patří dík, stejně jako za vaše četné maily, náměty, připomínky a dotazy. Vysoce si cením také toho, že má prosba o zpětnou vazbu uvedená v 93. části našla u vás silnou odezvu – dostal jsem slušné množství mailů s kritickým zhodnocením své práce.
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í se už vrhneme na hlavní náplň dnešního dílu. Klepnutím na nadpis článku si můžete snadno příslušný díl otevřít.
Díl 51 – vlákna a paralelní programování: úvod
Popis víceúlohového zpracování - multitaskingu
Kooperativní vs. preemptivní multitasking
Souvislost multitaskingu a vláken
Metoda Application.ProcessMessages
Událost Application.OnIdle
Co jsou vlákna, rozdíl mezi vlákny a procesy
Díl 52 – vlákna a paralelní programování: pokračování
Vytvoření první aplikace používající vlákna
Třída TThread, metoda Execute
Kdy používat vlákna, kdy se jich naopak vyvarovat
Problémy při vícevláknovém programování
Druhy paralelního zpracování (funkční, datový paralelismus a zřetězené zpracování)
Díl 53 – vlákna a paralelní programování: třída TThread
Podrobný popis základní třídy pro práci s vlákny
Vlastnosti třídy TThread
Metody třídy TThread
Události třídy TThread
Co se stane, nebudeme-li vlákna synchronizovat
Možnosti synchronizace vláken – čekání na vlákno, kritické sekce
Díl 54 – vlákna a paralelní programování: pokračování
Pokračování popisu kritických sekcí
Příklad na kritické sekce
Další možnosti synchronizace vláken: zamykání objektů, používání synchronizátoru Multi-Read/Exclusive-Write, mechanismus vzájemného vyloučení (MUTEX), semafory
Priorita vláken, třída priority
Díl 55 – vlákna a paralelní programování: vlákna a MDI
Pokračování popisu priorit vláken: nastavování priority
Ukázková aplikace demonstrující priority vláken
Vytvoření vícevláknové MDI aplikace (každé vlákno zpracovává jeden dokument)
Díl 56 – vlákna a paralelní programování: dokončení
Další informace o vláknech
Práce s vlákny bez třídy TThread (pomocí Windows API)
Lokální data vláken
Definice správnosti (vícevláknového) programu
Jak postupovat, nefunguje-li program správně – ladění vícevláknových aplikací
Díl 57 – vytváření nápovědy
Popis systému nápovědy
Plovoucí nápověda (tzv. hint)
Způsoby, jak vytvářet nápovědu: ručně a pomocí nástrojů
Kroky při tvorbě nápovědy
Praktická ukázka vytváření nápovědy
Integrace nápovědy do aplikace
Díl 58 – buďte cool
Popis komponenty CoolBar pro vytváření vzájemně nezávislých, posuvných skupin komponent
Spolupráce panelu CoolBar a komponentou ToolBar
Vlastnosti komponenty CoolBar
Díl 59 – buďte cool, dokončení
Klíčová vlastnosti komponenty CoolBar: Bands
Díl 60 – nebojte se DDE
Základní informace o mechanismu dynamické datové výměny (Dynamic Data Exchange, DDE)
Jakým způsobem používat v Delphi DDE
Princip fungování DDE (služba, téma, položka)
Vytvoření jednoduchého DDE serveru v Delphi
Vytvoření jednoduchého DDE klienta v Delphi
Vyzkoušení DDE komunikace
Díl 61 – nebojte se DDE, vytváříme server
Podrobný popis dvou základních komponent Delphi pro vytváření DDE serverů: DdeServerConv a DdeServerItem
Shrnutí – jak vytvořit DDE server
Díl 62 – nebojte se DDE, vytváříme klienty
Podrobný popis dvou základních kokmponent Delphi pro vytváření DDE klientů: DdeClientItem a DdeClientConv
Příklad práce s DDE: první část – vytvoření serveru
Díl 63 – nebojte se DDE, zbývající informace
Pokračování příkladu z části 62 – vytvoření klienta
Sledování a monitorování systémové DDE komunikace (aplikace DdeSpy)
Aplikace, jejímž DDE klientem je Microsoft Word
Díl 64 – Delphi a zprávy systému Windows
Základní vysvětlení pojmu „zprávy systému Windows“, funkce zpráv a jejich význam
Princip zpráv ve Windows: kde zprávy vznikají, kdo je zasílá, kam jdou a kdo je zpracovává
Popis implementace zpráv v systému Windows
Zprávy systému Windows a jejich vztah k Delphi
Jak v Delphi obsluhovat zprávy
Díl 65 – Delphi a zprávy systému Windows, 2. část
Rozdíl mezi rodičem (Parent) a majitelem (Owner) komponenty
Událost Application.OnMessage
Komponenta ApplicationEvents
Díl 66 – Delphi a zprávy systému Windows, uživatelské zprávy
Informační zprávy
Uživatelsky definované zprávy
Vytvoření uživatelské zprávy
Metody a funkce pro zasílání zpráv (SendMessage, PostMessage, Perform), rozdíly mezi jednotlivými funkcemi
Praktická ukázka použití zpráv pro komunikaci uvnitř aplikace (zasílání zpráv v rámci jedné aplikace)
Princip zasílání zpráv mezi různými aplikacemi
Díl 67 – novinky Delphi 7 a komponenty ValueListEditor
Popis novinek, vylepšení a změn v sedmé verzi Delphi, vylepšení třídy TStrings
Popis komponenty ValueListEditor pro zpracovávání údajů ve formátu Jmeno=Hodnota
Přání veselých Vánoc :-)
Díl 68 – práce se soubory *.INI
Důvody používání inicializačních souborů
Práce s inicializačními soubory v Delphi (třída TIniFile)
Praktická ukázka práce s TIniFile
Další třída pro práci s inicializačními soubory – TmemIniFile
Metody třídy TIniFile
Díl 69 – práce se systémovým registrem
Co je registr systému Windows
Jak jej můžeme používat ve svých aplikacích
Práce s registrem v Delphi – třída TRegistry
Ukázka aplikace využívající registry systému Windows
Díl 70 – práce se systémovým registrem, dokončení
Na co používat (a na co naopak ne) systémový registr
Podrobnější popis třídy TRegistry (vlastnosti, metody)
Jednoduchý přechod z inicializačních souborů na registr – třída TRegistryIniFile
Díl 71 – ikona ve stavové oblasti hlavního panelu (tray ikona)
Co je systémová oblast hlavního panelu (tray) a kde ji najít
K čemu tato oblast slouží
Úvod do vytvoření komponenty, která umožní skrýt aplikaci do této oblasti
Základní funkce pro práci s tray ikonou: Shell_NotifyIcon
Díl 72 – tray ikona, 2. část
Pokračování vývoje komponenty pro práci s tray ikonou
Rozhraní pro příjem zpráv z tray ikony
Vlastnosti naší nové komponenty TrayIkona
Popis funkce Windows API – ShowWindow
Díl 73 – tray ikona, dokončení tvorby
Dokončení vytváření komponenty TrayIkona
Definice událostí komponenty
Zbylé činnosti při programování ikony
Díl 74 – tray ikona, instalace a používání
Jak nainstalovat komponentu do palety komponent v Delphi
Vytvoření aplikace používající komponentu TrayIkona
Díl 75 – databáze v Delphi, obecný úvod
Úvod do problematiky databází a jejich vztahu k vývojovému prostředí Delphi
Architektura databází v Delphi (4 vrstvy – uživatelské rozhraní, datový zdroj, datová sada, připojení k serveru)
Jak podporuje integrované prostředí Delphi práci s databázemi
Používání datových modulů
Nástroj Object Tree View
Díl 76 – databáze v Delphi, navrhujeme databázi
Co je vlastně databáze (báze dat), k čemu slouží, kde se používá a jaké jsou na ni obvykle požadavky
Systém řízení báze dat, banka dat
Jazyk SQL (Stuctured Query Language) jako základní rozhraní mezi uživatelem-programátorem a databázovým serverem
Jak jsou data v databázích uspořádána, jak modelujeme data – Coddův relační model dat, soustava tabulek
Ukázka jednoduchých databázových dotazů
Návrh rozsáhlejších databází: klíče, primární klíče, cizí klíče
Relace (vztahy) mezi tabulkami: relace 1:1, 1:N, M:N
Jak vyřešit realizaci vazby M:N
Díl 77 - databáze v Delphi, jaké máme možnosti?
Dokončení textu z předchozího dílu: příklady dotazů nad více tabulkami
Kam zapisovat SQL dotazy?
Jaké jsou možnosti práce s databázemi v Delphi (BDE, ADO, dbExpress, InterBase)
Co je nutné instalovat při vývoji (a šíření a používání) databázových aplikací?
Díl 78 – databázová aplikace v BDE
Kroky nutné k vytvoření databázové aplikace pracující pomocí rozhraní Borland Database Engine (BDE)
Registrace databázového BDE aliasu
Vytvoření databáze v klientském programu Database Desktop
Naplnění tabulek daty v klientském programu Database Desktop
Návrh databázové aplikace v Delphi
Rozšiřování a vylepšování aplikace
Parametrické dotazy
Díl 79 – databázová aplikace Master/Detail
Formuláře 1:N a jejich vztah k databázím
Vytvoření BDE aplikace Master/Detail pomocí průvodce Delphi
Jak funguje aplikace Master/Detail?
Díl 80 – pod povrch formulářů Master/Detail
Podrobný popis principu fungování aplikací Master/Detail
Popis komponenty DBEdit
Datové sady a datové zdroje ve vztahu k formulářům Master/Detail
Problematika identifikátorů v databázích
Díl 81 – zajímavé databázové komponenty
Komponenty pracující s databázemi BDE: Database, Session, BatchMove, UpdateSQL
Další databázové komponenty pro práci s každou databází – mřížka DBGrid, DBText, DBEdit, DBMemo, DBRichEdit, DBListBox, DBComboBox, DBRadioGroup, DBCheckBox apod.
Díl 82 – vylepšujeme aplikaci o grafy
Prezentace grafických výstupů aplikace ve formě grafů
Komponenta Chart pro vytváření grafů a jejich vkládání do aplikací
Umístění komponenty na formulář a správné nastavení
Konfigurace datových řad
Změny vzhledu grafu
Podrobnější popis grafů a datových řad
Ukázka jednoduché aplikace využívající graf
Díl 83 – databázová aplikace s grafy
Dokončení problematiky „běžných“ grafů z předchozího článku
Popis rekurzivních algoritmů
Vyhledávací algoritmus pro hledání souborů na disku
Graf jako výstup z databáze: komponenta DBChart
Díl 84 – tvorba instalačních balíků
Instalační balíky – používat je nebo nikoliv?
Jakým způsobem se postavit k vytváření instalačních balíků
Program InstallShield Express
Trocha teorie – co je obsahem instalačního balíku
Instalační balíky pro databázové aplikace
Instalace programu InstallShield Express
Práce s aplikací InstallShield Express
Díl 85 – tvorba instalačních balíků prakticky
Kroky potřebné pro vytvoření instalačního balíku pomocí aplikace InstallShield Express – začátek: nastavení, specifikace aplikačních dat, konfigurace cílového systému
Díl 86 – tvorba instalačních balíků, dokončení
Pokračování – kroky potřebné pro tvorbu instalačního balíku pomocí aplikace InstallShield Express: nastavení vzhledu instalace, definice požadavků a akcí instalace, příprava pro uvolnění
Díl 87 – jak zprovoznit BDE aplikaci na počítači, kde není BDE
Lze provozovat BDE aplikaci na počítači, kde není Delphi? Jak?
Díl 88 – co se souborem PDOXUSRS.NET?
K čemu slouží soubor PDOXUSRS.NET
K čemu slouží vlastnost PrivatDir
Ukázka práce s PrivateDir a NetFileDir
Komponenta Session a její použití v dané problematice, metody komponenty Session
Díl 89 – databáze Interbase: úvod a instalace
Úvodní informace k databázovým platformám InterBase a Firebird
Jak používat databázové platformy InterBase a Firebird
Instalace databázového serveru Interbase nebo Firebird
Vytváření databáze pomocí standardně dodávané klientské aplikace IBConsole
Díl 90 – databáze Interbase: vytváříme tabulky
Vytvoření rozsáhlejší databáze pro demonstraci různých databázových principů a pro ukázku platformy Interbase/Firebird
Návrh struktury databáze (návrh tabulek, jejich atributů a vzájemných vazeb)
Práce – vytvoření tabulek a struktury – s klientskou aplikací IBConsole
SQL skript pro definici tabulek a vzájemných vazeb
Díl 91 – první Interbase aplikace v Delphi
Ukázka vložení dat do databázových tabulek pomocí klientské aplikace IBConsole
Ukázka vložení dat do databázových tabulek pomocí SQL skriptu
Problematika generátorů
Vytvoření aplikace pracující s databází Interbase v Delphi
Vylepšení aplikace – databázový SQL dotaz
Díl 92 – komponenty Interbase a tvorba SQL dotazů
Obecné informace o databázových komponentách ze záložky Interbase
Popis komponenty IBTable
Popis komponenty IBQuery
Tvorba databázových SQL dotazů, jednodušší a složitější dotazy
Díl 93 – seznamte se: uložené procedury
Popis uložených procedur
Jazyky pro definici, jazyky pro manipulaci s daty, jazyky pro přístup k datům
Uložené procedury vracející data a uložené procedury nevracející žádná data
Použití uložených procedur
Výhody uložených procedur a jejich nedostatky
Dva základní druhy uložených procedur: spustitelné (executable) procedury a výběrové (select) procedury
Komponenty IBStoredProc pro práci se spustitelnými uloženými procedurami v Interbase
Díl 94 – vytváříme uložené procedury
Popis uložených procedur v BDE
Praktická ukázka vytvoření výběrové (select) uložené procedury
Díl 95 – spustitelné uložené procedury
Aplikace v Delphi pracující s uloženou procedurou
Zákaz zobrazování dialogu pro přihlášení k databázi v Delphi
Praktická ukázka vytvoření spustitelné (executable) uložené procedury
Díl 96 – databáze Interbase: komponenta IBDatabase
Popis komponenty IBDatabase
Vlastnosti komponenty IBDatabase
Vytvoření ukázkové aplikace – seznam databázových tabulek a jejich sloupců
Díl 97 – databáze Interbase a znakové sady
Problematika znakových sad se zaměřením na databáze Interbase
Znakové sady (Character Sets) a pořadí porovnávání (Collation Orders)
Díl 98 – konzistence databáze, integrita dat a transakce
Popis pojmu konzistence databáze, důvody nekonzistence, prostředky pro zajištění konzistence
Vztah konzistence a transakcí, popis transakcí
Stavy „v životě“ transakcí, přípustné přechody mezi stavy
Díl 99 – jak zajišťuje databázový systém konzistenci a integritu?
Pohled pod pokličku databázových systémů
Popis pojmu žurnál, způsoby jeho využití
Obsah žurnálu
Metody čtení žurnálu – dopředné (REDO) a zpětné (UNDO, ROLLBACK)
Metoda dvoufázového potvrzování
Metoda přímého zápisu do databáze
Strategie přímého zápisu do databáze v praxi
Díl 100: Hypertextová historie seriálu
Sentimentální pohled do historie tohoto seriálu :-)
Obsahy předchozích padesáti dílů seriálu
Hypertextové odkazy na jednotlivé díly
Kupředu, zpátky ni krok
Tolik tedy k historii. Věřím, že uvedený přehled shledáte přínosným a že pro vás bude užitečným pomocníkem při vyhledávání konkrétního tématu.
Avšak dost k minulosti. Zajímavější bude (alespoň doufejme) budoucnost, a proto se do ní pojďme pokusit nahlédnout.
V nejbližší době bych nejprve rád dokončil téma databázové platformy Interbase. Protože se mi však zdá, že databází bylo v poslední době již více než dost, plánuji poté učinit v této problematice krátkou přestávku. V ní se plánuji věnovat některým dalším, zajímavým tématům, například síťovým či internetovým (sockety a Indy). K databázím se později samozřejmě vrátíme, neboť se jedná bezesporu o téma s ohromnou využitelností (zvláště pak v dnešní době).
Na druhou stranu bych nerad, aby se seriál odklonil od svého původního záměru – totiž pomáhat začátečníkům a učit je i jednoduchá témata, která jsou pro ně možná zajímavější než pokročilé oblasti síťového programování. Proto se nebudu vyhýbat ani jednodušším oblastem – vylepšování uživatelského vzhledu aplikací, spolupráce s Windows a Office apod.
Věřím, že pokud jste dosud v seriálu nalézali inspiraci a rady ke své práci, bude totéž platit i v příští stovce článků. Načneme ji hned za týden.