source: cprs/branches/foia-cprs/CPRS-Chart/Orders/fOrderSaveQuick.pas@ 459

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

Adding foia-cprs branch

File size: 7.8 KB
Line 
1unit fOrderSaveQuick;
2
3interface
4
5uses
6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7 fAutoSz, Buttons, ExtCtrls, StdCtrls, ORCtrls, ORFn, fODBase, uOrders;
8
9type
10 TfrmSaveQuickOrder = class(TfrmAutoSz)
11 Panel1: TPanel;
12 memOrder: TMemo;
13 lblDisplayName: TLabel;
14 txtDisplayName: TCaptionEdit;
15 Panel2: TPanel;
16 lblQuickList: TLabel;
17 lstQuickList: TORListBox;
18 pnlUpButton: TKeyClickPanel;
19 cmdUp: TSpeedButton;
20 pnlDownButton: TKeyClickPanel;
21 cmdRename: TButton;
22 cmdDelete: TButton;
23 cmdDown: TSpeedButton;
24 Panel3: TPanel;
25 cmdOK: TButton;
26 cmdCancel: TButton;
27 procedure FormCreate(Sender: TObject);
28 procedure cmdOKClick(Sender: TObject);
29 procedure cmdCancelClick(Sender: TObject);
30 procedure txtDisplayNameChange(Sender: TObject);
31 procedure cmdUpClick(Sender: TObject);
32 procedure cmdDownClick(Sender: TObject);
33 procedure cmdRenameClick(Sender: TObject);
34 procedure cmdDeleteClick(Sender: TObject);
35 procedure pnlUpButtonEnter(Sender: TObject);
36 procedure pnlUpButtonExit(Sender: TObject);
37 private
38 OKPressed: Boolean;
39 end;
40
41function EditCommonList(ADisplayGroup: Integer): Boolean;
42function SaveAsQuickOrder(ResponseSet: TResponses): Boolean;
43
44implementation
45
46{$R *.DFM}
47
48uses rODBase, rOrders, fRename;
49
50const
51 TX_DNAME_REQ = 'A name for the quick order must be entered in order to save it.';
52 TC_DNAME_REQ = 'Display Name Missing';
53 TX_DEL_CONFIRM = 'Remove the following quick order from your list?' + CRLF + CRLF;
54 TC_DEL_CONFIRM = 'Remove Quick Order';
55 TX_QO_RENAME = 'Rename Quick Order';
56 TX_NO_DEL_NEW = 'A new quick order cannot be deleted. Press <Cancel> instead.';
57 TC_NO_DEL_NEW = 'Remove Quick Order';
58 TX_NO_TEXT = 'No fields have been entered - cannot save as quick order.';
59 TC_NO_TEXT = 'Save as Quick Order';
60
61function EditCommonList(ADisplayGroup: Integer): Boolean;
62var
63 frmSaveQuickOrder: TfrmSaveQuickOrder;
64 DGroupName: string;
65begin
66 Result := False;
67 frmSaveQuickOrder := TfrmSaveQuickOrder.Create(Application);
68 try
69 ResizeFormToFont(TForm(frmSaveQuickOrder));
70 with frmSaveQuickOrder do
71 begin
72 if ADisplayGroup = ClinDisp then
73 ADisplayGroup := InptDisp;
74 DGroupName := NameOfDGroup(ADisplayGroup);
75 Caption := 'Edit Common Order List (' + DGroupName + ')';
76 lblQuickList.Caption := 'Common List for ' + DGroupName;
77 lstQuickList.Caption := lblQuickList.Caption;
78 lblDisplayName.Font.Color := clGrayText;
79 txtDisplayName.Enabled := False;
80 txtDisplayName.Color := clBtnFace;
81 with lstQuickList do
82 begin
83 LoadQuickListForOD(Items, ADisplayGroup);
84 ItemIndex := 0;
85 end;
86 ShowModal;
87 if OKPressed then
88 begin
89 Result := True;
90 // replace the user's quick list with this new quick list
91 SaveQuickListForOD(lstQuickList.Items, ADisplayGroup);
92 end; {if OKPressed}
93 end; {with frmSaveQuickOrder}
94 finally
95 frmSaveQuickOrder.Release;
96 end;
97end;
98
99function SaveAsQuickOrder(ResponseSet: TResponses): Boolean;
100const
101 EMPTY_CRC = 'FFFFFFFF';
102var
103 frmSaveQuickOrder: TfrmSaveQuickOrder;
104 DGroupName, QuickName, CRC: string;
105 NewIEN, AnIndex, i: Integer;
106begin
107 Result := False;
108 CRC := ResponseSet.OrderCRC;
109 if CRC = EMPTY_CRC then
110 begin
111 InfoBox(TX_NO_TEXT, TC_NO_TEXT, MB_OK);
112 Exit;
113 end;
114 frmSaveQuickOrder := TfrmSaveQuickOrder.Create(Application);
115 try
116 ResizeFormToFont(TForm(frmSaveQuickOrder));
117 with frmSaveQuickOrder do
118 begin
119 if ResponseSet.DisplayGroup = ClinDisp then
120 DGroupName := NameOfDGroup(InptDisp)
121 else
122 DGroupName := NameOfDGroup(ResponseSet.DisplayGroup);
123 Caption := 'Add Quick Order (' + DGroupName + ')';
124 lblQuickList.Caption := 'Common List for ' + DGroupName;
125 lstQuickList.Caption := lblQuickList.Caption;
126 QuickName := GetQuickName(CRC);
127 memOrder.Text := ResponseSet.OrderText;
128 txtDisplayName.Text := QuickName;
129 with lstQuickList do
130 begin
131 if ResponseSet.DisplayGroup = ClinDisp then
132 LoadQuickListForOD(Items, InptDisp)
133 else
134 LoadQuickListForOD(Items, ResponseSet.DisplayGroup);
135 if Length(QuickName) > 0
136 then Items.Insert(0, '-1^' + QuickName)
137 else Items.Insert(0, '-1^<New Quick Order>');
138 ItemIndex := 0;
139 end;
140 ShowModal;
141 if OKPressed then
142 begin
143 Result := True;
144 // save reponses as quick order
145 ResponseSet.SaveQuickOrder(NewIEN, txtDisplayName.Text);
146 // find the new quick order and set the new IEN
147 AnIndex := -1;
148 with lstQuickList do for i := 0 to Items.Count - 1 do
149 if GetIEN(i) = -1 then AnIndex := i;
150 if AnIndex > -1 then lstQuickList.Items[AnIndex] := IntToStr(NewIEN) + U +
151 txtDisplayName.Text;
152 // replace the user's quick list with this new quick list
153 if ResponseSet.DisplayGroup = ClinDisp then
154 SaveQuickListForOD(lstQuickList.Items, InptDisp)
155 else
156 SaveQuickListForOD(lstQuickList.Items, ResponseSet.DisplayGroup);
157 end; {if OKPressed}
158 end; {with frmSaveQuickOrder}
159 finally
160 frmSaveQuickOrder.Release;
161 end;
162end;
163
164procedure TfrmSaveQuickOrder.txtDisplayNameChange(Sender: TObject);
165var
166 AnIndex, i: Integer;
167begin
168 inherited;
169 if txtDisplayName.Text = '' then Exit;
170 AnIndex := -1;
171 with lstQuickList do for i := 0 to Items.Count - 1 do
172 if GetIEN(i) = -1 then AnIndex := i;
173 if AnIndex > -1 then lstQuickList.Items[AnIndex] := '-1^' + txtDisplayName.Text;
174end;
175
176procedure TfrmSaveQuickOrder.cmdUpClick(Sender: TObject);
177var
178 NewIndex: Integer;
179begin
180 inherited;
181 with lstQuickList do
182 begin
183 if ItemIndex < 1 then Exit;
184 NewIndex := ItemIndex - 1;
185 Items.Move(ItemIndex, NewIndex);
186 ItemIndex := NewIndex;
187 end;
188end;
189
190procedure TfrmSaveQuickOrder.cmdDownClick(Sender: TObject);
191var
192 NewIndex: Integer;
193begin
194 inherited;
195 with lstQuickList do
196 begin
197 if ItemIndex > Items.Count - 2 then Exit;
198 NewIndex := ItemIndex + 1;
199 Items.Move(ItemIndex, NewIndex);
200 ItemIndex := NewIndex;
201 end;
202end;
203
204procedure TfrmSaveQuickOrder.cmdRenameClick(Sender: TObject);
205var
206 AName: string;
207begin
208 inherited;
209 with lstQuickList do
210 begin
211 if ItemIndex < 0 then Exit;
212 AName := Piece(Items[ItemIndex], U, 2);
213 if ExecuteRename(AName, TX_QO_RENAME)
214 then Items[ItemIndex] := Piece(Items[ItemIndex], U, 1) + U + AName;
215 end;
216end;
217
218procedure TfrmSaveQuickOrder.cmdDeleteClick(Sender: TObject);
219begin
220 inherited;
221 with lstQuickList do
222 begin
223 if ItemIndex < 0 then Exit;
224 if ItemIEN = -1 then
225 begin
226 InfoBox(TX_NO_DEL_NEW, TC_NO_DEL_NEW, MB_OK);
227 Exit;
228 end;
229 if InfoBox(TX_DEL_CONFIRM + DisplayText[ItemIndex], TC_DEL_CONFIRM,
230 MB_YESNO or MB_ICONQUESTION) = IDYES then Items.Delete(ItemIndex);
231 end;
232end;
233
234procedure TfrmSaveQuickOrder.FormCreate(Sender: TObject);
235begin
236 inherited;
237 OKPressed := False;
238end;
239
240procedure TfrmSaveQuickOrder.cmdOKClick(Sender: TObject);
241begin
242 inherited;
243 if txtDisplayName.Enabled and (txtDisplayName.Text = '') then
244 begin
245 InfoBox(TX_DNAME_REQ, TC_DNAME_REQ, MB_OK);
246 Exit;
247 end;
248 OKPressed := True;
249 Close;
250end;
251
252procedure TfrmSaveQuickOrder.cmdCancelClick(Sender: TObject);
253begin
254 inherited;
255 Close;
256end;
257
258procedure TfrmSaveQuickOrder.pnlUpButtonEnter(Sender: TObject);
259begin
260 inherited;
261 TPanel(Sender).BevelOuter := bvRaised;
262end;
263
264procedure TfrmSaveQuickOrder.pnlUpButtonExit(Sender: TObject);
265begin
266 inherited;
267 TPanel(Sender).BevelOuter := bvNone;
268end;
269
270end.
Note: See TracBrowser for help on using the repository browser.