Bob Swart (aka Dr.Bob)
Delphi 6 WebSnap Custom Adapters

Eind 2001 deed ik een sessie over het bouwen (en gebruiken) van WebSnap Custom Adapters bij de Conference to the Point. Helaas was het ruime uur aan de korte kant om zowel "normale" WebSnap Adapters als de bouw van Custom Adapters goed uit te leggen, waardoor ik denk dat niet iedereen deze sessie evengoed heeft kunnen volgen. Ter verduidelijking heb ik toen een lang artikel geschreven over WebSnap Adapters dat in het april nummer van SDGN Magazine is verschenen.

Echter, in de tussentijd heb ik niet stilgezeten, en om een-en-ander nog eenvoudiger te maken (of dat in ieder geval te proberen) heb ik een kleine toepassing geschreven die in staat is om - op basis van de namen van de Adapter Fields en de Adapter zelf - de complete source code voor WebSnap Custom Adapters te genereren! Na lezing van bovenstaand artikel zal de gegenereerde source code hopelijk weinig verrassingen meer bevatten. En het scheelt een hoop werk, want een nieuwe WebSnap Custom Adapter met zo'n 10 Adapter Fields levert al snel rond de 1000 regels source code op (en die wil ik niet graag nog een keer met de hand intikken).

Hieronder staat de internet-versie van de WebSnap Custom Adapter Generator (er is ook een Win32 GUI versie). Gebruik is eenvoudig: vul de naam van de Adapter en de Adapter Fields in (zorg dat het "valid identifiers" zijn anders compileert de code niet), en druk op de Genereer knop om een nieuw bestand B42Adapt.pas te ontvangen.
De gegenereerde source code is compatible met Delphi 6-7 en Kylix 2-3 (en werkt ook met C++Builder 6 overigens).

Unit Naam:B42Adapt.pas
Adapter Naam:
Adapter FieldName #1:
Adapter FieldName #2:
Adapter FieldName #3:
Adapter FieldName #4:
Adapter FieldName #5:
Adapter FieldName #6:
Adapter FieldName #7:
Adapter FieldName #8:
Adapter FieldName #9:

Voor ieder Adapter Field wordt er al een automatische check gedaan, om te zien of er wel iets ingevuld is. Default zijn alle Adapter Fields dus verplicht (lees: moet de gebruiker daar straks iets invullen). Dit kun je aanpassen door het OnValidate event voor het specifieke Adapter Field in te vullen (de WebSnap Custom Adapter krijgt voor ieder Adapter Field een OnValidateXXX waarbij XXX de naam van het Adapter Field is). Door in deze event handler de Handled op True te zetten wordt de oorspronkelijke OnValidate niet langer aangeroepen. Ook is het mogelijk om hierbinnen zelf je eigen checks te doen (zoals het controleren van een postcode bij een NAW_Adapter).
Naast de automatische checks (die een exception opleveren - terug te vinden in de AdapterErrorList), zullen de Adapter Fields hun waarde automatisch behouden. Mocht dus de gebruiker een foute postcode invullen (of een leeg e-mail adres), dan zullen de overige Adapter Fields hun oude waarde houden (en niet leeg worden, zoals bij de LoginFormAdapter die bij een foute login alle velden leeg maakt).

Meer Informatie
Mocht iemand nog vragen, opmerkingen of suggesties hebben, dan hoor ik die het liefst via . Voor meer informatie verwijs ik daarnaast graag nog naar mijn Delphi Clinic over WebSnap.


This webpage © 1999-2006 by webmaster drs. Robert E. Swart (aka - www.drbob42.com). All Rights Reserved.