Obsah Úvod
15
Pro koho je tato kniha Obsah jednotlivých kapitol knihy Typografické konvence Použité ikony Kontakt na autora Poděkování
Kapitola 1: Co je Delphi Verze Delphi Co je tedy vlastně Delphi Vizuální programování Kam psát programový kód – událostmi řízené programování Uživatelské prostředí nástroje Delphi Překlad projektu
První program v Delphi – ahoj, světe! Volba komponent Nastavení vlastností komponent Nastavení reakcí na události Vlastní programování Uložit, přeložit, spustit První aplikace je hotová
Základní stavební prvky aplikací v Delphi – komponenty Vlastnosti komponent Události komponent
15 16 17 17 17 18
19 19 20 20 22 22 23
24 24 24 26 27 27 28
29 30 30
Jak programovat v Delphi? Jak jsou popsány programy v této knize
33 34
Kapitola 2: Formuláře a komponenty
37
Vložení nápisu (popisku) do aplikace Vypisování rozměrů okna Použití editačního pole Používání tlačítek a dialogu pro výběr barvy Víceřádkové textové údaje
39 40 40 40 41
8
DELPHI Hotová řešení
Programové připisování, vymazávání a označování řádků textu Přidávání a ubírání řádků textu v době návrhu Obnova smazaných řádků textu Použití zatrhávacích políček Zatrhávací pole se třemi stavy Přepínací tlačítko Použití skupiny přepínacích tlačítek Více údajů stejného typu – používáme seznam Seřazení seznamu podle abecedy Má-li být položka v seznamu stále vybraná Šetříme prostorem – rozbalovací seznam Programové rozbalení seznamu ComboBox Vytvoření a použití posuvné lišty Tlačítko s obrázkem Nastavování vlastností komponent v době návrhu a za běhu Nastavení jména a titulku komponenty Nastavení velikosti a polohy komponenty Nastavování dostupnosti a viditelnosti komponenty Barva a typ písma komponenty Vytvoření plovoucí nápovědy Nastavení kurzoru myši Detekce změn v obsahu komponenty Detekce klepnutí a poklepání myší Zákaz klávesové zkratky Alt+F4 Aktivace komponenty Aplikace s dvěma okny Okna, z nichž se lze přepínat do jiných oken (nemodální okna) Aplikace umožňující pracovat s více dokumenty zároveň Neobvyklé tvary formulářů Zákaz pohybu formuláře a zákaz tlačítka pro uzavření Zapnutí/vypnutí animování formuláře Kreslení mimo oblast formuláře Uvítací obrazovka (splash screen) Vylepšení komponenty Edit Aplikace ve stylu Windows XP Hypertextový odkaz jednou řádkou kódu
42 43 43 44 45 45 46 47 47 48 50 51 51 52 52 53 54 55 55 57 57 58 58 59 59 60 63 65 68 70 71 72 73 74 75 75
Obsah
Kapitola 3: Nabídky Lokální (pop-up) menu Aplikace obsahující uživatelskou nabídkou Aplikace obsahující kontextovou nabídku Uživatelsky vykreslované položky nabídek
Kapitola 4: Soubory a dialogy Dialogy pro práci se soubory Práce se soubory pomocí Handle Podpůrné nástroje pro práci se soubory Aplikace vyrábějící inverzní obrázky Práce s adresáři Test existence adresáře a vytvoření více adresářů zároveň Dočasné soubory Jméno aplikace a otevřeného souboru v titulku formuláře Seznam logických disků počítače a určení jejich typu Vysunutí a zasunutí CD mechaniky Vyhledávání souborů na disku Zjištění aplikace asociované s daným souborem Vytištění souboru
Kapitola 5: Klávesnice, myš Třída TMouse Práce s klávesnicí Zjištění tlačítka myši, kterým bylo klepnuto Zjištění, jaký přepínač byl držen při klepnutí myší Vypsání souřadnic, na nichž se kleplo myší Vypsání souřadnic vzhledem k celé obrazovce Zjištění pozice myši nacházející se mimo oblast aplikace Zjištění přítomnosti myši v systému, detekce kolečka myši Uzamčení kurzoru myši Prohlížení souborů – operace drag -and-drop Kódování klávesnicového vstupu Prohazování písmen v řetězci Zákaz nabídky Start
77 78 78 79 81
85 86 87 88 89 91 92 93 94 95 96 97 98 98
101 102 102 103 103 104 104 104 105 105 106 108 109 110
9
10
DELPHI Hotová řešení
Kapitola 6: Datum a čas Zjištění aktuálního systémového datumu Zjištění aktuálního systémového času Zjištění aktuálního systémového datumu a času Formátování údajů o datumu a čase Zobrazení informací o systémovém formátu datumu a času Potřebujete kalendář? Naprogramujte si jej! Elegantní řešení – měsíční kalendář Měření doby trvání výpočtu Zjištění letního/zimního času
Kapitola 7: Výjimky Aplikace ošetřující chyby pomocí výjimek Aplikace lépe ošetřující chyby pomocí výjimek Aplikace nejlépe ošetřující chyby pomocí výjimek Opětovné vyvolání výjimky Další způsob ošetřování chybových stavů Zaokrouhlení čísla na daný počet cifer
Kapitola 8: Grafika, kreslení, písmo Styly štětce a transparentní šrafování Načtení bitmapy ze souboru Grafický výpis textu Jednoduchý grafický editor Vypsání stínovaného textu Změna vybrané barvy bitmapy Převod bitmapy do formátu JPG Vytvoření plynulého přechodu mezi barvami Zobrazení animace Zobrazení geometrických obrazců
Kapitola 9: Schránka Windows Využití schránky při programování v Delphi Textový editor pracující se schránkou Zjištění, je-li právě ve schránce textový údaj Rozhodnutí, kam vložit údaj ze schránky Špion obsahu schránky
111 113 113 113 114 114 116 119 122 123
125 126 127 127 128 128 130
131 132 133 134 135 137 138 139 140 141 142
145 146 146 147 148 148
Obsah
Kapitola 10: Zprávy systému Windows Ošetření zprávy v Delphi Počítání obdržených zpráv Zasílání uživatelsky definovaných zpráv Detekce změny rozlišení obrazovky
Kapitola 11: Soubory INI, registry systému Windows Inicializační soubory Systémový registr Ukládání údajů o okně a editačním poli v souboru INI Ukládání údajů o okně a editačním poli v registru Windows Snadný přechod z *.ini souborů na registr Uložení položek ze seznamu ListBox do souboru INI Zobrazení obsahu souboru *.ini
Kapitola 12: Programování knihoven DLL Vytvoření prázdné DLL knihovny Naprogramování obsahu DLL knihovny Vytvoření programu používajícího funkce z DLL knihovny Nová verze aplikace bez zásahu do jejího zdrojového kódu Lepší znovuvyužitelnost DLL knihovny – stdcall Načítání knihoven do paměti Načítání ikon z knihoven DLL DLL knihovna jako úložiště ikon Načtení pojmenované ikony z knihovny DLL
Kapitola 13: Vytváření vlastních komponent Definice vlastností komponent Definice metod Naše první komponenta – seznam instalovaných tiskáren Definice vlastností nové komponenty Vytváření vlastností výčtových typů a typů množina Příklad na definici metod komponent Zpřístupnění zděděných událostí Vytvoření komponenty Běžící titulek Definice vlastních událostí – komponenta hypertextový odkaz
153 154 156 158 160
161 162 162 164 166 168 169 170
171 172 172 174 176 177 177 178 180 182
183 184 184 185 189 190 191 192 193 195
11
12
DELPHI Hotová řešení
Kapitola 14: Paralelní programování, vlákna Vlákna v Delphi – třída TThread Priorita vláken Paralelní vykreslování úseček Synchronizace vláken – čekání na vlákno Priority vláken Vícevláknová MDI aplikace
Kapitola 15: Technologie OLE (Object Linking and Embedding) OLE v Delphi – komponenta OleContainer Delphi 5 a novější: práce s OLE pomocí komponent První aplikace využívající OLE Práce s nabídkami a OLE Aktivace ve vlastním okně Zjištění klíčových slov, která objekt OLE podporuje Načítání a ukládání objektů OLE Naprogramujte si vlastní Word/Excel/Malování/... Programové ovládání aplikace Microsoft Word Programové ovládání aplikace Microsoft Excel Programové vkládání dat do Microsoft Wordu Programové vkládání dat do Microsoft Excelu
Kapitola 16: Technologie DDE (Dynamic Data Exchange) DDE v Delphi První DDE server První DDE klient Vyzkoušejte DDE komunikaci Posílání příkazů na server: vytváříme server Posílání příkazů na server – vytváříme klienta Nařizujeme serveru, co má dělat Špion: monitorování DDE komunikace DDE klientem je Microsoft Word
197 198 199 200 202 204 207
211 212 212 212 214 215 216 216 218 220 221 222 223
225 226 227 227 229 230 231 232 232 233
Obsah
Kapitola 17: Programování pro Internet: sockety Nezbytné informace o protokolech TCP/IP Co je to tedy Socket? Sockety v Delphi Delphi do verze 5: serverová aplikace Delphi do verze 5: klientská aplikace Delphi 6 a 7: serverová aplikace Delphi 6 a 7: klientská aplikace Vytvoření internetového prohlížeče
Kapitola 18: Databáze v Delphi Jak na databáze v Delphi Jaké databáze máme v Delphi k dispozici? Nedatabázový příklad: Delphi a datové moduly Návrh a vytvoření struktury databáze BDE: registrace databázového aliasu pomocí nástroje BDE Administrator BDE: registrace databázového aliasu programově BDE: vytvoření databáze v Database Desktop BDE: naplnění tabulek daty BDE: databázová aplikace v Delphi BDE: databázová aplikace vypisující více tabulek BDE: test existence BDE na počítači BDE: parametrické dotazy BDE: zobrazení obrázků z databáze BDE: přehled aliasů, tabulek a položek InterBase: instalace databázového serveru InterBase: tvorba databáze InterBase: vytvoření datových tabulek pomocí IBConsole InterBase: vkládání dat pomocí IBConsole InterBase: vkládání dat pomocí SQL skriptu InterBase: vkládání dat pomocí lepšího SQL skriptu InterBase: aplikace v Delphi InterBase: nelíbí se nám přihlašovací dialog InterBase: vylepšení aplikace – databázový dotaz InterBase: složitější databázové dotazy InterBase: vytvoření uložené procedury InterBase: aplikace pracující s uloženou procedurou
235 235 236 237 237 239 240 243 245
247 247 249 250 251 254 254 255 256 257 258 260 261 261 262 263 264 267 268 269 270 271 272 272 273 273 275
13
14
DELPHI Hotová řešení
Kapitola 19: Zkrášlujeme aplikaci pomocí grafů
277
První aplikace obsahující graf Změny vzhledu grafu Graf druhů souborů na disku Graf jako výstup z databáze Uložení grafu do souboru Uložení grafu do schránky Windows Programové nastavení titulku grafu
278 281 281 285 287 287 287
Kapitola 20: Tvorba nápovědy
289
Plovoucí nápověda – hint Vytváření hlavní nápovědy: „ručně“ a pomocí nástrojů Kroky při vytváření hlavní nápovědy Logické rozdělení nápovědy, určení témat Vytvoření vlastních textů nápovědy – *.RTF Vytvoření souboru projektu Kompilace nápovědy Včlenění nápovědy do aplikace v Delphi
Vytváření nápovědy prakticky Použití vytvořené nápovědy
289 290 290 290 291 291 292 292
292 294
Šest zákonů o programování
297
Na závěr
299
Seznam literatury
301
Rejsřík
303