unit fPtQuery; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls,ORNet, ORFn,ComCtrls,Trpcb, ORCtrls, uLogic, ImgList ; type TfrmPtQuery = class(TForm) sbContainer: TScrollBox; lblField: TLabel; lblOperator: TLabel; lblValue: TLabel; pnlBottom: TPanel; lblFile: TLabel; edtSearchString: TEdit; pnlTop: TPanel; lblSearchForEntryInFile: TLabel; lblFileName: TLabel; btnCancel: TBitBtn; btnLaunchSearch: TBitBtn; imgSearch: TImage; GlyphImageList: TImageList; TabControl: TTabControl; lblAdvancedMode: TLabel; procedure FormShow(Sender: TObject); procedure btnLaunchSearchClick(Sender: TObject); procedure btnCancelClick(Sender: TObject); procedure TabControlChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } LogicSet : TLogicSet; FLastJobNumber : string; SearchFileName : string; SearchFileNumber: String; FSelectedIEN, FSelectedName : String; procedure RetrieveResults(JobNumber: string; FldNum : string=''); function LaunchSearch(SearchString : string) : string; function ClearLastSearch(JobNumber : string) : boolean; public { Public declarations } Function ConnectToRPCBroker : boolean; procedure InitializeForm(FileName : string; FileNumber: integer); property SelectedIEN : String read FSelectedIEN; property SelectedName : String read FSelectedName; end; var frmPtQuery: TfrmPtQuery; implementation {$R *.dfm} uses frmRPCtest, SearchAnimationU, frmSearchResults; const RPC_CONTEXT = 'TMG RPC CONTEXT TEMP'; (***********************************************************************) (***********************************************************************) function TfrmPtQuery.ConnectToRPCBroker : boolean; //Returns if login succeeded. //Used for stand-alone application begin Result := true; if not ORNet.ConnectToServer(RPC_CONTEXT) then begin Messagedlg('Login Failed.',mtError,[mbOK],0); Result := false; end; end; procedure TfrmPtQuery.InitializeForm(FileName : string; FileNumber: integer); begin SearchFileName := FileName; SearchFileNumber := IntToStr(FileNumber); lblFileName.Caption := SearchFileName; end; procedure TfrmPtQuery.FormShow(Sender: TObject); begin LogicSet.Clear; LogicSet.SetFile(SearchFileNumber, SearchFileName); TabControl.TabIndex := 0; TabControlChange(Self); end; function TfrmPtQuery.ClearLastSearch(JobNumber : string) : boolean; //Returns TRUE if OK, or FALSE if problem. var cmd, RPCResult : string; begin Result := True; RPCBrokerV.remoteprocedure := 'TMG SEARCH CHANNEL'; RPCBrokerV.Param[0].Value := '.X'; RPCBrokerV.param[0].ptype := list; cmd := 'CLEAR'; cmd := cmd + '^' + JobNumber; RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd; //RPCBrokerV.Call; CallBroker; if RPCBrokerV.Results.Count > 0 then begin RPCResult := RPCBrokerV.Results[0] end else RPCResult := ''; if piece(RPCBrokerV.Results[0],'^',1) = '-1' then begin MessageDlg('Error: ' + piece(RPCBrokerV.Results[0],'^',2),mtError,[mbOK],0); Result := false; end; end; function TfrmPtQuery.LaunchSearch(SearchString : string) : string; var cmd, RPCResult : string; begin RPCBrokerV.remoteprocedure := 'TMG SEARCH CHANNEL'; RPCBrokerV.Param[0].Value := '.X'; RPCBrokerV.param[0].ptype := list; cmd := 'LAUNCH'; cmd := cmd + '^' + SearchFileNumber + '^' + SearchString; RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd; CallBroker; if RPCBrokerV.Results.Count > 0 then begin RPCResult := RPCBrokerV.Results[0] end else RPCResult := ''; if piece(RPCBrokerV.Results[0],'^',1) = '1' then begin Result := piece(RPCBrokerV.Results[0],'^',2); end else begin MessageDlg('Search failed.',mtError,[mbOK],0); Result := ''; end; end; procedure TfrmPtQuery.RetrieveResults(JobNumber, FldNum : string); //Get job results var tempStr, cmd : string; i : integer; begin RPCBrokerV.remoteprocedure := 'TMG SEARCH CHANNEL'; RPCBrokerV.param[0].ptype := list; RPCBrokerV.Param[0].Value := '.X'; cmd := 'RESULTS'; cmd := cmd + '^' + JobNumber + '^' + FldNum; RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd; CallBroker; frmRPCResults.listRPCResults.Clear; for i := 1 to RPCBrokerV.Results.Count-1 do begin tempStr := RPCBrokerV.Results[i]; frmRPCResults.listRPCResults.Items.Add(tempStr); end; frmRPCResults.ShowModal; end; {***************EVENT PROCEDURES*******************} procedure TfrmPtQuery.btnLaunchSearchClick(Sender: TObject); var JobNumber,Count, Fields : string; begin if FLastJobNumber <> '' then begin if ClearLastSearch(FLastJobNumber) = false then exit; end; JobNumber := LaunchSearch(edtSearchString.Text); FLastJobNumber := JobNumber; if JobNumber = '' then exit; if frmTMGServerSearch.ActivateForm(JobNumber) = mrCancel then Exit; Count := frmTMGServerSearch.FoundRecsCount; if (Count = '0') or (Count = '-1') then begin MessageDlg('Sorry, no matches found.' + #13#10 + 'This could be due to a search that is too narrow,' + #13#10 + 'or a technical limitation of this function.' +#10#13 + 'Please try a different search.', mtInformation, [mbOK],0); exit; end; Fields := '.01'; //do something different if 8925... if frmSrchResults.PrepForm(JobNumber, SearchFileName, Count, Fields) = false then begin Exit; end; if frmSrchResults.ShowModal = mrOK then begin FSelectedIEN := frmSrchResults.SelectedIEN; FSelectedName := frmSrchResults.SelectedName; ModalResult := mrOK; //should result in form being closed. {MessageDlg('User Selected ' + frmSrchResults.SelectedName + ' (' + frmSrchResults.SelectedIEN + ')', mtInformation,[mbOK],0); } end; end; procedure TfrmPtQuery.btnCancelClick(Sender: TObject); begin if FLastJobNumber <> '' then begin if ClearLastSearch(FLastJobNumber) = false then exit; end; ModalResult := mrCancel; //Close; end; procedure TfrmPtQuery.TabControlChange(Sender: TObject); var IsSimpleMode : boolean; begin IsSimpleMode := (TabControl.TabIndex <> 1); LogicSet.SimpleMode := IsSimpleMode; lblAdvancedMode.Visible := not IsSimpleMode; end; procedure TfrmPtQuery.FormCreate(Sender: TObject); begin LogicSet := TLogicSet.Create(SearchFileNumber,SearchFileName,sbContainer,Self); LogicSet.SearchStringEdit := edtSearchString; //Give LogicSet the column labels, so it can move them when indenting. LogicSet.lblFile := lblFile; LogicSet.lblField := lblField; LogicSet.lblOperator := lblOperator; LogicSet.lblValue := lblValue; GlyphImageList.GetBitmap(0, LogicSet.DelBitmap); GlyphImageList.GetBitmap(1, LogicSet.btnAddSrchField.Glyph); LogicSet.AddRow; TabControlChange(Self); end; procedure TfrmPtQuery.FormDestroy(Sender: TObject); //Free all runtime created objects begin LogicSet.Free; end; end.