📄 main.pas
字号:
unit Main;
interface
uses
{$IFDEF LINUX}
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls,
QDBCtrls, QComCtrls, QExtCtrls, QGrids, QDBGrids, OdacClx,
{$ELSE}
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBCtrls, ExtCtrls, Grids, DBGrids, StdCtrls, ToolWin, ComCtrls, OdacVcl,
{$ENDIF}
Db, OraAlerter, DBAccess, Ora;
type
TfmMain = class(TForm)
OraSession1: TOraSession;
OraSQL: TOraSQL;
edTime: TEdit;
Label1: TLabel;
OraAlerter: TOraAlerter;
ProgressBar: TProgressBar;
btStart: TButton;
btBreak: TButton;
Bevel1: TBevel;
ConnectDialog: TConnectDialog;
lbTime: TLabel;
Label2: TLabel;
lbPercent: TLabel;
cbSmooth: TCheckBox;
OraSession2: TOraSession;
procedure FormShow(Sender: TObject);
procedure btStartClick(Sender: TObject);
procedure OraSQLAfterExecute(Sender: TObject; Result: Boolean);
procedure btBreakClick(Sender: TObject);
procedure OraAlerterEvent(Sender: TObject; Event, Message: String);
procedure cbSmoothClick(Sender: TObject);
procedure OraAlerterTimeOut(Sender: TObject; var Continue: Boolean);
procedure FormHide(Sender: TObject);
private
{ Private declarations }
FCount:integer;
FTime:integer;
T1:TDateTime;
public
{ Public declarations }
end;
var
fmMain: TfmMain;
implementation
uses
OraCall;
{$R *.dfm}
procedure TfmMain.FormShow(Sender: TObject);
begin
edTime.Text := IntToStr(OraSQL.ParamByName('Time').AsInteger);
cbSmooth.Checked := ProgressBar.Smooth;
end;
procedure TfmMain.btStartClick(Sender: TObject);
begin
OraSession1.Connect;
if not OraSession2.Connected then begin
OraSession2.Assign(OraSession1);
OraSession2.Connect;
end;
FTime := StrToInt(edTime.Text);
FCount := 0;
OraSQL.ParamByName('Time').AsInteger := FTime;
ProgressBar.Position := 0;
OraAlerter.Start;
T1 := Time;
OraSQL.Execute;
end;
procedure TfmMain.btBreakClick(Sender: TObject);
begin
//OraSQL.Break; don't work with PL/SQL
OraAlerter.SendEvent('evBreak', '');
end;
procedure TfmMain.OraSQLAfterExecute(Sender: TObject; Result: Boolean);
begin
//OraAlerter.Stop;
MessageBeep(1);
if Result then
MessageBox(0, 'Success!', 'Message', MB_OK)
else
MessageBox(0, 'Fail...', 'Message', MB_OK)
end;
procedure TfmMain.OraAlerterEvent(Sender: TObject; Event, Message: String);
begin
if not (csDestroying in ComponentState) then begin
Inc(FCount);
ProgressBar.Position := Trunc(FCount/FTime*20);
lbTime.Caption := TimeToStr(Time - T1);
lbPercent.Caption := IntToStr(Trunc(FCount/FTime*20)) + '%';
end;
end;
procedure TfmMain.cbSmoothClick(Sender: TObject);
begin
ProgressBar.Smooth := cbSmooth.Checked;
end;
procedure TfmMain.OraAlerterTimeOut(Sender: TObject;
var Continue: Boolean);
begin
MessageBox(0, 'TimeOut', 'Message', MB_OK)
end;
procedure TfmMain.FormHide(Sender: TObject);
begin
if OraSQL.Executing then
OraAlerter.SendEvent('evBreak', '');
end;
initialization
OCIThreaded := False; // bug in Oracle 8.1.5
OCIMutexed := False;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -