[453] | 1 | //kt -- Modified with SourceScanner on 8/7/2007
|
---|
| 2 | unit UploadImages;
|
---|
| 3 |
|
---|
| 4 | interface
|
---|
| 5 |
|
---|
| 6 | uses
|
---|
| 7 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
---|
| 8 | Dialogs, StdCtrls, Buttons, ExtCtrls, pngimage, ExtDlgs, OleCtrls,
|
---|
| 9 | SHDocVw, DKLang;
|
---|
| 10 |
|
---|
| 11 | type
|
---|
| 12 | TUploadImageInfo = class
|
---|
| 13 | private
|
---|
| 14 | public
|
---|
| 15 | TIUIEN : int64; //IEN in file# 8925
|
---|
| 16 | DFN : AnsiString; //IEN in Patient File (#2)
|
---|
| 17 | UploadDUZ : int64;
|
---|
| 18 | ThumbFPathName : AnsiString; // local file path name
|
---|
| 19 | ImageFPathName : AnsiString;
|
---|
| 20 | ServerPath : AnsiString;
|
---|
| 21 | ServerFName : AnsiString;
|
---|
| 22 | ServerThumbFName: AnsiString;
|
---|
| 23 | ShortDesc : String[60];
|
---|
| 24 | Extension : String[16];
|
---|
| 25 | ImageDateTime : AnsiString;
|
---|
| 26 | UploadDateTime: AnsiString;
|
---|
| 27 | ObjectType : Integer; //pointer to file 2005.02
|
---|
| 28 | ProcName : String[10]; //server limit is 10 chars.
|
---|
| 29 | //AcquisitionSite
|
---|
| 30 | pLongDesc : TStrings;
|
---|
| 31 | published
|
---|
| 32 | end;
|
---|
| 33 |
|
---|
| 34 |
|
---|
| 35 |
|
---|
| 36 | type
|
---|
| 37 | TUploadForm = class(TForm)
|
---|
| 38 | OpenFileDialog: TOpenDialog;
|
---|
| 39 | Image1: TImage;
|
---|
| 40 | PickImagesButton: TBitBtn;
|
---|
| 41 | Label1: TLabel;
|
---|
| 42 | CancelButton: TBitBtn;
|
---|
| 43 | UploadButton: TBitBtn;
|
---|
| 44 | Label2: TLabel;
|
---|
| 45 | Label4: TLabel;
|
---|
| 46 | ShortDescEdit: TEdit;
|
---|
| 47 | LongDescMemo: TMemo;
|
---|
| 48 | Label3: TLabel;
|
---|
| 49 | Label5: TLabel;
|
---|
| 50 | DateTimeEdit: TEdit;
|
---|
| 51 | ClearImagesButton: TBitBtn;
|
---|
| 52 | OpenDialog: TOpenPictureDialog;
|
---|
| 53 | FilesToUploadList: TListBox;
|
---|
| 54 | NoteEdit: TEdit;
|
---|
| 55 | PickOtherButton: TBitBtn;
|
---|
| 56 | Panel1: TPanel;
|
---|
| 57 | WebBrowser: TWebBrowser;
|
---|
| 58 | Label6: TLabel;
|
---|
| 59 | MoveCheckBox: TCheckBox;
|
---|
| 60 | DKLanguageController1: TDKLanguageController;
|
---|
| 61 | procedure UploadButtonClick(Sender: TObject);
|
---|
| 62 | procedure PickImagesButtonClick(Sender: TObject);
|
---|
| 63 | procedure FormShow(Sender: TObject);
|
---|
| 64 | procedure ShortDescEditChange(Sender: TObject);
|
---|
| 65 | procedure ClearImagesButtonClick(Sender: TObject);
|
---|
| 66 | procedure FormCreate(Sender: TObject);
|
---|
| 67 | procedure FormDestroy(Sender: TObject);
|
---|
| 68 | procedure FilesToUploadListClick(Sender: TObject);
|
---|
| 69 | procedure PickOtherButtonClick(Sender: TObject);
|
---|
| 70 | procedure FormRefresh(Sender: TObject);
|
---|
| 71 |
|
---|
| 72 | private
|
---|
| 73 | { Private declarations }
|
---|
| 74 | Bitmap : TBitmap;
|
---|
| 75 | Picture : TPicture;
|
---|
| 76 | function MakeThumbNail(Info: TUploadImageInfo): boolean;
|
---|
| 77 |
|
---|
| 78 | procedure LoadNotesEdit();
|
---|
| 79 | //procedure LoadNotesList();
|
---|
| 80 | function UploadFile(Info: TUploadImageInfo): boolean;
|
---|
| 81 | procedure UploadChosenFiles();
|
---|
| 82 |
|
---|
| 83 | public
|
---|
| 84 | { Public declarations }
|
---|
| 85 | end;
|
---|
| 86 |
|
---|
| 87 | var
|
---|
| 88 | UploadForm: TUploadForm;
|
---|
| 89 |
|
---|
| 90 | implementation
|
---|
| 91 |
|
---|
| 92 | {$R *.dfm}
|
---|
| 93 |
|
---|
| 94 | uses fNotes,
|
---|
| 95 | StrUtils, //for MidStr etc.
|
---|
| 96 | ORFn, //for PIECE etc.
|
---|
| 97 | uCore, // for User.DUZ etc
|
---|
| 98 | Trpcb, //for .PType enum
|
---|
| 99 | fImages, //for upload/download files etc.
|
---|
| 100 | //Targa, //for TGA graphic save
|
---|
| 101 | ORNet //for RPCBrokerV
|
---|
| 102 | ;
|
---|
| 103 |
|
---|
| 104 | // const
|
---|
| 105 | // DefShortDesc = '(Short Image Description)'; <-- original line. //kt 8/7/2007
|
---|
| 106 |
|
---|
| 107 | var
|
---|
| 108 | DefShortDesc : string; //kt
|
---|
| 109 |
|
---|
| 110 | procedure SetupVars;
|
---|
| 111 | begin
|
---|
| 112 | DefShortDesc := DKLangConstW('UploadImages_xShort_Image_Descriptionx'); //kt added 8/7/2007
|
---|
| 113 | end;
|
---|
| 114 |
|
---|
| 115 | //-------------------------------------------------------------------------
|
---|
| 116 | //-------------------------------------------------------------------------
|
---|
| 117 | function TUploadForm.MakeThumbNail(Info: TUploadImageInfo) : boolean;
|
---|
| 118 | //This takes Info.ImageFPathName and creates a 64x64 .bmp file with
|
---|
| 119 | //this same name, and saves in cache directory.
|
---|
| 120 | //saves name of this thumbnail in info.ThumbFPathName
|
---|
| 121 |
|
---|
| 122 | var
|
---|
| 123 | Rect : TRect;
|
---|
| 124 | ThumbFName : AnsiString;
|
---|
| 125 | begin
|
---|
| 126 | Rect.Top := 0; Rect.Left:=0; Rect.Right:=63; Rect.Bottom:=63;
|
---|
| 127 | result := false; //default of failure
|
---|
| 128 | try
|
---|
| 129 | Picture.LoadFromFile(Info.ImageFPathName);
|
---|
| 130 | Bitmap.Canvas.StretchDraw(Rect,Picture.Graphic);
|
---|
| 131 | ThumbFName := frmImages.CacheDir + '\Thumb-' + ExtractFileName(Info.ImageFPathName);
|
---|
| 132 | ThumbFName := ChangeFileExt(ThumbFName,'.bmp');
|
---|
| 133 | Bitmap.SaveToFile(ThumbFName); //save to local cache (for upload)
|
---|
| 134 | Info.ThumbFPathName := ThumbFName; //pass info back out.
|
---|
| 135 | Info.ServerThumbFName := ChangeFileExt(Info.ServerFName,'.ABS'); //format is .bmp
|
---|
| 136 | result := true
|
---|
| 137 | except
|
---|
| 138 | on E: Exception do exit;
|
---|
| 139 | end;
|
---|
| 140 | end;
|
---|
| 141 |
|
---|
| 142 |
|
---|
| 143 | function TUploadForm.UploadFile(Info: TUploadImageInfo): boolean;
|
---|
| 144 | //result: true if success, false if failure
|
---|
| 145 | var
|
---|
| 146 | RPCResult,index : AnsiString;
|
---|
| 147 | ImageIEN : AnsiString;
|
---|
| 148 | MsgNum : AnsiString;
|
---|
| 149 | ErrorMsg : AnsiString;
|
---|
| 150 | i : integer;
|
---|
| 151 |
|
---|
| 152 | begin
|
---|
| 153 | RPCBrokerV.remoteprocedure := 'MAGGADDIMAGE';
|
---|
| 154 | RPCBrokerV.Param[0].Value := '.X';
|
---|
| 155 | RPCBrokerV.Param[0].PType := list;
|
---|
| 156 | RPCBrokerV.Param[0].Mult['"NETLOCABS"'] := 'ABS^STUFFONLY';
|
---|
| 157 | RPCBrokerV.Param[0].Mult['"magDFN"'] := '5^' + Info.DFN; {patient dfn}
|
---|
| 158 | RPCBrokerV.Param[0].Mult['"DATETIME"'] := '7^NOW'; {date/time image collected}
|
---|
| 159 | RPCBrokerV.Param[0].Mult['"DATETIMEPROC"'] := '15^' + Info.ImageDateTime; {Date/Time of Procedure}
|
---|
| 160 | if Info.ProcName <> '' then
|
---|
| 161 | RPCBrokerV.Param[0].Mult['"PROC"'] := '6^' + Info.ProcName; {procedure}
|
---|
| 162 | RPCBrokerV.Param[0].Mult['"DESC"'] := '10^(Hard coded Short Description)'; {image description}
|
---|
| 163 | if Info.ShortDesc <> '' then
|
---|
| 164 | RPCBrokerV.Param[0].Mult['"DESC"'] := '10^' + Info.ShortDesc; {image description}
|
---|
| 165 | RPCBrokerV.Param[0].Mult['"DUZ"'] := '8^' + IntToStr(Info.UploadDUZ); {Duz}
|
---|
| 166 |
|
---|
| 167 | //The field (#14) below is used for images that are part of a group,
|
---|
| 168 | //for example a CT exam might contain 30 images. This field
|
---|
| 169 | //contains a pointer back to the Image file (2005), to the
|
---|
| 170 | //object whose type is "GROUP" that points to this object as
|
---|
| 171 | //a member of its group. A pointer to this object will be
|
---|
| 172 | //found in the Object Group multiple of the parent GROUP
|
---|
| 173 | //object.
|
---|
| 174 | //RPCBrokerV.Param[0].Mult['"GROUP"'] := '14^' + group;
|
---|
| 175 |
|
---|
| 176 | RPCBrokerV.Param[0].Mult['"OBJTYPE"'] := '3^' + IntToStr(Info.ObjectType);
|
---|
| 177 | RPCBrokerV.Param[0].Mult['"FileExt"'] := 'EXT^' + Info.Extension;
|
---|
| 178 |
|
---|
| 179 | for i := 0 to Info.pLongDesc.Count - 1 do begin
|
---|
| 180 | index := IntToStr(i);
|
---|
| 181 | while length(index) < 3 do index := '0' + index;
|
---|
| 182 | index :='"LongDescr' + index + '"';
|
---|
| 183 | RPCBrokerV.Param[0].Mult[index] := '11^' + Info.pLongDesc.Strings[i];
|
---|
| 184 | end;
|
---|
| 185 |
|
---|
| 186 | RPCResult := RPCBrokerV.STRcall; { returns ImageIEN^directory/filename }
|
---|
| 187 |
|
---|
| 188 | ImageIEN := Piece(RPCResult,'^',1);
|
---|
| 189 | result := ((ImageIEN <> '0') and (ImageIEN <> '')); // function result.
|
---|
| 190 | if result=false then begin
|
---|
| 191 | // ErrorMsg :='Server Error -- Couldn''t store image information'; <-- original line. //kt 8/7/2007
|
---|
| 192 | ErrorMsg :=DKLangConstW('UploadImages_Server_Error_xx_Couldnxxt_store_image_information'); //kt added 8/7/2007
|
---|
| 193 | MessageDlg(ErrorMsg,mtWarning,[mbOK],0);
|
---|
| 194 | end;
|
---|
| 195 | if result then begin
|
---|
| 196 | Info.ServerPath := Piece(RPCResult,'^',2);
|
---|
| 197 | Info.ServerFName := Piece(RPCResult,'^',3);
|
---|
| 198 | result := frmImages.UploadFile(Info.ImageFPathName,Info.ServerPath,Info.ServerFName);
|
---|
| 199 | if result=false then begin
|
---|
| 200 | // ErrorMsg :='Error uploading image to server'; <-- original line. //kt 8/7/2007
|
---|
| 201 | ErrorMsg :=DKLangConstW('UploadImages_Error_uploading_image_to_server'); //kt added 8/7/2007
|
---|
| 202 | //Application.MessageBox(@ErrorMsg,'Error Uploading Image');
|
---|
| 203 | MessageDlg(ErrorMsg,mtWarning,[mbCancel],0);
|
---|
| 204 | end;
|
---|
| 205 | //Later, put code that also copies the file into the cache directory,
|
---|
| 206 | //so that we don't have to turn around and download it again.
|
---|
| 207 | if result then begin
|
---|
| 208 | RPCBrokerV.remoteprocedure := 'MAG3 TIU IMAGE';
|
---|
| 209 | RPCBrokerV.param[0].ptype := literal;
|
---|
| 210 | RPCBrokerV.param[0].value := ImageIEN;
|
---|
| 211 | RPCBrokerV.Param[1].ptype := literal;
|
---|
| 212 | RPCBrokerV.param[1].value := IntToStr(Info.TIUIEN);
|
---|
| 213 | RPCBrokerV.Call;
|
---|
| 214 | RPCResult := RPCBrokerV.Results[0];
|
---|
| 215 | //returns: success: 1^message; or error: 0^error message
|
---|
| 216 | MsgNum := Piece(RPCResult,'^',1);
|
---|
| 217 | result := (MsgNum = '1');
|
---|
| 218 | if result=false then begin
|
---|
| 219 | // ErrorMsg :='Error associating image with note:' + #13 + Piece(RPCResult,'^',2); <-- original line. //kt 8/7/2007
|
---|
| 220 | ErrorMsg :=DKLangConstW('UploadImages_Error_associating_image_with_notex') + #13 + Piece(RPCResult,'^',2); //kt added 8/7/2007
|
---|
| 221 | MessageDlg(ErrorMsg,mtWarning,[mbCancel],0);
|
---|
| 222 | end;
|
---|
| 223 | end;
|
---|
| 224 | if (result=true) and (MoveCheckBox.Checked) then begin
|
---|
| 225 | DeleteFile(Info.ImageFPathName);
|
---|
| 226 | end;
|
---|
| 227 | if result then begin
|
---|
| 228 | if MakeThumbNail(Info) then begin;
|
---|
| 229 | result := frmImages.UploadFile(Info.ThumbFPathName,Info.ServerPath,Info.ServerThumbFName);
|
---|
| 230 | if result=false then begin
|
---|
| 231 | // ErrorMsg :='Error sending thumbnail image to server.'; <-- original line. //kt 8/7/2007
|
---|
| 232 | ErrorMsg :=DKLangConstW('UploadImages_Error_sending_thumbnail_image_to_serverx'); //kt added 8/7/2007
|
---|
| 233 | MessageDlg(ErrorMsg,mtWarning,[mbOK],0);
|
---|
| 234 | end;
|
---|
| 235 | end;
|
---|
| 236 | end;
|
---|
| 237 | end;
|
---|
| 238 | //returns: result
|
---|
| 239 | end;
|
---|
| 240 |
|
---|
| 241 |
|
---|
| 242 |
|
---|
| 243 | procedure TUploadForm.UploadChosenFiles();
|
---|
| 244 | var i : integer;
|
---|
| 245 | Info: TUploadImageInfo;
|
---|
| 246 |
|
---|
| 247 | begin
|
---|
| 248 | SetupVars;
|
---|
| 249 | Info := TUploadImageInfo.Create();
|
---|
| 250 | Info.pLongDesc := nil;
|
---|
| 251 |
|
---|
| 252 | //Load up info class/record
|
---|
| 253 | Info.ShortDesc := MidStr(ShortDescEdit.Text,1,60);
|
---|
| 254 | if Info.ShortDesc = DefShortDesc then Info.ShortDesc := ' ';
|
---|
| 255 | Info.UploadDUZ := User.DUZ;
|
---|
| 256 | if LongDescMemo.Lines.Count>0 then begin
|
---|
| 257 | Info.pLongDesc := LongDescMemo.Lines;
|
---|
| 258 | end;
|
---|
| 259 | Info.ObjectType := 1; //type 1 is Still Image (jpg). OK to use with .bmp??
|
---|
| 260 | Info.ProcName := 'Picture'; //max length is 10 characters
|
---|
| 261 | Info.ImageDateTime := DateTimeEdit.Text;
|
---|
| 262 | Info.TIUIEN := frmNotes.lstNotes.ItemID;
|
---|
| 263 | Info.UploadDateTime := 'NOW';
|
---|
| 264 | Info.DFN := Patient.DFN;
|
---|
| 265 |
|
---|
| 266 | for i:= 0 to FilesToUploadList.Items.Count-1 do begin
|
---|
| 267 | Info.ImageFPathName := FilesToUploadList.Items.Strings[i];
|
---|
| 268 | Info.Extension := ExtractFileExt(Info.ImageFPathName); //includes '.'
|
---|
| 269 | Info.Extension := MidStr(Info.Extension,2,17); //remove '.'
|
---|
| 270 |
|
---|
| 271 | if not UploadFile(Info) then begin //Upload function passes back filename info in Info class
|
---|
| 272 | //Application.MessageBox('Error uploading image file!','Error');
|
---|
| 273 | end;
|
---|
| 274 |
|
---|
| 275 | end;
|
---|
| 276 | Info.Free;
|
---|
| 277 | end;
|
---|
| 278 |
|
---|
| 279 | procedure TUploadForm.LoadNotesEdit();
|
---|
| 280 | begin
|
---|
| 281 | NoteEdit.Text := frmNotes.tvNotes.Selected.Text;
|
---|
| 282 | end;
|
---|
| 283 |
|
---|
| 284 | {
|
---|
| 285 | procedure TUploadForm.LoadNotesList();
|
---|
| 286 | var
|
---|
| 287 | NoteInfo,s,dateS : AnsiString;
|
---|
| 288 | i : integer;
|
---|
| 289 | const
|
---|
| 290 | U='^';
|
---|
| 291 | begin
|
---|
| 292 | NoteComboBox.Items.Clear;
|
---|
| 293 |
|
---|
| 294 | for i := 0 to frmNotes.lstNotes.Count-1 do with frmNotes.lstNotes do begin
|
---|
| 295 | NoteInfo := Items[i];
|
---|
| 296 | (* example NoteInfo:
|
---|
| 297 | piece# 1: 14321^ //TIU IEN
|
---|
| 298 | piece# 2: PRESCRIPTION CALL IN^ //Document Title
|
---|
| 299 | piece# 3: 3050713.0947^ //Date/Time
|
---|
| 300 | piece# 4: TEST, KILLME D (T0101)^ //Patient
|
---|
| 301 | piece# 5: 133;JANE A DOE;DOE,JANE A^ //Author
|
---|
| 302 | piece# 6: Main_Office^ //Location of Visit
|
---|
| 303 | piece# 7: completed^ //Status of Document
|
---|
| 304 | piece# 8: Visit: 07/13/05;3050713.094721^ //Date/Time
|
---|
| 305 | piece# 9...: ;^^1^^^1^' //?
|
---|
| 306 | *)
|
---|
| 307 | dateS := Piece(Piece(NoteInfo, U, 8), ';', 2);
|
---|
| 308 | s := FormatFMDateTime('mmm dd,yy@hh:nn', MakeFMDateTime(dateS)) + ' -- ';
|
---|
| 309 | // s := Piece(Piece(NoteInfo, U, 8), ';', 1) + ' -- ';
|
---|
| 310 | s := s + Piece(NoteInfo, U, 2) + '; ';
|
---|
| 311 | s := s + 'Author: ' + Piece(Piece(NoteInfo, U, 5), ';', 2) + ', ';
|
---|
| 312 | s := s + Piece(NoteInfo, U, 6);
|
---|
| 313 | NoteComboBox.Items.Add(s);
|
---|
| 314 | end;
|
---|
| 315 | NoteComboBox.ItemIndex := frmNotes.lstNotes.ItemIndex;
|
---|
| 316 | end;
|
---|
| 317 | }
|
---|
| 318 | //Delphi events etc.------------------------------------------------
|
---|
| 319 |
|
---|
| 320 | procedure TUploadForm.UploadButtonClick(Sender: TObject);
|
---|
| 321 | begin
|
---|
| 322 | try
|
---|
| 323 | WebBrowser.Navigate(frmImages.NullImageName);
|
---|
| 324 | except
|
---|
| 325 | on E: Exception do exit;
|
---|
| 326 | end;
|
---|
| 327 | UploadChosenFiles();
|
---|
| 328 | end;
|
---|
| 329 |
|
---|
| 330 | procedure TUploadForm.PickImagesButtonClick(Sender: TObject);
|
---|
| 331 | var i : integer;
|
---|
| 332 | begin
|
---|
| 333 | If OpenDialog.Execute then begin
|
---|
| 334 | for i := 0 to OpenDialog.Files.Count-1 do begin
|
---|
| 335 | FilesToUploadList.Items.Add(OpenDialog.Files.Strings[i]);
|
---|
| 336 | end;
|
---|
| 337 | end;
|
---|
| 338 | end;
|
---|
| 339 |
|
---|
| 340 | procedure TUploadForm.PickOtherButtonClick(Sender: TObject);
|
---|
| 341 | var i : integer;
|
---|
| 342 | begin
|
---|
| 343 | If OpenFileDialog.Execute then begin
|
---|
| 344 | for i := 0 to OpenFileDialog.Files.Count-1 do begin
|
---|
| 345 | FilesToUploadList.Items.Add(OpenFileDialog.Files.Strings[i]);
|
---|
| 346 | end;
|
---|
| 347 | end;
|
---|
| 348 | end;
|
---|
| 349 |
|
---|
| 350 | procedure TUploadForm.FormShow(Sender: TObject);
|
---|
| 351 | begin
|
---|
| 352 | FormRefresh(self);
|
---|
| 353 | FilesToUploadList.Items.Clear;
|
---|
| 354 | LoadNotesEdit();
|
---|
| 355 | SetupVars;
|
---|
| 356 | ShortDescEdit.Text := DefShortDesc;
|
---|
| 357 | end;
|
---|
| 358 |
|
---|
| 359 | procedure TUploadForm.ShortDescEditChange(Sender: TObject);
|
---|
| 360 | begin
|
---|
| 361 | if Length(ShortDescEdit.Text)> 60 then begin
|
---|
| 362 | ShortDescEdit.Text := MidStr(ShortDescEdit.Text,1,60);
|
---|
| 363 | end;
|
---|
| 364 | end;
|
---|
| 365 |
|
---|
| 366 | procedure TUploadForm.ClearImagesButtonClick(Sender: TObject);
|
---|
| 367 | begin
|
---|
| 368 | FilesToUploadList.Items.Clear;
|
---|
| 369 | FilesToUploadListClick(self);
|
---|
| 370 | end;
|
---|
| 371 |
|
---|
| 372 | procedure TUploadForm.FormCreate(Sender: TObject);
|
---|
| 373 | begin
|
---|
| 374 | Bitmap := TBitmap.Create;
|
---|
| 375 | Bitmap.Height := 64;
|
---|
| 376 | Bitmap.Width := 64;
|
---|
| 377 | Picture := TPicture.Create;
|
---|
| 378 | end;
|
---|
| 379 |
|
---|
| 380 | procedure TUploadForm.FormDestroy(Sender: TObject);
|
---|
| 381 | begin
|
---|
| 382 | Bitmap.Free;
|
---|
| 383 | Picture.Free;
|
---|
| 384 | end;
|
---|
| 385 |
|
---|
| 386 | procedure TUploadForm.FilesToUploadListClick(Sender: TObject);
|
---|
| 387 | var
|
---|
| 388 | FileName: AnsiString;
|
---|
| 389 | SelectedItem: integer;
|
---|
| 390 | begin
|
---|
| 391 | SelectedItem := FilesToUploadList.ItemIndex;
|
---|
| 392 | if SelectedItem > -1 then begin
|
---|
| 393 | FileName := FilesToUploadList.Items[SelectedItem];
|
---|
| 394 | //Application.MessageBox('Here I would pass to IE','NOte');
|
---|
| 395 | end else begin
|
---|
| 396 | FileName := frmImages.NullImageName;
|
---|
| 397 | end;
|
---|
| 398 | try
|
---|
| 399 | WebBrowser.Navigate(FileName);
|
---|
| 400 | except
|
---|
| 401 | on E: Exception do exit;
|
---|
| 402 | end;
|
---|
| 403 | end;
|
---|
| 404 |
|
---|
| 405 | procedure TUploadForm.FormRefresh(Sender: TObject);
|
---|
| 406 | begin
|
---|
| 407 | try
|
---|
| 408 | WebBrowser.Navigate(frmImages.NullImageName);
|
---|
| 409 | except
|
---|
| 410 | on E: Exception do exit;
|
---|
| 411 | end;
|
---|
| 412 | end;
|
---|
| 413 |
|
---|
| 414 | end.
|
---|