[800] | 1 | unit SearchAnimationU;
|
---|
| 2 |
|
---|
| 3 | interface
|
---|
| 4 |
|
---|
| 5 | uses
|
---|
| 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
---|
| 7 | Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, ImgList;
|
---|
| 8 |
|
---|
| 9 | type
|
---|
| 10 | TfrmTMGServerSearch = class(TForm)
|
---|
| 11 | AnimationImageList: TImageList;
|
---|
| 12 | AnimationImage: TImage;
|
---|
| 13 | lblSearching: TLabel;
|
---|
| 14 | ProgressBar: TProgressBar;
|
---|
| 15 | btnCancel: TBitBtn;
|
---|
| 16 | AnimationTimer: TTimer;
|
---|
| 17 | CheckServerTimer: TTimer;
|
---|
| 18 | lblMessages: TLabel;
|
---|
| 19 | procedure AnimationTimerTimer(Sender: TObject);
|
---|
| 20 | procedure FormCreate(Sender: TObject);
|
---|
| 21 | procedure FormDestroy(Sender: TObject);
|
---|
| 22 | procedure FormShow(Sender: TObject);
|
---|
| 23 | procedure FormHide(Sender: TObject);
|
---|
| 24 | procedure btnCancelClick(Sender: TObject);
|
---|
| 25 | procedure CheckServerTimerTimer(Sender: TObject);
|
---|
| 26 | private
|
---|
| 27 | { Private declarations }
|
---|
| 28 | ImageIndex : integer;
|
---|
| 29 | Picture : TPicture;
|
---|
| 30 | FJobNumber : string;
|
---|
| 31 | procedure UpdatePicture;
|
---|
| 32 | function JobActive(JobNumber : String; OUT PercentDone : Integer;
|
---|
| 33 | OUT Comments : string): Boolean;
|
---|
| 34 | public
|
---|
| 35 | { Public declarations }
|
---|
| 36 | FoundRecsCount : string; //Out parameter only.
|
---|
| 37 | function ActivateForm(JobNumber : string) : integer;
|
---|
| 38 | end;
|
---|
| 39 |
|
---|
| 40 | var
|
---|
| 41 | frmTMGServerSearch: TfrmTMGServerSearch;
|
---|
| 42 |
|
---|
| 43 | implementation
|
---|
| 44 |
|
---|
| 45 | {$R *.dfm}
|
---|
| 46 |
|
---|
| 47 | uses ORNet, ORFn, Trpcb, ORCtrls;
|
---|
| 48 |
|
---|
| 49 | const
|
---|
| 50 | MAX_NUM_IMAGE_INDEX = 15;
|
---|
| 51 |
|
---|
| 52 |
|
---|
| 53 | procedure TfrmTMGServerSearch.FormCreate(Sender: TObject);
|
---|
| 54 | begin
|
---|
| 55 | ImageIndex := 0;
|
---|
| 56 | Picture := TPicture.Create;
|
---|
| 57 | end;
|
---|
| 58 |
|
---|
| 59 | procedure TfrmTMGServerSearch.FormDestroy(Sender: TObject);
|
---|
| 60 | begin
|
---|
| 61 | Picture.Free;
|
---|
| 62 | end;
|
---|
| 63 |
|
---|
| 64 | procedure TfrmTMGServerSearch.FormShow(Sender: TObject);
|
---|
| 65 | begin
|
---|
| 66 | AnimationTimer.Enabled := true;
|
---|
| 67 | CheckServerTimer.Enabled := true;
|
---|
| 68 | end;
|
---|
| 69 |
|
---|
| 70 | procedure TfrmTMGServerSearch.FormHide(Sender: TObject);
|
---|
| 71 | begin
|
---|
| 72 | AnimationTimer.Enabled := false;
|
---|
| 73 | CheckServerTimer.Enabled := false;
|
---|
| 74 | end;
|
---|
| 75 |
|
---|
| 76 | function TfrmTMGServerSearch.ActivateForm(JobNumber : string) : integer;
|
---|
| 77 | begin
|
---|
| 78 | FJobNumber := JobNumber;
|
---|
| 79 | Result := ShowModal;
|
---|
| 80 | end;
|
---|
| 81 |
|
---|
| 82 | procedure TfrmTMGServerSearch.UpdatePicture;
|
---|
| 83 | begin
|
---|
| 84 | Inc(ImageIndex);
|
---|
| 85 | if ImageIndex > MAX_NUM_IMAGE_INDEX then ImageIndex := 0;
|
---|
| 86 | AnimationImageList.GetBitmap(ImageIndex,Picture.Bitmap);
|
---|
| 87 | AnimationImage.Picture.Assign(Picture);
|
---|
| 88 | end;
|
---|
| 89 |
|
---|
| 90 | procedure TfrmTMGServerSearch.AnimationTimerTimer(Sender: TObject);
|
---|
| 91 | begin
|
---|
| 92 | AnimationTimer.Enabled := false;
|
---|
| 93 | UpdatePicture;
|
---|
| 94 | AnimationTimer.Enabled := true;
|
---|
| 95 | end;
|
---|
| 96 |
|
---|
| 97 | procedure TfrmTMGServerSearch.CheckServerTimerTimer(Sender: TObject);
|
---|
| 98 | var PctDone : Integer;
|
---|
| 99 | Comments : string;
|
---|
| 100 | begin
|
---|
| 101 | CheckServerTimer.Enabled := false;
|
---|
| 102 | if JobActive(FJobNumber, PctDone, Comments) = false then begin
|
---|
| 103 | ModalResult := mrOK;
|
---|
| 104 | end;
|
---|
| 105 | ProgressBar.Position := PctDone;
|
---|
| 106 | lblMessages.Caption := Comments;
|
---|
| 107 | CheckServerTimer.Enabled := true;
|
---|
| 108 | end;
|
---|
| 109 |
|
---|
| 110 |
|
---|
| 111 | procedure TfrmTMGServerSearch.btnCancelClick(Sender: TObject);
|
---|
| 112 | begin
|
---|
| 113 | //Do anything needed here before closing form.
|
---|
| 114 | //(Hide function is executed next)
|
---|
| 115 | Self.ModalResult := mrCancel;
|
---|
| 116 | end;
|
---|
| 117 |
|
---|
| 118 |
|
---|
| 119 | function TfrmTMGServerSearch.JobActive(JobNumber : String;
|
---|
| 120 | OUT PercentDone : Integer;
|
---|
| 121 | OUT Comments : string): Boolean;
|
---|
| 122 | //Check the job status
|
---|
| 123 | var cmd, RPCResult : string;
|
---|
| 124 | begin
|
---|
| 125 | RPCBrokerV.remoteprocedure := 'TMG SEARCH CHANNEL';
|
---|
| 126 | RPCBrokerV.param[0].ptype := list;
|
---|
| 127 | RPCBrokerV.Param[0].Value := '.X';
|
---|
| 128 | cmd := 'STATUS';
|
---|
| 129 | cmd := cmd + '^' + JobNumber;
|
---|
| 130 | RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd;
|
---|
[801] | 131 | //RPCBrokerV.Call;
|
---|
| 132 | CallBroker;
|
---|
[800] | 133 | if RPCBrokerV.Results.Count > 0 then begin
|
---|
| 134 | RPCResult := RPCBrokerV.Results[0];
|
---|
| 135 | //Check piece 1 for -1 that indicates an error...
|
---|
| 136 | if Piece(RPCResult,'^',1) = '-1' then begin
|
---|
| 137 | result := false;
|
---|
| 138 | exit;
|
---|
| 139 | end;
|
---|
| 140 | PercentDone := StrToIntDef(piece(RPCResult,'^',2),0);
|
---|
| 141 | Comments := piece(RPCResult,'^',3);
|
---|
| 142 | FoundRecsCount := piece(RPCResult,'^',4);
|
---|
| 143 | Result := (Comments <> '#DONE#');
|
---|
| 144 | end else begin
|
---|
| 145 | result := true;
|
---|
| 146 | end;
|
---|
| 147 | end;
|
---|
| 148 |
|
---|
| 149 |
|
---|
| 150 |
|
---|
| 151 |
|
---|
| 152 | end.
|
---|
| 153 |
|
---|