| 1 | unit EditTextU; | 
|---|
| 2 | (* | 
|---|
| 3 | WorldVistA Configuration Utility | 
|---|
| 4 | (c) 8/2008 Kevin Toppenberg | 
|---|
| 5 | Programmed by Kevin Toppenberg, Eddie Hagood | 
|---|
| 6 |  | 
|---|
| 7 | Family Physicians of Greeneville, PC | 
|---|
| 8 | 1410 Tusculum Blvd, Suite 2600 | 
|---|
| 9 | Greeneville, TN 37745 | 
|---|
| 10 | kdtop@yahoo.com | 
|---|
| 11 |  | 
|---|
| 12 | This library is free software; you can redistribute it and/or | 
|---|
| 13 | modify it under the terms of the GNU Lesser General Public | 
|---|
| 14 | License as published by the Free Software Foundation; either | 
|---|
| 15 | version 2.1 of the License, or (at your option) any later version. | 
|---|
| 16 |  | 
|---|
| 17 | This library is distributed in the hope that it will be useful, | 
|---|
| 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|---|
| 20 | Lesser General Public License for more details. | 
|---|
| 21 |  | 
|---|
| 22 | You should have received a copy of the GNU Lesser General Public | 
|---|
| 23 | License along with this library; if not, write to the Free Software | 
|---|
| 24 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | 
|---|
| 25 | *) | 
|---|
| 26 |  | 
|---|
| 27 | interface | 
|---|
| 28 |  | 
|---|
| 29 | uses | 
|---|
| 30 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, | 
|---|
| 31 | Dialogs, StdCtrls, Buttons, ExtCtrls; | 
|---|
| 32 |  | 
|---|
| 33 | type | 
|---|
| 34 | TEditTextForm = class(TForm) | 
|---|
| 35 | Panel1: TPanel; | 
|---|
| 36 | Memo: TMemo; | 
|---|
| 37 | RevertBtn: TBitBtn; | 
|---|
| 38 | ApplyBtn: TBitBtn; | 
|---|
| 39 | DoneBtn: TBitBtn; | 
|---|
| 40 | procedure FormCreate(Sender: TObject); | 
|---|
| 41 | procedure FormDestroy(Sender: TObject); | 
|---|
| 42 | procedure RevertBtnClick(Sender: TObject); | 
|---|
| 43 | procedure ApplyBtnClick(Sender: TObject); | 
|---|
| 44 | procedure DoneBtnClick(Sender: TObject); | 
|---|
| 45 | procedure MemoChange(Sender: TObject); | 
|---|
| 46 | procedure FormHide(Sender: TObject); | 
|---|
| 47 | procedure FormClose(Sender: TObject; var Action: TCloseAction); | 
|---|
| 48 | private | 
|---|
| 49 | { Private declarations } | 
|---|
| 50 | FCachedText : TStringList; | 
|---|
| 51 | FFileNum,FFieldNum,FIENS : String; | 
|---|
| 52 | function GetWPField(FileNum,FieldNum,IENS : string) : TStringList; | 
|---|
| 53 | procedure PostWPField(Lines: TStrings; FileNum,FieldNum,IENS : string); | 
|---|
| 54 | public | 
|---|
| 55 | { Public declarations } | 
|---|
| 56 | procedure PrepForm(FileNum,FieldNum,IENS : string); | 
|---|
| 57 | end; | 
|---|
| 58 |  | 
|---|
| 59 | var | 
|---|
| 60 | EditTextForm: TEditTextForm; | 
|---|
| 61 |  | 
|---|
| 62 | implementation | 
|---|
| 63 |  | 
|---|
| 64 | uses FMErrorU, ORNet, ORFn, | 
|---|
| 65 | Trpcb ;  //needed for .ptype types | 
|---|
| 66 |  | 
|---|
| 67 | {$R *.dfm} | 
|---|
| 68 |  | 
|---|
| 69 | procedure TEditTextForm.PrepForm(FileNum,FieldNum,IENS : string); | 
|---|
| 70 | begin | 
|---|
| 71 | FFileNum := FileNum; | 
|---|
| 72 | FFieldNum := FieldNum; | 
|---|
| 73 | FIENS := IENS; | 
|---|
| 74 | Memo.Lines.Clear; | 
|---|
| 75 | Memo.Lines.Assign(GetWPField(FileNum,FieldNum,IENS)); | 
|---|
| 76 | ApplyBtn.Enabled := false; | 
|---|
| 77 | RevertBtn.Enabled := false; | 
|---|
| 78 | end; | 
|---|
| 79 |  | 
|---|
| 80 | procedure TEditTextForm.FormCreate(Sender: TObject); | 
|---|
| 81 | begin | 
|---|
| 82 | FCachedText := TStringList.Create; | 
|---|
| 83 |  | 
|---|
| 84 | end; | 
|---|
| 85 |  | 
|---|
| 86 | procedure TEditTextForm.FormDestroy(Sender: TObject); | 
|---|
| 87 | begin | 
|---|
| 88 | FCachedText.Free; | 
|---|
| 89 | end; | 
|---|
| 90 |  | 
|---|
| 91 |  | 
|---|
| 92 | function TEditTextForm.GetWPField(FileNum,FieldNum,IENS : string) : TStringList; | 
|---|
| 93 | var   RPCResult: string; | 
|---|
| 94 | cmd : string; | 
|---|
| 95 | lastLine : string; | 
|---|
| 96 | begin | 
|---|
| 97 | FCachedText.clear; | 
|---|
| 98 | RPCBrokerV.Results.Clear; | 
|---|
| 99 | RPCBrokerV.remoteprocedure := 'TMG CHANNEL'; | 
|---|
| 100 | RPCBrokerV.param[0].ptype := list; | 
|---|
| 101 | cmd := 'GET ONE WP FIELD^' + FileNum + '^' + FieldNum + '^' + IENS; | 
|---|
| 102 | RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd; | 
|---|
| 103 | //RPCBrokerV.Call; | 
|---|
| 104 | CallBroker; | 
|---|
| 105 | RPCResult := RPCBrokerV.Results[0];    //returns:  error: -1;  success=1 | 
|---|
| 106 | if piece(RPCResult,'^',1)='-1' then begin | 
|---|
| 107 | FMErrorForm.Memo.Lines.Assign(RPCBrokerV.Results); | 
|---|
| 108 | FMErrorForm.PrepMessage; | 
|---|
| 109 | FMErrorForm.ShowModal; | 
|---|
| 110 | end else begin | 
|---|
| 111 | FCachedText.Assign(RPCBrokerV.Results); | 
|---|
| 112 | FCachedText.Delete(0); | 
|---|
| 113 | lastLine := FCachedText.Strings[FCachedText.Count-1]; | 
|---|
| 114 | //I can't figure out where these are coming from... | 
|---|
| 115 | if (lastLine='WORD-PROCESSING') or (lastLine = 'POINTER') | 
|---|
| 116 | or (lastLine='FREE TEXT') then begin | 
|---|
| 117 | FCachedText.Delete(FCachedText.Count-1); | 
|---|
| 118 | end; | 
|---|
| 119 | end; | 
|---|
| 120 | result := FCachedText; | 
|---|
| 121 | end; | 
|---|
| 122 |  | 
|---|
| 123 |  | 
|---|
| 124 | procedure TEditTextForm.PostWPField(Lines: TStrings; FileNum,FieldNum,IENS : string); | 
|---|
| 125 | var   RPCResult: string; | 
|---|
| 126 | cmd : string; | 
|---|
| 127 | lastLine : string; | 
|---|
| 128 | i : integer; | 
|---|
| 129 | begin | 
|---|
| 130 | RPCBrokerV.Results.Clear; | 
|---|
| 131 | RPCBrokerV.remoteprocedure := 'TMG CHANNEL'; | 
|---|
| 132 | RPCBrokerV.param[0].ptype := list; | 
|---|
| 133 | cmd := 'POST WP FIELD^' + FileNum + '^' + FieldNum + '^' + IENS; | 
|---|
| 134 | RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd; | 
|---|
| 135 | for i := 0 to Lines.Count-1 do begin | 
|---|
| 136 | RPCBrokerV.Param[0].Mult['"' + IntToStr(i+1) + '"'] := Lines.Strings[i]; | 
|---|
| 137 | end; | 
|---|
| 138 | //RPCBrokerV.Call; | 
|---|
| 139 | CallBroker; | 
|---|
| 140 | RPCResult := RPCBrokerV.Results[0];    //returns:  error: -1;  success=1 | 
|---|
| 141 | if piece(RPCResult,'^',1)='-1' then begin | 
|---|
| 142 | FMErrorForm.Memo.Lines.Assign(RPCBrokerV.Results); | 
|---|
| 143 | FMErrorForm.PrepMessage; | 
|---|
| 144 | FMErrorForm.ShowModal; | 
|---|
| 145 | end else begin | 
|---|
| 146 | FCachedText.Assign(Lines); | 
|---|
| 147 | end; | 
|---|
| 148 | end; | 
|---|
| 149 |  | 
|---|
| 150 |  | 
|---|
| 151 | procedure TEditTextForm.RevertBtnClick(Sender: TObject); | 
|---|
| 152 | begin | 
|---|
| 153 | if MessageDlg('Abort editing changes and revert to original?',mtWarning,mbOKCancel,0) = mrOK then begin | 
|---|
| 154 | Memo.Lines.Assign(FCachedText); | 
|---|
| 155 | end; | 
|---|
| 156 | end; | 
|---|
| 157 |  | 
|---|
| 158 | procedure TEditTextForm.ApplyBtnClick(Sender: TObject); | 
|---|
| 159 | begin | 
|---|
| 160 | if FCachedText.Text <> Memo.Lines.Text then begin | 
|---|
| 161 | //MessageDlg('Here I will post changes',mtInformation,[mbOK],0); | 
|---|
| 162 | PostWPField(Memo.Lines,FFileNum,FFieldNum,FIENS); | 
|---|
| 163 | end; | 
|---|
| 164 | ApplyBtn.Enabled := false; | 
|---|
| 165 | RevertBtn.Enabled := false; | 
|---|
| 166 | end; | 
|---|
| 167 |  | 
|---|
| 168 | procedure TEditTextForm.DoneBtnClick(Sender: TObject); | 
|---|
| 169 | begin | 
|---|
| 170 | ApplyBtnClick(self); | 
|---|
| 171 | ModalResult := mrOK; | 
|---|
| 172 | end; | 
|---|
| 173 |  | 
|---|
| 174 | procedure TEditTextForm.MemoChange(Sender: TObject); | 
|---|
| 175 | begin | 
|---|
| 176 | ApplyBtn.Enabled := true; | 
|---|
| 177 | RevertBtn.Enabled := true; | 
|---|
| 178 | end; | 
|---|
| 179 |  | 
|---|
| 180 | procedure TEditTextForm.FormHide(Sender: TObject); | 
|---|
| 181 | begin | 
|---|
| 182 | ApplyBtnClick(self); | 
|---|
| 183 | end; | 
|---|
| 184 |  | 
|---|
| 185 | procedure TEditTextForm.FormClose(Sender: TObject; var Action: TCloseAction); | 
|---|
| 186 | begin | 
|---|
| 187 | ApplyBtnClick(self); | 
|---|
| 188 | end; | 
|---|
| 189 |  | 
|---|
| 190 | end. | 
|---|
| 191 |  | 
|---|