Hi Max!

        Thanks for eveything. Information was pretty useful. So I did
what you said. My field (TNKCryptField) basically is an auto
encryption/decryption field. That is, it expects data as string and
encrypts that string. That encrypted data (binary) is stored in the
table. Similarly, on fetching data, it will decrypt and display as
string.

        This is what I did...

1. Derived from TField. Overloaded the Create constructor with an
extra param 'Key: TObject'. This is the object thats responsible for
encrypting/decrypting data.

2. Overrode that Set/GetAsByteArray methods to implment
encryption/decryption before calling the SetData.

3. Added the Register method which has the following:

procedure Register;
begin
  RegisterFields([TNKCryptField]);
end;


        How do I get to make a field of type TNKCryptField?

regards,
NIRAV KAKU


> Not too difficult depending on exactly how much you want this integrated
> into the design time environment. Assuming Delphi 5+:
>
> Step 1. Derive from TField (for a new field type with no inherited
> behaviour) or from any existing field type (TStringField for example). Add
> what ever behaviour you deem sensible.
>
> Step 2. In a your design time registration code use the RegisterFields
> function to tell Delphi that the field is available for use.
>
> Step 3. Use the field type by choosing it as the field type in the Field
> Properties box in the New field dialog. This is available from the standard
> Delphi Fields Editor. Alternatively you can now exit existing fields to use
> the new type, and twiddle the DFM to match. Experts may choose global search
> and replace utilities to do this, and folks like us who spend too much time
> on tools write custom a Field Editor with data dictionary knowledge and a
> auto conversion button!
>
> And there you have it, you field is now being used.
>
> Possible complications:
>
> A. There is no UnregisterField, so once you have a design time package that
> registers fields it CANNOT be unloaded and reloaded without nasty exceptions
> because of dangling pointers. This omission means that if you start doing
> this stuff you need to build your design time packages at the command line,
> and you cannot use the automatic build mechanism at all. Not sure if D6
> fixes this. It certainly means that you spend a lot of time closing,
> compiling a package, an reloading Delphi when you are doing component
> development/design time interaction programming.
>
> B. If you are using Delphi 4 or older the Fields Editor does not provide
> access to registered fields types. You will then need to write your own
> Fields Editor replacement.
>
> C. If you want your field type to be the default type for a particular
> TFieldType then you need to create a derived version of the TTable
> descendant you want thus to work with and override the protected
> GetFieldClass method.
>
> That's most of what we have learned over the last 6 years in this area, so
> good luck, and have fun with tour new field types. By using these you can
> achieve massive code savings, create more centralised data dictionary
> mechanisms, and find subtle bugs in Delphi run time library (eg you can't
> have Internal Calc fields and Calculated field in the same dataset!).
>
> Cheers, Max.
>
>
> ---------------------------------------------------------------------------
>     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED]
> with body of "unsubscribe delphi"
> Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/
>



- From the Shreemat Bhägwat Gïta -
'Sarcasm is the lowest form of wit.'
---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"
Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/

Reply via email to