Tartalomjegyzék 13. fejezet A Delphi adatbázis-architektúrája Adatbázis-elérés: dbExpress, helyi adatok és egyéb lehetõségek . . . . . . . . . . 640 A dbExpress könyvtár . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 A Borland Database Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 Az InterBase Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 A MyBase és a ClientDataSet komponens . . . . . . . . . . . . . . . . . . . . . . . . 643 dbGo az ADO motorhoz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 Egyéni adatbázis-komponensek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 MyBase: önálló ClientDataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 Csatlakozás létezõ helyi táblához . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 A Midas DLL könyvtártól a MidasLib egységig . . . . . . . . . . . . . . . . . . . . 646 Az XML és a CDS formátum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 Új helyi tábla meghatározása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 Indexelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 Szûrés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 Rekordok keresése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 Az Undo és a SavePoint parancs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 A naplózás ki- és bekapcsolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 Az adatfelismerõ vezérlõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Táblában lévõ adatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 A DBNavigator és az adathalmazon végrehajtható mûveletek . . . . . . . . 654 Szöveg alapú adatfelismerõ vezérlõk . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 Lista alapú adatfelismerõ vezérlõk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 Keresõ vezérlõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 Grafikus adatfelismerõ vezérlõk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 A DataSet komponens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 Az adathalmaz állapota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 Az adathalmazok mezõi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
vi
Delphi 7 mesteri szinten
Mezõobjektumok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 A mezõosztályok hierarchiája . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 Számított mezõ felvétele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 Keresõ mezõk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676 Null értékek kezelése mezõeseményekkel . . . . . . . . . . . . . . . . . . . . . . . 678 Mozgás az adathalmazban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680 A tábla egy oszlopának összege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 Könyvjelzõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 A tábla egyik oszlopának módosítása . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 Az adatbázistábla testreszabása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 Rajzolás az adatrácsra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 Több rekord kijelölését lehetõvé tevõ tábla . . . . . . . . . . . . . . . . . . . . . . 688 Táblába húzás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 Szabványos vezérlõket használó adatbázis-kezelõ alkalmazások . . . . . . . . . . 691 A Delphi adatfelismerõ vezérlõinek utánzása . . . . . . . . . . . . . . . . . . . . . 691 Kérelmek küldése az adatbázisba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 Csoportosítás és összesítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 Csoportosítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 Összesítések meghatározása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 Mester–részlet típusú felépítések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 Mester–részlet típusú felépítés ClientDataSet komponensekkel . . . . . . . 700 Az adatbázis-hibák kezelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 14. fejezet dbExpress ügyfél–kiszolgáló rendszerek Ügyfél–kiszolgáló rendszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704 Az adatbázistervezés elemei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706 Egyedek és relációk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706 Az elsõdleges kulcsoktól az OID-kig . . . . . . . . . . . . . . . . . . . . . . . . . . . 707 További megszorítások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 Egyirányú kurzorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 Az InterBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 Az IBConsole használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 Kiszolgáló oldali programozás az InterBase-zel . . . . . . . . . . . . . . . . . . . 715 A dbExpress könyvtár . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 Munka egyirányú kurzorokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 Rendszerek és adatbázisok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 A meghajtók változatairól és a beágyazott egységekrõl . . . . . . . . . . . . . . 719 A dbExpress komponensek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 Az SQLConnection komponens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 A dbExpress adathalmaz-komponensei . . . . . . . . . . . . . . . . . . . . . . . . . 725 Az SQLMonitor komponens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 Néhány dbExpress bemutatóprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
Tartalomjegyzék Egy komponens – több komponens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 Az adatbázisok metaadatainak elérése a SetSchemaInfo segítségével . . . 733 Paraméteres lekérdezések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 Amikor egy irány is elég: adatok nyomtatása . . . . . . . . . . . . . . . . . . . . . 736 A csomagok és az átmeneti tár . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 Frissítések kezelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 Az adatok frissítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 Tranzakciók használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 Az InterBase Express használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749 Az IBX adathalmaz-komponensei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749 Az IBX felügyeleti komponensei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 IBX példaprogram készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751 Élõ lekérdezések készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 Az InterBase Express figyelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757 További rendszeradatok kiolvasása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 Programozás a gyakorlatban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 Generátorok és azonosítók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 Kis- és nagybetûket nem megkülönböztetõ keresés . . . . . . . . . . . . . . . . 761 Helyek és személyek kezelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 Felhasználói felület kiépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765 Feliratkozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 Keresési párbeszédablak készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772 Form tetszõleges lekérdezés megadására . . . . . . . . . . . . . . . . . . . . . . . . 774 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775 15. fejezet Az ADO használata Az MDAC (Microsoft Data Access Components) . . . . . . . . . . . . . . . . . . . . . . . 778 OLE DB szolgáltatók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779 A dbGo komponensek használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781 Egy gyakorlati példa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782 Az ADOConnection komponens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784 Adatcsatolási fájlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784 Dinamikus tulajdonságok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785 Sémaadatok kinyerése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786 A Jet adatbázismotor használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788 A Paradox és a Jet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 Az Excel és a Jet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790 A szövegfájlok és a Jet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 Import és export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793 Kurzorok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 CursorLocation (kurzorhelyzet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 CursorType (kurzortípus) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 Típusok automatikus felülbírálása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
vii
viii
Delphi 7 mesteri szinten
A rekordok számáról . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798 Ügyfélindexek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798 Klónozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800 Tranzakciók feldolgozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801 Beágyazott tranzakciók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 Az ADOConnection Attributes tulajdonsága . . . . . . . . . . . . . . . . . . . . . . 802 Zárolási típusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 Az adatok frissítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804 Kötegelt frissítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806 Optimista zárolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808 A frissítési ütközések feloldása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811 Leválasztott rekordhalmazok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812 Kapcsolatok közös kezelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 Maradandó rekordhalmazok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814 Az aktatáska modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816 Pár szó az ADO.NET-rõl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 16. fejezet Többrétegû DataSnap alkalmazások A három réteg – a Delphi történetének tükrében . . . . . . . . . . . . . . . . . . . . . . 820 A DataSnap technikai alapjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 Az IAppServer felület . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 Kapcsolati protokollok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 Adatcsomagok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 A Delphi ügyfél oldali komponensei . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 A Delphi kiszolgáló oldali komponensei . . . . . . . . . . . . . . . . . . . . . . . . 826 Egy egyszerû program elkészítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826 Az elsõ alkalmazás-kiszolgáló . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826 Az elsõ vékony ügyfél . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828 Megszorítások hozzáadása a kiszolgálóhoz . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 Mezõ- és táblamegszorítások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 Mezõtulajdonságok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832 Mezõ- és táblaesemények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832 Az ügyfél kiegészítése további szolgáltatásokkal . . . . . . . . . . . . . . . . . . . . . . . 833 A frissítési folyamat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834 Adatok frissítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 A DataSnap további lehetõségei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837 Paraméteres lekérdezések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837 Egyéni tagfüggvényhívások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838 Mester–részlet kapcsolatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839 A ConnectionBroker komponens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841 Az adatszolgáltató további lehetõségei . . . . . . . . . . . . . . . . . . . . . . . . . . 842
Tartalomjegyzék A SimpleObjectBroker komponens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 Objektumkölcsönzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 Adatcsomagok testreszabása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845 17. fejezet Adatbázis-komponensek készítése Az adatkapcsolat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847 A TDataLink osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848 Származtatott adatkapcsolati osztályok . . . . . . . . . . . . . . . . . . . . . . . . . . 849 Mezõközpontú adatfüggõ komponensek készítése . . . . . . . . . . . . . . . . . . . . . 849 Csak olvasható ProgressBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850 Írható-olvasható TrackBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853 Egyedi adatkapcsolatok készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857 Egy rekordnézegetõ komponens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857 A DBGrid komponens testreszabása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863 Egyedi adathalmazok készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867 Az osztályok meghatározása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868 I. szakasz: kezdeti beállítások, megnyitás és bezárás . . . . . . . . . . . . . . . 871 II. szakasz: mozgatás és könyvjelzõ-kezelés . . . . . . . . . . . . . . . . . . . . . . 876 III. szakasz: rekordtárak és mezõkezelés . . . . . . . . . . . . . . . . . . . . . . . . 880 IV. szakasz: a tárakból a mezõkbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884 A folyam alapú adathalmaz tesztelése . . . . . . . . . . . . . . . . . . . . . . . . . . . 886 Könyvtár az adathalmazban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887 Lista ábrázolása adathalmazként . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888 A könyvtár tartalmának megjelenítése . . . . . . . . . . . . . . . . . . . . . . . . . . . 889 Adathalmaz objektumokból . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897 18. fejezet Jelentések készítése a Rave segítségével A Rave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 A Rave: vizuális jelentéskészítõ környezet . . . . . . . . . . . . . . . . . . . . . . . 900 Az RvProject komponens használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903 Megjelenítési formátumok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905 Adatkapcsolatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906 A Rave Designer komponensei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908 Alapkomponensek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909 Adatelérésre használt objektumok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911 Területek és sávok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912 Adatfüggõ komponensek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914 Rave szolgáltatások haladóknak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917 Mester–részlet jelentések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917 Jelentéskészítés parancsfájlokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919
ix
x
Delphi 7 mesteri szinten
Tükrözés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920 További számítások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922 19. fejezet Internetprogramozás: a foglalatok és az Indy Foglalatok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924 A foglalatok programozásának alapjai . . . . . . . . . . . . . . . . . . . . . . . . . . 925 Az Indy TCP komponensek használata . . . . . . . . . . . . . . . . . . . . . . . . . . 927 Adatbázisok adatainak küldése foglalatokon át . . . . . . . . . . . . . . . . . . . 931 Levelezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935 Levelek küldése és fogadása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936 A HTTP protokoll használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938 HTTP tartalom letöltése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939 Saját böngészõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945 Egyszerû HTTP kiszolgáló . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946 HTML elõállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948 A Delphi HTML-készítõ komponensei . . . . . . . . . . . . . . . . . . . . . . . . . . 948 HTML oldalak készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949 Adatokat tartalmazó oldalak készítése . . . . . . . . . . . . . . . . . . . . . . . . . . 951 HTML táblázatok készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952 Stíluslapok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954 Dinamikus oldalak egyedi kiszolgálóról . . . . . . . . . . . . . . . . . . . . . . . . . 955 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956 20. fejezet Webprogramozás a WebBroker és a WebSnap segítségével Dinamikus weboldalak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958 A CGI áttekintése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958 Dinamikus könyvtárak használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 A Delphi WebBroker megoldása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 Hibakeresés a Web App Debugger segítségével . . . . . . . . . . . . . . . . . . . 963 Többcélú webmodul készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966 Adatbázisok dinamikus elérése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968 Lekérdezések és ûrlapok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969 Az Apache használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973 Gyakorlati példák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975 Webes találatszámláló . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975 Keresés webes keresõmotorral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978 WebSnap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980 Több oldal kezelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983 Kiszolgáló oldali parancsfájlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985 Csatolók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988 Fájlok keresése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993 A WebSnap és az adatbázisok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993
Tartalomjegyzék A WebSnap adatmodul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994 A DataSetAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994 A formon lévõ adatok szerkesztése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 Mester–részlet kapcsolatok a WebSnap-ben . . . . . . . . . . . . . . . . . . . . . . 999 Munkamenetek, felhasználók és jogosultságok . . . . . . . . . . . . . . . . . . . . . . . 1001 Munkamenetek használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001 Bejelentkezés jelszóval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005 21. fejezet Webes programozás az IntraWeb segítségével Az IntraWeb bemutatása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 A webhelyektõl a webes alkalmazásokig . . . . . . . . . . . . . . . . . . . . . . . 1009 Az elsõ pillantás a színfalak mögé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012 Az IntraWeb szerkezeti felépítésének változatai . . . . . . . . . . . . . . . . . . 1014 IntraWeb alkalmazások létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015 Webes adatbázisokat kezelõ alkalmazások . . . . . . . . . . . . . . . . . . . . . . 1027 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036 22. fejezet XML megoldások használata Az XML ismertetése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038 Az alapvetõ XML nyelvtan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 A jólformált XML kód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1040 Az XML használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041 XML dokumentumok kezelése a Delphiben . . . . . . . . . . . . . . . . . . . . . 1043 Programozás a DOM segítségével . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044 XML dokumentum fa nézetben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045 Dokumentumok készítése a DOM segítségével . . . . . . . . . . . . . . . . . . 1048 XML adatcsatoló felületek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053 A SAX API használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058 XML-leképezés átalakítás útján . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062 Az XML és az Internet Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067 Az XMLBroker komponens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1068 JavaScript-támogatás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069 Mintaprogram készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070 Az XSLT használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075 Az XPath használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076 Az XSLT a gyakorlatban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077 Az XSLT és a WebSnap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078 Közvetlen XSL-átalakítás a DOM segítségével . . . . . . . . . . . . . . . . . . . . 1080 Nagy XML dokumentumok feldolgozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082 ClientDataSet komponensbõl XML dokumentumba . . . . . . . . . . . . . . . 1082 XML dokumentumból ClientDataSet komponensbe . . . . . . . . . . . . . . . 1084 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086
xi
xii
Delphi 7 mesteri szinten 23. fejezet A webszolgáltatások és a SOAP protokoll Webszolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088 A SOAP és a WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088 A BabelFish Translations fordító szolgáltatás . . . . . . . . . . . . . . . . . . . . . 1089 Webszolgáltatások készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092 Valutaváltó webszolgáltatás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093 Adatbázisban lévõ adatok lekérése . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1097 A SOAP fejlécek hibakeresése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1101 Már meglévõ osztály bejegyzése webszolgáltatásként . . . . . . . . . . . . . . 1103 DataSnap SOAP protokollal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103 A DataSnap SOAP kiszolgáló elkészítése . . . . . . . . . . . . . . . . . . . . . . . . 1104 A DataSnap SOAP ügyfél elkészítése . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106 A SOAP és a többi DataSnap kapcsolat összehasonlítása . . . . . . . . . . . 1106 A mellékletek kezelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 Az UDDI támogatása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1109 Mi az az UDDI? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110 Az UDDI a Delphi 7-ben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114 24. fejezet A Microsoft .NET a Delphi szemszögébõl nézve A Delphi for .NET Preview telepítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116 A telepített program ellenõrzése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118 {$APPTYPE CONSOLE} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118 A Microsoft .NET felülete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1120 A közös nyelvû infrastruktúra (CLI) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1120 A közös nyelvû futásidejû környezet (CLR) . . . . . . . . . . . . . . . . . . . . . . 1122 Szerelvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124 A közvetítõnyelv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125 Felügyelt és biztonságos kód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127 A közös típusrendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128 Szemétgyûjtés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131 Szemétgyûjtés és hatékonyság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136 Telepítés és változatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140 25. fejezet Delphi for .NET Preview: a nyelv és a futásidejû könyvtár Elavult nyelvi szolgáltatások a Delphiben . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142 Elavult típusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142 Karakterláncok és egyéb típusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142 Elavult szolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143 A Delphi új nyelvi szolgáltatásai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144 Egység-névterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144
Tartalomjegyzék Bõvített azonosítók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147 A final és a sealed kulcsszavak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147 A láthatóság és hozzáférés új szintjei . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148 Statikus osztálytagok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148 Beágyazott típusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149 Több típussal rendelkezõ események . . . . . . . . . . . . . . . . . . . . . . . . . . 1149 Egyedi tulajdonságok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151 Osztálysegítõk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152 A futásidejû könyvtár és a VCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153 Osztálysegítõk a futásidejû könyvtárhoz . . . . . . . . . . . . . . . . . . . . . . . . 1153 A VCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154 Betekintés a VCL.NET forráskódjába . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155 További VCL mintaprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157 Microsoft könyvtárak használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158 Az ASP.NET és a Delphi nyelv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1165 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1168 A. függelék További Delphi-eszközök a szerzõtõl A CanTools varázslók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169 VclToClx átalakítóprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171 Object Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172 Memory Snap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173 Engedélyek és hozzájárulások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174 B. függelék További Delphi-eszközök más forrásokból Elõre telepített nyílt forráskódú Delphi-komponensek . . . . . . . . . . . . . . . . . 1175 További nyílt forráskódú projektek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175 Project JEDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176 GExperts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176 A Delphree webhely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177 DUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177 C. függelék További ingyenes könyvek a Delphirõl Essential Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179 Essential Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180 Delphi Power Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180 Köszönetnyilvánítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181 Tárgymutató . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1183
xiii