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

  1. { InternetExpress sample WebModule
  2.  
  3.   This site provides examples and information that help
  4.   browsers understand the makeup of InternetExpress.
  5.  
  6.   Each page component is a TINetXCenterProducer component.
  7.   This producer component was developed specifically for
  8.   this application.  The InetXCenterComponent.bpl package
  9.   must be installed to display the web module designer.
  10.  
  11.   Information about InternetExpress components is stored
  12.   in a local ClientDataSet generated file.   See
  13.   ComponentsInfoDS.FileName.  This file is edited with the
  14.   ComponentsInfoEditor sample application.
  15.  
  16.   You may see warning messages when viewing a Producer
  17.   component in the Web Page property editor.  For example,
  18.   'XMLBroker: XMLBrokerAllCustomers is not connected'.  This
  19.   indicates that the XMLBrokerAllCustomers.Connected property
  20.   is False.  This is not an indication of a problem.  In some
  21.   cases the design time appearance of a page will be different
  22.   when the component is connnected.  For example, if the page
  23.   contains a TFieldSelectList component that is populated using
  24.   data retrieved through the connection, the list will not be
  25.   populated unless connected = True.
  26.  
  27. }
  28.  
  29. unit InextXCenterModule;
  30.  
  31. interface
  32.  
  33. uses
  34.   Windows, Messages, SysUtils, Classes, HTTPApp, MidItems, Db, DBClient,
  35.   MConnect, XMLBrokr, CompProd, PagItems, MidProd, LinkFlds, SortFlds,
  36.   RowSetStatus, ShowXML, FieldAttr, ImgButtons, INetXCenterProd, CustLayout,
  37.   QueryComps, WebCombo, ReconcileProd, ReadFileClientDataSet;
  38.  
  39. type
  40.   TWebModule2 = class(TWebModule)
  41.     Home: TInetXCenterProducer;
  42.     XMLBrokerAllCustomers: TXMLBroker;
  43.     DCOMConnection1: TDCOMConnection;
  44.     CustomComponentGrid: TInetXCenterProducer;
  45.     DataForm1: TDataForm;
  46.     DataNavigator1: TDataNavigator;
  47.     DataGrid1: TDataGrid;
  48.     StatusColumn1: TStatusColumn;
  49.     LinkColumn1: TLinkColumn;
  50.     FirstButton1: TFirstButton;
  51.     PriorPageButton1: TPriorPageButton;
  52.     PriorButton1: TPriorButton;
  53.     NextButton1: TNextButton;
  54.     NextPageButton1: TNextPageButton;
  55.     LastButton1: TLastButton;
  56.     UndoButton1: TUndoButton;
  57.     PostButton1: TPostButton;
  58.     ApplyUpdatesButton1: TApplyUpdatesButton;
  59.     CustOrders: TInetXCenterProducer;
  60.     DataForm2: TDataForm;
  61.     FieldGroup1: TFieldGroup;
  62.     XMLBrokerCustOrders: TXMLBroker;
  63.     DataNavigator2: TDataNavigator;
  64.     OrderNo: TFieldText;
  65.     CustNo2: TFieldText;
  66.     ItemsTotal: TFieldText;
  67.     AmountPaid: TFieldText;
  68.     FieldStatus1: TFieldStatus;
  69.     SortCustNo: TSortTextColumn;
  70.     SortCompany: TSortTextColumn;
  71.     SortLastInvoiceDate: TSortTextColumn;
  72.     FieldGroup2: TFieldGroup;
  73.     RowSetStatus1: TRowSetStatus;
  74.     FieldGroup3: TFieldGroup;
  75.     RowSetStatus2: TRowSetStatus;
  76.     LayoutGroup2: TLayoutGroup;
  77.     FirstButton2: TFirstButton;
  78.     PriorPageButton2: TPriorPageButton;
  79.     PriorButton2: TPriorButton;
  80.     NextButton2: TNextButton;
  81.     NextPageButton2: TNextPageButton;
  82.     LastButton2: TLastButton;
  83.     InsertButton1: TInsertButton;
  84.     DeleteButton1: TDeleteButton;
  85.     UndoButton2: TUndoButton;
  86.     PostButton2: TPostButton;
  87.     ApplyUpdatesButton2: TApplyUpdatesButton;
  88.     ShowXMLButton1: TShowXMLButton;
  89.     LayoutGroup4: TLayoutGroup;
  90.     LayoutGroup1: TLayoutGroup;
  91.     ShowDeltaButton1: TShowDeltaButton;
  92.     CountriesRadioGroup: TInetXCenterProducer;
  93.     DataForm3: TDataForm;
  94.     FieldGroup4: TFieldGroup;
  95.     DataNavigator3: TDataNavigator;
  96.     XMLBrokerAllCountries: TXMLBroker;
  97.     Name: TFieldText;
  98.     Capital: TFieldText;
  99.     Area: TFieldText;
  100.     Population: TFieldText;
  101.     FieldStatus2: TFieldStatus;
  102.     ContinentRadioGroup: TFieldRadioGroup;
  103.     CountriesSelectOptions: TInetXCenterProducer;
  104.     DataForm4: TDataForm;
  105.     FieldGroup5: TFieldGroup;
  106.     FieldText1: TFieldText;
  107.     FieldText2: TFieldText;
  108.     FieldText3: TFieldText;
  109.     FieldText4: TFieldText;
  110.     FieldStatus3: TFieldStatus;
  111.     DataNavigator4: TDataNavigator;
  112.     FieldSelectOptions: TFieldSelectOptions;
  113.     FieldAttr: TInetXCenterProducer;
  114.     DataForm5: TDataForm;
  115.     DataNavigator5: TDataNavigator;
  116.     DataGrid2: TDataGrid;
  117.     SubmitFieldAttr: TQueryForm;
  118.     FirstButton3: TFirstButton;
  119.     PriorPageButton3: TPriorPageButton;
  120.     PriorButton3: TPriorButton;
  121.     NextButton3: TNextButton;
  122.     NextPageButton3: TNextPageButton;
  123.     LastButton3: TLastButton;
  124.     QueryFieldGroup3: TQueryFieldGroup;
  125.     QueryMinValue: TQueryText;
  126.     QueryMaxValue: TQueryText;
  127.     QueryDecimals: TQueryText;
  128.     QueryFixedDecimals: TQueryText;
  129.     PostButton3: TPostButton;
  130.     UndoButton3: TUndoButton;
  131.     QueryButtons1: TQueryButtons;
  132.     QueryCurrencySymbol: TQueryText;
  133.     ImgButtons: TInetXCenterProducer;
  134.     DataForm6: TDataForm;
  135.     FieldGroup6: TFieldGroup;
  136.     Name3: TFieldText;
  137.     Capital2: TFieldText;
  138.     Continent: TFieldText;
  139.     Area2: TFieldText;
  140.     Population2: TFieldText;
  141.     FieldStatus4: TFieldStatus;
  142.     ImgDataNavigator1: TImgDataNavigator;
  143.     ImgFirstButton1: TImgFirstButton;
  144.     ImgPriorPageButton1: TImgPriorPageButton;
  145.     ImgPriorButton1: TImgPriorButton;
  146.     ImgNextButton1: TImgNextButton;
  147.     ImgNextPageButton1: TImgNextPageButton;
  148.     ImgLastButton1: TImgLastButton;
  149.     ImgInsertButton1: TImgInsertButton;
  150.     ImgDeleteButton1: TImgDeleteButton;
  151.     ImgUndoButton1: TImgUndoButton;
  152.     ImgPostButton1: TImgPostButton;
  153.     ImgApplyUpdatesButton1: TImgApplyUpdatesButton;
  154.     ComponentsFilter: TInetXCenterProducer;
  155.     Examples: TInetXCenterProducer;
  156.     LayoutGroup3: TLayoutGroup;
  157.     TitleLayoutGroup1: TTitleLayoutGroup;
  158.     SelectOptionsPage: TInetXCenterProducer;
  159.     SelectOptionsQueryForm: TQueryForm;
  160.     QueryFieldGroup2: TQueryFieldGroup;
  161.     QuerySelectOptions: TQuerySelectOptions;
  162.     QueryButtons2: TQueryButtons;
  163.     SearchSelectOptionsPage: TInetXCenterProducer;
  164.     SearchSelectOptionsQueryForm: TQueryForm;
  165.     QueryFieldGroup1: TQueryFieldGroup;
  166.     QuerySearchSelectOptions: TQuerySearchSelectOptions;
  167.     QueryButtons3: TQueryButtons;
  168.     PromptButtonPage: TInetXCenterProducer;
  169.     QueryForm3: TQueryForm;
  170.     QueryButtons4: TQueryButtons;
  171.     PromptQueryButton1: TPromptQueryButton;
  172.     QueryPasswordPage: TInetXCenterProducer;
  173.     QueryForm1: TQueryForm;
  174.     QueryFieldGroup4: TQueryFieldGroup;
  175.     QueryPassword: TQueryPassword;
  176.     QueryButtons5: TQueryButtons;
  177.     DumpRequest: TInetXCenterProducer;
  178.     CustNamesDS: TClientDataSet;
  179.     QueryForm2: TQueryForm;
  180.     QueryRadioGroupPackageFilter: TQueryRadioGroup;
  181.     QueryRadioGroupUsageFilter: TQueryRadioGroup;
  182.     SubmitQueryButton1: TSubmitQueryButton;
  183.     QueryFieldGroup8: TQueryFieldGroup;
  184.     QueryFieldGroup9: TQueryFieldGroup;
  185.     QueryButtons9: TQueryButtons;
  186.     LayoutGroup5: TLayoutGroup;
  187.     LayoutGroup6: TLayoutGroup;
  188.     ComponentsList: TInetXCenterProducer;
  189.     CloseFilter: TSubmitValueButton;
  190.     CustOrdersQuery: TInetXCenterProducer;
  191.     QueryForm4: TQueryForm;
  192.     QueryFieldGroup5: TQueryFieldGroup;
  193.     QuerySelectOptions1: TQuerySelectOptions;
  194.     QueryButtons6: TQueryButtons;
  195.     TextColumnAttr: TTextColumnAttr;
  196.     AboutXML: TInetXCenterProducer;
  197.     AboutJavaScript: TInetXCenterProducer;
  198.     ReconcileError: TInetXCenterProducer;
  199.     QueryForm5: TQueryForm;
  200.     QueryFieldGroup6: TQueryFieldGroup;
  201.     QueryTextArea: TQueryTextArea;
  202.     QueryButtons7: TQueryButtons;
  203.     SubmitQueryButton2: TSubmitQueryButton;
  204.     QueryHiddenText: TQueryHiddenText;
  205.     ReconcilePage: TReconcilePageProducer;
  206.     CustOrdersMasterDetail: TInetXCenterProducer;
  207.     DataForm7: TDataForm;
  208.     FieldGroup7: TFieldGroup;
  209.     DataNavigator6: TDataNavigator;
  210.     DataGrid3: TDataGrid;
  211.     DataNavigator7: TDataNavigator;
  212.     ApplyUpdatesButton3: TApplyUpdatesButton;
  213.     ShowXMLButton3: TShowXMLButton;
  214.     ShowDeltaButton3: TShowDeltaButton;
  215.     LayoutGroup9: TLayoutGroup;
  216.     DataNavigator8: TDataNavigator;
  217.     LayoutGroup12: TLayoutGroup;
  218.     LayoutGroup7: TLayoutGroup;
  219.     LayoutGroup11: TLayoutGroup;
  220.     DataNavigator10: TDataNavigator;
  221.     DeleteButton4: TDeleteButton;
  222.     PostButton6: TPostButton;
  223.     FieldGroup9: TFieldGroup;
  224.     RowSetStatus4: TRowSetStatus;
  225.     LayoutGroup15: TLayoutGroup;
  226.     CustNo: TFieldText;
  227.     Company: TFieldText;
  228.     LastInvoiceDate: TFieldText;
  229.     XMLAllCustOrders: TXMLBroker;
  230.     OrderNo2: TTextColumn;
  231.     SaleDate: TTextColumn;
  232.     ShipDate: TTextColumn;
  233.     ItemsTotal2: TTextColumn;
  234.     AmountPaid2: TTextColumn;
  235.     StatusColumn2: TStatusColumn;
  236.     Addr1: TFieldText;
  237.     Addr2: TFieldText;
  238.     City: TFieldText;
  239.     State: TFieldText;
  240.     Zip: TFieldText;
  241.     Country: TFieldText;
  242.     Phone: TFieldText;
  243.     FAX: TFieldText;
  244.     Contact: TFieldText;
  245.     LayoutGroup16: TLayoutGroup;
  246.     LayoutGroup17: TLayoutGroup;
  247.     LayoutGroup18: TLayoutGroup;
  248.     LayoutGroup19: TLayoutGroup;
  249.     FirstButton4: TFirstButton;
  250.     PriorButton4: TPriorButton;
  251.     NextButton4: TNextButton;
  252.     LastButton4: TLastButton;
  253.     UndoButton4: TUndoButton;
  254.     PostButton4: TPostButton;
  255.     PriorButton5: TPriorButton;
  256.     NextButton5: TNextButton;
  257.     FieldGroup10: TFieldGroup;
  258.     RowSetStatus3: TRowSetStatus;
  259.     FieldStatus5: TFieldStatus;
  260.     ShowXMLButton2: TShowXMLButton;
  261.     ShowDeltaButton2: TShowDeltaButton;
  262.     AboutComponents: TInetXCenterProducer;
  263.     CustNo3: TFieldText;
  264.     RadioGroupPage: TInetXCenterProducer;
  265.     QueryFormRadioGroup: TQueryForm;
  266.     QueryFieldGroup7: TQueryFieldGroup;
  267.     QueryButtons8: TQueryButtons;
  268.     QueryRadioGroup: TQueryRadioGroup;
  269.     ComponentsInfoDS: TReadFileClientDataSet;
  270.     procedure XMLBrokerCustOrdersRequestRecords(Sender: TObject;
  271.       Request: TWebRequest; out RecCount: Integer;
  272.       var OwnerData: OleVariant; var Records: String);
  273.     procedure FieldAttrBeforeGetContent(Sender: TObject);
  274.     procedure SearchSelectOptionsPageBeforeGetContent(Sender: TObject);
  275.     procedure SelectOptionsPageBeforeGetContent(Sender: TObject);
  276.     procedure WebModule2Create(Sender: TObject);
  277.     procedure ComponentsFilterBeforeGetContent(Sender: TObject);
  278.     procedure WebModuleBeforeDispatch(Sender: TObject;
  279.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  280.     procedure WebModule2WebActionItem16Action(Sender: TObject;
  281.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  282.     procedure RadioGroupPageBeforeGetContent(Sender: TObject);
  283.   private
  284.     function CloseButton(Button: TSubmitValueButton;
  285.       Producer: TInetXCenterProducer): Boolean;
  286.     { Private declarations }
  287.   public
  288.     { Public declarations }
  289.     ComponentsInfoIntf: IComponentsInfo;
  290.   end;
  291.  
  292. var
  293.   WebModule2: TWebModule2;
  294.  
  295. implementation
  296.  
  297. {$R *.DFM}
  298.  
  299. procedure TWebModule2.XMLBrokerCustOrdersRequestRecords(Sender: TObject;
  300.   Request: TWebRequest; out RecCount: Integer; var OwnerData: OleVariant;
  301.   var Records: String);
  302. begin
  303.   // Assign Query to params
  304.   if XMLBrokerCustOrders.Params.Count = 0 then
  305.     XMLBrokerCustOrders.FetchParams;
  306.   XMLBrokerCustOrders.Params.AssignStrings(Request.ContentFields);
  307.   XMLBrokerCustOrders.Params.AssignStrings(Request.QueryFields);
  308. end;
  309.  
  310. procedure TWebModule2.FieldAttrBeforeGetContent(Sender: TObject);
  311.  
  312.   function IntValue(Value: string): Integer;
  313.   begin
  314.     try
  315.       Result := StrToInt(Value);
  316.     except
  317.       Result := -1;
  318.     end;
  319.   end;
  320.  
  321.   function BoolValue(Value: string): Boolean;
  322.   begin
  323.     try
  324.       Result := IntValue(Value) > 0;
  325.     except
  326.       Result := False;
  327.     end;
  328.   end;
  329.  
  330. begin
  331.  
  332.   TextColumnAttr.MinValue := '';
  333.   TextColumnAttr.MaxValue := '';
  334.   TextColumnAttr.CurrencySymbol := '';
  335.   TextColumnAttr.Decimals := -1;
  336.   TextColumnAttr.FixedDecimals := -1;
  337.   SubmitFieldAttr.AssignStrings(Request.QueryFields);
  338.   TextColumnAttr.MinValue := QueryMinValue.Text;
  339.   TextColumnAttr.MaxValue := QueryMaxValue.Text;
  340.   TextColumnAttr.CurrencySymbol := QueryCurrencySymbol.Text;
  341.   TextColumnAttr.Decimals := IntValue(QueryDecimals.Text);
  342.   TextColumnAttr.FixedDecimals := IntValue(QueryFixedDecimals.Text);
  343. end;
  344.  
  345. procedure TWebModule2.SelectOptionsPageBeforeGetContent(Sender: TObject);
  346. begin
  347.   // Initialize the values of all components on a query form from the URL
  348.   SelectOptionsQueryForm.AssignStrings(Request.QueryFields);
  349. end;
  350.  
  351. procedure TWebModule2.SearchSelectOptionsPageBeforeGetContent(
  352.   Sender: TObject);
  353. begin
  354.   // Initialize the values of all components on a query form from the URL
  355.   SearchSelectOptionsQueryForm.AssignStrings(Request.QueryFields);
  356. end;
  357.  
  358. procedure TWebModule2.WebModule2Create(Sender: TObject);
  359. begin
  360.   ComponentsInfoIntf := TComponentsInfo.Create(ComponentsInfoDS);
  361. end;
  362.  
  363. function TWebModule2.CloseButton(Button: TSubmitValueButton;
  364.   Producer: TInetXCenterProducer): Boolean;
  365. begin
  366.   Result := False;
  367.   if Request.QueryFields.Values[Button.ValueName] <> '' then
  368.   begin
  369.     Response.SendRedirect(Producer.HRef);
  370.     // Response.Content := Producer.HRef;
  371.     // Response.SendResponse;
  372.     Result := True;
  373.   end;
  374. end;
  375.  
  376. procedure TWebModule2.ComponentsFilterBeforeGetContent(Sender: TObject);
  377. var
  378.   PackageFilter: string;
  379.   UsageFilter: string;
  380.   I: Integer;
  381. begin
  382.   //if CloseButton(CloseFilter, ComponentsList) then Exit;
  383.  
  384.   UsageFilter := Request.QueryFields.Values['Usage'];
  385.   PackageFilter := Request.QueryFields.Values['Package'];
  386.   if (UsageFilter <> '') and  (PackageFilter = '') then
  387.     PackageFilter := QueryRadioGroupPackageFilter.Values[0]
  388.   else if (PackageFilter <> '') and (UsageFilter = '') then
  389.     UsageFilter := QueryRadioGroupUsageFilter.Values[0];
  390.   with QueryRadioGroupUsageFilter do
  391.   begin
  392.     I := Values.IndexOf(UsageFilter);
  393.     if I <> -1 then
  394.       Text := Items[I]
  395.     else
  396.       Text := '';
  397.   end;
  398.   with QueryRadioGroupPackageFilter do
  399.   begin
  400.     I := Values.IndexOf(PackageFilter);
  401.     if I <> -1 then
  402.       Text := Items[I]
  403.     else
  404.       Text := '';
  405.   end;
  406.  
  407.   ComponentsInfoIntf.SetFilter(PackageFilter, UsageFilter, 'All');
  408. end;
  409.  
  410. procedure TWebModule2.WebModuleBeforeDispatch(Sender: TObject;
  411.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  412. begin
  413.   ComponentsInfoIntf.ClearFilter;
  414. end;
  415.  
  416. procedure TWebModule2.WebModule2WebActionItem16Action(Sender: TObject;
  417.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  418. begin
  419.   if CloseButton(CloseFilter, ComponentsList) then Exit;
  420.   Response.Content := ComponentsFilter.Content;
  421. end;
  422.  
  423. procedure TWebModule2.RadioGroupPageBeforeGetContent(Sender: TObject);
  424. begin
  425.   // Initialize the values of all components on a query form from the URL
  426.   // To test try a this URL:
  427.   // .../inetxcentercgi.exe/RadioGroupPage?Value=Two
  428.   QueryFormRadioGroup.AssignStrings(Request.QueryFields);
  429. end;
  430.  
  431. end.
  432.