source: cprs/branches/tmg-cprs/CPRS-Chart/TMG_Extra/fPtQuery.pas@ 801

Last change on this file since 801 was 801, checked in by Kevin Toppenberg, 14 years ago

Bug fixes. Improved Adding Image

File size: 7.5 KB
Line 
1unit fPtQuery;
2
3interface
4
5uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, Buttons, ExtCtrls,ORNet, ORFn,ComCtrls,Trpcb, ORCtrls,
8 uLogic, ImgList
9 ;
10
11type
12 TfrmPtQuery = class(TForm)
13 sbContainer: TScrollBox;
14 lblField: TLabel;
15 lblOperator: TLabel;
16 lblValue: TLabel;
17 pnlBottom: TPanel;
18 lblFile: TLabel;
19 edtSearchString: TEdit;
20 pnlTop: TPanel;
21 lblSearchForEntryInFile: TLabel;
22 lblFileName: TLabel;
23 btnCancel: TBitBtn;
24 btnLaunchSearch: TBitBtn;
25 imgSearch: TImage;
26 GlyphImageList: TImageList;
27 TabControl: TTabControl;
28 lblAdvancedMode: TLabel;
29 procedure FormShow(Sender: TObject);
30 procedure btnLaunchSearchClick(Sender: TObject);
31 procedure btnCancelClick(Sender: TObject);
32 procedure TabControlChange(Sender: TObject);
33 procedure FormCreate(Sender: TObject);
34 procedure FormDestroy(Sender: TObject);
35 private
36 { Private declarations }
37 LogicSet : TLogicSet;
38 FLastJobNumber : string;
39 SearchFileName : string;
40 SearchFileNumber: String;
41 FSelectedIEN, FSelectedName : String;
42 procedure RetrieveResults(JobNumber: string; FldNum : string='');
43 function LaunchSearch(SearchString : string) : string;
44 function ClearLastSearch(JobNumber : string) : boolean;
45 public
46 { Public declarations }
47 Function ConnectToRPCBroker : boolean;
48 procedure InitializeForm(FileName : string; FileNumber: integer);
49 property SelectedIEN : String read FSelectedIEN;
50 property SelectedName : String read FSelectedName;
51 end;
52
53var
54 frmPtQuery: TfrmPtQuery;
55
56implementation
57
58{$R *.dfm}
59
60uses
61 frmRPCtest, SearchAnimationU, frmSearchResults;
62
63const
64 RPC_CONTEXT = 'TMG RPC CONTEXT TEMP';
65
66(***********************************************************************)
67(***********************************************************************)
68
69 function TfrmPtQuery.ConnectToRPCBroker : boolean;
70 //Returns if login succeeded.
71 //Used for stand-alone application
72 begin
73 Result := true;
74 if not ORNet.ConnectToServer(RPC_CONTEXT) then begin
75 Messagedlg('Login Failed.',mtError,[mbOK],0);
76 Result := false;
77 end;
78 end;
79
80 procedure TfrmPtQuery.InitializeForm(FileName : string; FileNumber: integer);
81 begin
82 SearchFileName := FileName;
83 SearchFileNumber := IntToStr(FileNumber);
84 lblFileName.Caption := SearchFileName;
85 end;
86
87 procedure TfrmPtQuery.FormShow(Sender: TObject);
88 begin
89 LogicSet.Clear;
90 LogicSet.SetFile(SearchFileNumber, SearchFileName);
91 TabControl.TabIndex := 0;
92 TabControlChange(Self);
93 end;
94
95 function TfrmPtQuery.ClearLastSearch(JobNumber : string) : boolean;
96 //Returns TRUE if OK, or FALSE if problem.
97 var
98 cmd, RPCResult : string;
99 begin
100 Result := True;
101 RPCBrokerV.remoteprocedure := 'TMG SEARCH CHANNEL';
102 RPCBrokerV.Param[0].Value := '.X';
103 RPCBrokerV.param[0].ptype := list;
104 cmd := 'CLEAR';
105 cmd := cmd + '^' + JobNumber;
106 RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd;
107 //RPCBrokerV.Call;
108 CallBroker;
109 if RPCBrokerV.Results.Count > 0 then begin
110 RPCResult := RPCBrokerV.Results[0]
111 end else RPCResult := '';
112 if piece(RPCBrokerV.Results[0],'^',1) = '-1' then begin
113 MessageDlg('Error: ' + piece(RPCBrokerV.Results[0],'^',2),mtError,[mbOK],0);
114 Result := false;
115 end;
116 end;
117
118
119 function TfrmPtQuery.LaunchSearch(SearchString : string) : string;
120 var
121 cmd, RPCResult : string;
122 begin
123 RPCBrokerV.remoteprocedure := 'TMG SEARCH CHANNEL';
124 RPCBrokerV.Param[0].Value := '.X';
125 RPCBrokerV.param[0].ptype := list;
126 cmd := 'LAUNCH';
127 cmd := cmd + '^' + SearchFileNumber + '^' + SearchString;
128 RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd;
129 //RPCBrokerV.Call;
130 CallBroker;
131 if RPCBrokerV.Results.Count > 0 then begin
132 RPCResult := RPCBrokerV.Results[0]
133 end else RPCResult := '';
134 if piece(RPCBrokerV.Results[0],'^',1) = '1' then begin
135 Result := piece(RPCBrokerV.Results[0],'^',2);
136 end else begin
137 MessageDlg('Search failed.',mtError,[mbOK],0);
138 Result := '';
139 end;
140 end;
141
142 procedure TfrmPtQuery.RetrieveResults(JobNumber, FldNum : string);
143 //Get job results
144 var
145 tempStr, cmd : string;
146 i : integer;
147 begin
148 RPCBrokerV.remoteprocedure := 'TMG SEARCH CHANNEL';
149 RPCBrokerV.param[0].ptype := list;
150 RPCBrokerV.Param[0].Value := '.X';
151 cmd := 'RESULTS';
152 cmd := cmd + '^' + JobNumber + '^' + FldNum;
153 RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd;
154 //RPCBrokerV.Call;
155 CallBroker;
156
157 frmRPCResults.listRPCResults.Clear;
158 for i := 1 to RPCBrokerV.Results.Count-1 do begin
159 tempStr := RPCBrokerV.Results[i];
160 frmRPCResults.listRPCResults.Items.Add(tempStr);
161 end;
162
163 frmRPCResults.ShowModal;
164 end;
165
166
167 {***************EVENT PROCEDURES*******************}
168 procedure TfrmPtQuery.btnLaunchSearchClick(Sender: TObject);
169 var JobNumber,Count, Fields : string;
170 begin
171 if FLastJobNumber <> '' then begin
172 if ClearLastSearch(FLastJobNumber) = false then exit;
173 end;
174 JobNumber := LaunchSearch(edtSearchString.Text);
175 FLastJobNumber := JobNumber;
176 if JobNumber = '' then exit;
177 if frmTMGServerSearch.ActivateForm(JobNumber) = mrCancel then Exit;
178 Count := frmTMGServerSearch.FoundRecsCount;
179 if (Count = '0') or (Count = '-1') then begin
180 MessageDlg('Sorry, no matches found.' + #13#10 +
181 'This could be due to a search that is too narrow,' + #13#10 +
182 'or a technical limitation of this function.' +#10#13 +
183 'Please try a different search.', mtInformation, [mbOK],0);
184 exit;
185 end;
186 Fields := '.01'; //do something different if 8925...
187 if frmSrchResults.PrepForm(JobNumber, SearchFileName, Count, Fields) = false then begin
188 Exit;
189 end;
190 if frmSrchResults.ShowModal = mrOK then begin
191 FSelectedIEN := frmSrchResults.SelectedIEN;
192 FSelectedName := frmSrchResults.SelectedName;
193 ModalResult := mrOK; //should result in form being closed.
194
195 {MessageDlg('User Selected ' + frmSrchResults.SelectedName
196 + ' (' + frmSrchResults.SelectedIEN + ')',
197 mtInformation,[mbOK],0); }
198 end;
199 end;
200
201 procedure TfrmPtQuery.btnCancelClick(Sender: TObject);
202 begin
203 if FLastJobNumber <> '' then begin
204 if ClearLastSearch(FLastJobNumber) = false then exit;
205 end;
206 ModalResult := mrCancel;
207 //Close;
208 end;
209
210 procedure TfrmPtQuery.TabControlChange(Sender: TObject);
211 var IsSimpleMode : boolean;
212 begin
213 IsSimpleMode := (TabControl.TabIndex <> 1);
214 LogicSet.SimpleMode := IsSimpleMode;
215 lblAdvancedMode.Visible := not IsSimpleMode;
216 end;
217
218 procedure TfrmPtQuery.FormCreate(Sender: TObject);
219 begin
220 LogicSet := TLogicSet.Create(SearchFileNumber,SearchFileName,sbContainer,Self);
221 LogicSet.SearchStringEdit := edtSearchString;
222 //Give LogicSet the column labels, so it can move them when indenting.
223 LogicSet.lblFile := lblFile;
224 LogicSet.lblField := lblField;
225 LogicSet.lblOperator := lblOperator;
226 LogicSet.lblValue := lblValue;
227 GlyphImageList.GetBitmap(0, LogicSet.DelBitmap);
228 GlyphImageList.GetBitmap(1, LogicSet.btnAddSrchField.Glyph);
229 LogicSet.AddRow;
230 TabControlChange(Self);
231 end;
232
233 procedure TfrmPtQuery.FormDestroy(Sender: TObject);
234 //Free all runtime created objects
235 begin
236 LogicSet.Free;
237 end;
238
239end.
240
Note: See TracBrowser for help on using the repository browser.