home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161b.iso / full / delphi / DELPHI16 / TECHINFO / DELPHI / TIS / TI2790.FX < prev    next >
Encoding:
Text File  |  1995-08-24  |  3.9 KB  |  122 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.   PRODUCT  :  Delphi                                 NUMBER  :  2790
  8.   VERSION  :  All
  9.        OS  :  Windows
  10.      DATE  :  July 14, 1995                            PAGE  :  1/2
  11.  
  12.     TITLE  :  Creating & Deleting TFields at run-time
  13.  
  14.  
  15.  
  16.  
  17. TField components (or more appropriately, descendants of the TField
  18. component of types corresponding to field types) can be created at design-
  19. time using the Fields Editor. The Fields Editor is invoked by double-
  20. clicking on the design icon for a TTable or TQuery component. But TField 
  21. descendants can also be created and deleted at run-time.
  22.  
  23. Descendants of the TField component (such as TStringField, TIntegerField, 
  24. etc.) are created by invoking the Create method for the type of TField 
  25. descendant appropriate to the field in the data set. That is, the Create 
  26. method for the TStringField descendant of TField would be called to create
  27. a TField descendant for a string-type field in the current data set. The 
  28. Create method requires one parameter, that of the owner of the TField 
  29. descendant, which is the containing TForm. After creating the TField 
  30. descendant component, a number of key properties need to be set in order
  31. to connect it with the field in the data set. These are:
  32.  
  33. FieldName: the name of the field in the table.
  34. Name:      a unique identifier for the TField descendant component.
  35. Index:     the TField descendant componentÆs position in the array of 
  36.            TFields (the Fields property of the TTable or TQuery with which
  37.            the TField will be associated).
  38. DataSet:   the TTable or TQuery with which the TField will be associated.
  39.  
  40. The code snippet below demonstrates creating a TStringField. The 
  41. containing TForm is called Form1 (referred to here with the Self 
  42. variable), the active data set is a TQuery named Query1, and the field for
  43. which the TStringField component is being created is a dBASE table field
  44. named CO_NAME. This new TField descendant will be the second TField in the
  45. Fields array property of Query1. Note that the data set with which the new
  46. TField descendant will be associated (in this case, Query1) must be closed
  47. prior to adding the TField and then reopened afterwards.
  48.  
  49. procedure TForm1.Button2Click(Sender: TObject);
  50. var
  51.   T: TStringField;
  52. begin
  53.   Query1.Close;
  54.   T := TStringField.Create(Self);
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.   PRODUCT  :  Delphi                                 NUMBER  :  2790
  69.   VERSION  :  All
  70.        OS  :  Windows
  71.      DATE  :  July 14, 1995                            PAGE  :  2/2
  72.  
  73.     TITLE  :  Creating & Deleting TFields at run-time
  74.  
  75.  
  76.  
  77.  
  78.   T.FieldName := 'CO_NAME';
  79.   T.Name := Query1.Name + T.FieldName;
  80.   T.Index := Query1.FieldCount;
  81.   T.DataSet := Query1;
  82.   Query1.FieldDefs.UpDate;
  83.   Query1.Open;
  84. end;
  85.  
  86. The example above example creates a new TStringField named Query1CO_NAME.
  87.  
  88. Deleting an existing TField descendant is merely a matter of invoking the 
  89. Free method for that component. In the example below, the TForm's Find-
  90. Component method is used to return a pointer to the TStringField component 
  91. named Query1CO_NAME. The return value for the FindComponent will either be
  92. of type TComponent if successful or nil if unsuccessful. This return value
  93. can be used to determine whether the component actually exists prior to 
  94. invoking its Free method.
  95.  
  96. procedure TForm1.Button1Click(Sender: TObject);
  97. var
  98.   TC: TComponent;
  99. begin
  100.   TC := FindComponent('Query1CO_NAME');
  101.   if not (TC = nil) then begin
  102.     Query1.Close;
  103.     TC.Free;
  104.     Query1.Open;
  105.   end;
  106. end;
  107.  
  108. As with creating a TField, if the data set associated with the TField 
  109. descendant is currently active, it must be closed or deactivated prior to 
  110. invoking this method.
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118. DISCLAIMER: You have the right to use this technical information
  119. subject to the terms of the No-Nonsense License Statement that
  120. you received with the Borland product to which this information
  121. pertains.
  122.