home *** CD-ROM | disk | FTP | other *** search
/ Delphi Anthology / aDELPHI.iso / Runimage / Delphi50 / Demos / Midas / InternetExpress / InetXCustom / inetxcustomreg.pas < prev    next >
Pascal/Delphi Source File  |  1999-08-11  |  5KB  |  163 lines

  1. unit InetXCustomReg;
  2.  
  3. interface
  4.  
  5. procedure Register;
  6.  
  7. implementation
  8.  
  9. uses QueryComps, ShowXML, WebComp, ReconcileProd, LinkFlds, SortFlds,
  10.   Classes, ImgButtons, RowSetStatus, MidItems, WebCombo,
  11.   CustLayout, WCompReg, Dsgnintf, FieldAttr, MidProd;
  12.  
  13. type
  14.   TImgButtonsEditorHelper = class(TWebComponentsEditorHelper)
  15.   protected
  16.      function ImplCanAddClassHelper(AEditor: TComponent; AParent: TComponent; AClass: TClass): Boolean; override;
  17.   end;
  18.  
  19. type
  20.   TRowSetStatusEditorHelper = class(TWebComponentsEditorHelper)
  21.   protected
  22.      function ImplCanAddClassHelper(AEditor: TComponent; AParent: TComponent; AClass: TClass): Boolean; override;
  23.   end;
  24.  
  25. type
  26.   TRecCssClassProperty = class(TCssClassProperty)
  27.   protected
  28.     function FindProducer: TCustomMidasPageProducer; override;
  29.   end;
  30.  
  31. var
  32.   ImgButtonsEditorHelper: TImgButtonsEditorHelper;
  33.   RowSetStatusEditorHelper: TRowSetStatusEditorHelper;
  34.  
  35. { TImgButtonsEditorHelper }
  36.  
  37. function TImgButtonsEditorHelper.ImplCanAddClassHelper(AEditor: TComponent; AParent: TComponent;
  38.   AClass: TClass): Boolean;
  39. var
  40.   I: Integer;
  41.   List: IGetWebComponentList;
  42. begin
  43.   Result := False;
  44.   if AEditor.InheritsFrom(TImgDataNavigator) then
  45.   begin
  46.     Result := True;
  47.     AParent.GetInterface(IGetWebComponentList, List);
  48.     with (List.GetComponentList as TWebComponentList) do
  49.       // Don't allow duplicates
  50.       for I := 0 to Count - 1 do
  51.         if WebComponents[I].ClassType = AClass then
  52.         begin
  53.           Result := False;
  54.           break;
  55.         end
  56.   end
  57. end;
  58.  
  59. { TRowSetStatusEditorHelper }
  60.  
  61. function TRowSetStatusEditorHelper.ImplCanAddClassHelper(AEditor,
  62.   AParent: TComponent; AClass: TClass): Boolean;
  63. var
  64.   Component: TComponent;
  65.   Intf: IXMLDisplay;
  66. begin
  67.   // Can insert this under a component that defines a row set.
  68.   Component := AParent;
  69.   while Assigned(Component) and
  70.     (not Component.GetInterface(IXMLDisplay, Intf)) do
  71.     Component := Component.GetParentComponent;
  72.   Result := Assigned(Component);
  73. end;
  74.  
  75. function TRecCssClassProperty.FindProducer: TCustomMidasPageProducer;
  76. var
  77.   Component: TComponent;
  78. begin
  79.   if GetComponent(0) is TReconcileColumn then
  80.     Component := TReconcileColumn(GetComponent(0)).CaptionAttributes.Parent
  81.   else
  82.     Component := nil;
  83.   while Assigned(Component) and
  84.     not (Component is TCustomMidasPageProducer) do
  85.     Component := Component.GetParentComponent;
  86.   Result := TCustomMidasPageProducer(Component);
  87. end;
  88.  
  89. procedure Register;
  90. begin
  91.   RegisterComponents('InternetExpress', [  { do not localize }
  92.     TReconcilePageProducer
  93.   ]);
  94.   RegisterNonActiveX([TReconcilePageProducer], axrIncludeDescendants);
  95.  
  96.   RegisterWebComponents([
  97.     TPromptQueryButton, TSubmitValueButton, TQueryPassword,
  98.     TQueryHiddenText]);
  99.   RegisterWebComponents([
  100.     TShowXMLButton, TShowDeltaButton]);
  101.   RegisterWebComponents([
  102.     TFieldLink, TLinkColumn
  103.     ]);
  104.   RegisterWebComponents([
  105.     TSortTextColumn
  106.     ]);
  107.   RegisterWebComponents([
  108.     TImgDataNavigator
  109.     ]);
  110.   RegisterWebComponents([
  111.     TImgFirstButton, TImgPriorPageButton, TImgPriorButton, TImgNextButton,
  112.     TImgNextPageButton, TImgLastButton, TImgInsertButton, TImgDeleteButton,
  113.     TImgUndoButton, TImgPostButton,
  114.     TImgApplyUpdatesButton], ImgButtonsEditorHelper);
  115.   RegisterWebComponents([TRowSetStatus],
  116.      RowSetStatusEditorHelper);
  117.   RegisterWebComponents([TFieldTextAttr, TTextColumnAttr]);
  118.  
  119.   RegisterWebComponents([TQuerySearchSelectOptions]);
  120.   RegisterWebComponents([TTitleLayoutGroup, TTitleDataForm]);
  121.  
  122.   RegisterPropertyEditor(TypeInfo(string), TSearchSelectOptionsInput, 'ValuesField', TItemsFieldProperty);
  123.   RegisterPropertyEditor(TypeInfo(string), TSearchSelectOptionsInput, 'ItemsField', TItemsFieldProperty);
  124.   RegisterPropertyEditor(TypeInfo(string), TReconcileColumn, 'StyleRule', TRecCssClassProperty); { do not localize }
  125.   RegisterPropertyEditor(TypeInfo(string), TWebLink, 'KeyFieldName', TDataSetViewFieldProperty); { do not localize }
  126. end;
  127.  
  128. initialization
  129.   ImgButtonsEditorHelper := TImgButtonsEditorHelper.Create;
  130.   RowSetStatusEditorHelper := TRowSetStatusEditorHelper.Create;
  131. finalization
  132.   UnRegisterWebComponents([
  133.     TPromptQueryButton, TSubmitValueButton, TQueryPassword,
  134.     TQueryHiddenText]);
  135.   UnRegisterWebComponents([
  136.     TShowXMLButton, TShowDeltaButton]);
  137.   UnRegisterWebComponents([
  138.     TFieldLink, TLinkColumn
  139.     ]);
  140.   UnRegisterWebComponents([
  141.     TSortTextColumn
  142.     ]);
  143.   UnRegisterWebComponents([
  144.     TImgDataNavigator
  145.     ]);
  146.   UnRegisterWebComponents([
  147.     TImgFirstButton, TImgPriorPageButton, TImgPriorButton, TImgNextButton,
  148.     TImgNextPageButton, TImgLastButton, TImgInsertButton, TImgDeleteButton,
  149.     TImgUndoButton, TImgPostButton,
  150.     TImgApplyUpdatesButton]);
  151.   UnRegisterWebComponents([
  152.     TRowSetStatus]);
  153.   UnRegisterWebComponents([
  154.     TQuerySearchSelectOptions]);
  155.   UnRegisterWebComponents([
  156.     TTitleLayoutGroup, TTitleDataForm]);
  157.   UnRegisterWebComponents([
  158.     TTextColumnAttr, TFieldTextAttr]);
  159.   ImgButtonsEditorHelper.Free;
  160.   RowSetStatusEditorHelper.Free;
  161.  
  162. end.
  163.