• Nieuwe artikelen

  • Nieuw in Delphi 6: De componenten

    Marcel van Beuzekom


    Na de eerste blik op Delphi 6 wordt het nu tijd om de
    component palette eens wat beter te gaan bekijken. Welke nieuwe componenten
    hebben we er bij gekregen en waar zijn uitbreidingen in gemaakt?


    TValueListEditor


    De ValueListEditor is een grid waarin de gebruiker op een eenvoudige manier
    variabelen en hun waarden kan wijzigen of toevoegen. Vaak wordt data in een Na
    manier in stringlists opgeslagen, nu kan deze data ook worden gepresenteerd en
    gewijzigd. De kolommen heten standaard Key en Value, maar de
    titels kunnen ook worden aangepast of verwijderd. Ook kan worden ingesteld of de
    gebruiker alleen de waarde mag wijzigen, of ook de naam kolom. Via de
    (public) property ItemProps kan vervolgens worden ingesteld h??e de gebruiker de
    waarde mag wijzigen, bijvoorbeeld met een editmask, maar ook een lijstje met
    keuzemogelijkheden is mogelijk.


    TLabeledEdit


    De naam LabeledEdit zegt het eigenlijk al: een label en een edit in één.
    Van de label kan worden opgegeven waar deze, relatief aan de edit, moet komen
    staan. Verder maakt dit component dankbaar gebruik van de mogelijkheid om
    properties van een gekoppeld component te kunnen wijzigen: de properties van het
    label component hoeven niet opnieuw te worden gepublished, alleen het publishen
    van het component voldoet, de object inspector doet de rest.


    TColorBox


    Een populair component in de third party libraries, al was het alleen maar
    omdat het er zo leuk uitziet: een combobox om een kleur te selecteren. Nu dus
    ook standaard in Delphi.


    TActionManager


    Sinds Delphi 5 zijn Actions niet meer weg te denken uit een gestructureerde manier
    van programmeren. Eindelijk was er een centrale plaats om code achter een actie te plaatsen, onafhankelijk van het feit of deze actie nou door een
    menuitem, een popup menu of een button werd aangeroepen. Maar nadat we alle
    Actions hadden aangemaakt moesten ook nog eens alle menuitems en buttons worden
    aangemaakt en gekoppeld aan die Actions, dat was toch een beetje dubbel werk. De
    ActionManager maakt dat allemaal een stuk eenvoudiger. In de manager kunnen
    Actions worden gedefinieerd, of worden gekopieerd van de standaard actions die
    overigens sterk zijn uitgebreid.
    Vervolgens kunnen de actions, één voor één of een hele categorie tegelijk,
    naar een TActionToolbar en een TActionMenubar worden gesleept. Omdat de
    standaard actions ook nog eens automatisch de standaard dialogen aanroepen
    (Bestand openen, Zoeken enz.) is het maken van een basis user interface nu wel
    heel snel gedaan. Als je het nog flexibeler wilt maken dan gebruik je de CustomizeDlg
    waarmee je gebruiker zelf alle items nog eens een eigen plaats kan geven. Die
    instellingen kunnen dan vervolgens in een bestand of een stream worden
    opgeslagen.


    TComboBoxEx


    Een combobox met een uitbreiding aan de items. Bij een gewone combobox
    bestaan de items uit strings, bij de ComboBoxEx uit objecten waarbij onder
    andere kan worden ingesteld welke ImageIndex (uit een ImageList) moet worden
    gebruikt en hoever het item moet inspringen in de lijst.


    TXMLTransform, TXMLTransformProvider, TXMLTransformClient


    Deze componenten maken het werken met XML bestanden een stuk gemakkelijker.
    Het XMLTransform component kan worden gebruik om een XML bestand om te zetten
    naar een datapacket. Die datapacket kan dan vervolgens worden toegekend aan
    bijvoorbeeld de XMLData property van een ClientDataSet. Na wijziging kan dat ook
    weer andersom gebeuren zodat de data ook weer wordt opgeslagen.


    Het XMLTransformPovider component is vergelijkbaar met een DataSetProvider,
    alleen wordt de data nu van een XML bestand gelezen en daarin weer opgeslagen.
    De ClientDataSet hoeft alleen nog maar te worden gekoppeld en deze kan worden
    geopend om het bestand in de lezen. Met ApplyUpdates worden de wijzigingen
    vervolgens weer opgeslagen. Als je er dus voor zorgt dat je je user-interface
    altijd tegen een ClientDataSet programmeert kun je nu zonder wijzigingen ook met
    XML bestanden werken.


    Ook de XMLTransformClient maakt verbinding met de XMLTransformprovider, maar
    nu zonder dat er een datapacket aan te pas komt. Dit component zou je
    bijvoorbeeld kunnen gebruiken om een XML bestand direct naar je applicatie
    server te versturen.


    Voor alle vertalingen van het XML bestand naar de datapacket en terug wordt
    gebruik gemaakt van transformationfiles, de 'DDL'  van je XML bestand. Deze
    bestanden kun je aanmaken met de meegeleverde XMLMapper en vervolgens vul je de
    bestandsnaam in bij de betreffende properties.


    dbExpress


    De dbExpress componenten maken het mogelijk om op een eenvoudige manier,
    zonder onnodige overhead, contact te maken met een aantal databases. De
    databases die nu worden ondersteund zijn: DB2, Interbase, MySQL en Oracle, maar
    hier worden nog wel uitbreidingen op verwacht. dbExpress wordt binnenkort in een
    apart artikel op NLDelphi besproken.


    TIBClientDataSet, TBDEClientDataSet, TSQLClientDataSet


    Drie componenten die het werken met  ClientDataSets makkelijker maken. Deze
    componenten worden direct aan hun DBConnection gekoppeld, zonder dat daar een
    Provider voor nodig. is. Overigens zijn de mogelijkheden van deze ClientDataSets
    beperkter waardoor ze alleen voor eenvoudige database afhandeling gebruikt
    zullen worden.


    Internet


    De uitbreidingen waar Borland de meeste reclame over maakt: WebServices. Dan
    kan ik het niet in een paar zinnen samenvatten, dus ook WebServices
    worden binnenkort in een apart artikel besproken. 


    WebSnap, ook één van de nieuwe Internettermen in Delphi 6 krijgt
    de meeste kritiek van Delphi 6 gebruikers. WebSnap leunt zwaar op het gebruik van
    server side scripts en dat is toch even wat anders dan Delphi. Verder heeft
    WebSnap de uitspraak van David I weerlegt dat Delphi 6 pas wordt uitgebracht als
    het af is: de documentatie is nog lang niet volledig en ook WebSnap zelf is nog
    niet stabiel. WebSnap blijft dus even in de wacht staan tot de volgende Delphi
    release.


    TShellTreeView, TShellListView, TShellComboBox


    Verstopt op de Samples tab een set componenten om op een 32-bits manier een
    directorystructuur, een lijst van bestanden en een directory combobox te
    presenteren:


     


     


     


     


     


    Indy Clients & Servers


    De Indy components waren ook voor vorige Delphi versies al gratis te
    downloaden van de Indy
    site
    , de enige verandering is dus eigenlijk dat ze nu met Delphi zijn
    meegeleverd. Groot voordeel is natuurlijk dat de groep gebruikers opeens
    ontzettend is gegroeid en daarmee ook de kennis en ondersteuning van de
    componenten. Voor wie Indy niet kent: Indy is een verzameling componenten
    waarmee zo ongeveer ieder internet protocol kan worden aangesproken. Denk
    hierbij aan POP en SMTP voor mail, FTP voor het up- en downloaden van bestanden,
    NNTP voor nieuwsgroepen, HTTP enzovoort. Voor ieder protocol is zowel een
    server- als een client component beschikbaar, alles bij elkaar zijn dat ruim 40
    componenten!


    Conclusie


    In dit artikel heb je vooral de 'gewone' componenten gezien, de grootste
    uitbreidingen zul je in andere artikelen zien als ik verder inga op XML,
    dbExpress en WebServices. Van de gewone componenten is de ActionManager de meest
    opvallende, vooral omdat deze zich richt op een nog meer gestructureerde manier
    om een user-interface op te zetten. De overige componenten zijn zeker zinvol,
    maar niet spectaculair.