source: cprs/branches/GUI-config/BDK32/Source/SelDiv.pas@ 837

Last change on this file since 837 was 476, checked in by Kevin Toppenberg, 16 years ago

New WorldVistA Config Utility

File size: 7.7 KB
Line 
1{ **************************************************************
2 Package: XWB - Kernel RPCBroker
3 Date Created: Sept 18, 1997 (Version 1.1)
4 Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
5 Developers: Danila Manapsal, Don Craven, Joel Ivey
6 Description: Handles Division selection for multidivision
7 users.
8 Current Release: Version 1.1 Patch 40 (January 7, 2005))
9*************************************************************** }
10
11{**************************************************
12This will ONLY be invoked when user has more than one division to select from
13in NEW Person file. If user only has one division, that division will be used;
14else it will default to whatever is in the Kernel Site Parameter file.
15
16XWB*1.1*13, Silent Login, allows for silent log-in functionality - DCM
17last updated: 5/24/00
18------------------------------------------------------------------------------}
19
20
21unit SelDiv;
22
23interface
24
25uses
26 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
27 StdCtrls, MFunStr, Buttons, Trpcb;
28
29type
30 TSelDivForm = class(TForm)
31 btnOK: TBitBtn;
32 btnCancel: TBitBtn;
33 btnHelp: TBitBtn;
34 DivLabel1: TLabel;
35 DivListBox: TListBox;
36 procedure btnOKClick(Sender: TObject);
37 procedure btnCancelClick(Sender: TObject);
38 procedure btnHelpClick(Sender: TObject);
39 procedure FormCreate(Sender: TObject);
40 private
41 { Private declarations }
42 public
43 { Public declarations }
44 procedure Enter;
45 end;
46
47function ChooseDiv(userid : string; MDivBroker: TRPCBroker): Boolean;
48function SetDiv(division : string; MDivBroker: TRPCBroker): boolean; //p13
49function MultDiv(MDivBroker: TRPCBroker): boolean;
50function SelectDivision(DivisionArray: TStrings; MDivBroker: TRPCBroker): Boolean;
51
52var
53 SelDivForm: TSelDivForm;
54
55implementation
56
57var
58 DivSel : string;
59 CntDiv : integer;
60 DivArray : TStrings; //Holds Results from 'XUS Division Get'
61{$R *.DFM}
62
63{------------------------------ChooseDiv---------------------------------}
64{ This function will retrieve the divisions for a user. The user will
65 then choose one division for signon. 'USERID' parameter is for future use
66 that will bring back a list of divisions for a user based on their DUZ
67 (or username to lookup DUZ), not based on the DUZ as it exists in the
68 symbol table. }
69
70function ChooseDiv(userid : string; MDivBroker: TRPCBroker): Boolean;
71var
72 division : string;
73begin
74 Result := false; // stays 'false' if user not select division.
75 with MDivBroker do begin
76 if userid <> '' then // future use - - DUZ is passed in.
77 begin
78 with Param[0] do begin
79 Value := userid;
80 PType := literal;
81 end;
82 end;
83 RemoteProcedure := 'XUS DIVISION GET';
84 Call;
85 CntDiv := StrToInt(MDivBroker.Results[0]); //count of divisions.
86 end;{with}
87
88 if CntDiv = 0 then Result := true; //using the Kernel default division.
89
90 if CntDiv > 0 then
91 begin
92 DivArray := TStringlist.Create; //Put Results in DivArray
93 DivArray.Assign(MDivBroker.Results);
94 try
95 SelDivForm := TSelDivForm.Create(Application); //create division form.
96 ShowApplicationAndFocusOK(Application);
97 SetForegroundWindow(SelDivForm.Handle);
98 SelDivForm.Enter;
99 finally;
100 SelDivForm.Free;
101 end;
102 end;{if/begin}
103
104 if SelDiv.DivSel <> '' then
105 begin
106 Result := True; //user selected a division.
107 division := Piece((Piece(SelDiv.DivSel,'(',2)),')',1);
108 if SetDiv(division,MDivBroker) then MDivBroker.User.Division := Division;
109
110 end;{if/begin}
111end;{procedure}
112
113function SelectDivision(DivisionArray: TStrings; MDivBroker: TRPCBroker): Boolean;
114var
115 division : string;
116begin
117 Result := false;
118 with MDivBroker do
119 begin
120 if DivisionArray.Count = 0 then
121 begin
122 RemoteProcedure := 'XUS DIVISION GET';
123 Call;
124 CntDiv := StrToInt(Results[0]); //count of divisions.
125 DivisionArray.Assign(Results);
126 end;
127 end;{with}
128 if CntDiv = 0 then //using the Kernel default division.
129 begin
130 Result := true;
131 exit;
132 end;
133 if CntDiv > 0 then
134 begin
135 DivArray := TStringlist.Create; //Put Results in DivArray
136 DivArray.Assign(DivisionArray);
137 try
138 SelDivForm := TSelDivForm.Create(Application); //create division form.
139 ShowApplicationAndFocusOK(Application);
140 SetForegroundWindow(SelDivForm.Handle);
141 SelDivForm.Enter;
142 finally;
143 SelDivForm.Free;
144 end; {try}
145 end; {if/begin}
146 if DivSel <> '' then
147 begin
148 Result := True; //user selected a division.
149 division := Piece((Piece(SelDiv.DivSel,'(',2)),')',1);
150 //division := Piece(SelDiv.DivSel,'^',2);
151 if SetDiv(division,MDivBroker) then MDivBroker.User.Division := Division;
152 end{if divsel}
153 else MDivBroker.LogIn.ErrorText := 'Invalid Division';
154end;{function}
155
156function MultDiv(MDivBroker: TRPCBroker): boolean;
157begin
158 Result := False;
159 with MDivBroker do
160 begin
161 RemoteProcedure := 'XUS DIVISION GET';
162 Call;
163 CntDiv := StrToInt(Results[0]); //count of divisions.
164 if CntDiv > 0 then
165 with Login do
166 begin
167 DivList.Assign(Results);//store the divisions
168 MultiDivision := True;
169 Result := True;
170 end;
171 end;
172end;
173
174{----------------------------SetDiv--------------------------------}
175{ This function will set DUZ(2) to the division the user selected. }
176
177function SetDiv(division : string; MDivBroker: TRPCBroker): boolean;
178begin
179 Result := False;
180 with MDivBroker do begin
181 Param[0].Value := division;
182 Param[0].PType := literal;
183 RemoteProcedure := 'XUS DIVISION SET';
184 Call;
185 if Results[0] = '1' then Result := True //1= DUZ(2) set successfully to division.
186 else Login.ErrorText := 'Invalid Division';
187 end;{with} //0= DUZ(2) NOT able to set to division.
188end;
189
190procedure TSelDivForm.Enter;
191begin
192 try
193 ShowModal; //invoke division form
194 finally
195
196 end;
197end;
198
199procedure TSelDivForm.btnOKClick(Sender: TObject);
200begin
201 if DivListBox.ItemIndex = -1 then //nothing selected.
202 ShowMessage('A Division was not selected!')
203 else
204 begin
205 SelDiv.DivSel := DivListBox.Items [DivListBox.ItemIndex]; //division
206 close; // selected.
207 end;
208end;
209
210procedure TSelDivForm.btnCancelClick(Sender: TObject);
211begin
212 close;
213end;
214
215procedure TSelDivForm.btnHelpClick(Sender: TObject);
216begin
217 ShowMessage('Select a division from the list and click OK.'+
218 ' A division must be selected in order to continue with your signon.' +
219 ' To abort process click on Cancel but signon will NOT be completed.')
220end;
221
222procedure TSelDivForm.FormCreate(Sender: TObject);
223var
224 I : integer;
225 X : string;
226 y,def: string;
227begin
228 def := '';
229 SelDiv.DivSel := ''; //clear any old selection
230 I := 1;
231 while not (I > CntDiv) do
232 begin
233 X := DivArray[I];
234 y := '(' + Piece(X,U,3) + ') ' + Piece(X,U,2); //p13 moved div# in front
235 //of div name
236 DivListBox.Items.Add(y); // + ' ^' + IntToStr(I));
237 if Piece(X,U,4) = '1' then def := y;
238 I := I + 1;
239 end;
240 DivListBox.Sorted := TRUE;
241 if def <> '' then DivListBox.ItemIndex := DivListBox.Items.Indexof(def); //use itemindex to highlight the default division
242end;
243
244end.
245
Note: See TracBrowser for help on using the repository browser.