Delphi 6 WebSnap Custom Adapters |
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).
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.