📄 main.pas
字号:
unit Main;
interface
uses
{$IFDEF LINUX}
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls,
QDBCtrls, QComCtrls, QExtCtrls, QGrids, QDBGrids, Variants, OdacClx,
{$ELSE}
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBCtrls, ExtCtrls, Grids, DBGrids, StdCtrls, ToolWin, ComCtrls, OdacVcl,
{$IFNDEF VER130}
Variants,
{$ENDIF}
{$ENDIF}
Db, OraLoader, OraScript, MemDS, DBAccess, Ora, OraSmart, Fetch;
type
TfmMain = class(TForm)
OraSession: TOraSession;
DBGrid: TDBGrid;
DataSource: TDataSource;
ToolBar: TPanel;
btOpen: TButton;
DBNavigator: TDBNavigator;
btClose: TButton;
ConnectDialog: TConnectDialog;
Query: TSmartQuery;
btLoad: TButton;
btCreate: TButton;
btDrop: TButton;
scCreate: TOraScript;
scDrop: TOraScript;
OraLoader: TOraLoader;
btDeleteAll: TButton;
edRows: TEdit;
Label1: TLabel;
rgEvent: TRadioGroup;
rgMode: TRadioGroup;
StatusBar: TStatusBar;
cbUseNet: TCheckBox;
cbDebug: TCheckBox;
procedure btOpenClick(Sender: TObject);
procedure btCloseClick(Sender: TObject);
procedure btCreateClick(Sender: TObject);
procedure btDropClick(Sender: TObject);
procedure btLoadClick(Sender: TObject);
procedure GetColumnData(Sender: TObject; Column: TDPColumn;
Row: Integer; var Value: Variant; var EOF: Boolean);
procedure btDeleteAllClick(Sender: TObject);
procedure QueryAfterOpen(DataSet: TDataSet);
procedure QueryBeforeClose(DataSet: TDataSet);
procedure PutData(Sender: TOraLoader);
procedure FormShow(Sender: TObject);
procedure rgEventClick(Sender: TObject);
procedure rgModeClick(Sender: TObject);
procedure cbUseNetClick(Sender: TObject);
procedure QueryBeforeFetch(DataSet: TCustomDADataSet;
var Cancel: Boolean);
procedure QueryAfterFetch(DataSet: TCustomDADataSet);
procedure cbDebugClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmMain: TfmMain;
implementation
uses
Debug;
{$R *.dfm}
procedure TfmMain.btOpenClick(Sender: TObject);
begin
Query.Open;
end;
procedure TfmMain.btCloseClick(Sender: TObject);
begin
Query.Close;
end;
procedure TfmMain.btCreateClick(Sender: TObject);
begin
scCreate.Execute;
end;
procedure TfmMain.btDropClick(Sender: TObject);
begin
scDrop.Execute;
end;
procedure TfmMain.btLoadClick(Sender: TObject);
var
TickInfo: TTickInfo;
begin
TickInfo := TTickInfo.Create;
try
TickInfo.Start;
OraLoader.Load; // loading rows
StatusBar.Panels[1].Text := 'Time: ' + TickInfo.GetIntervalSt;
if Query.Active then
Query.Refresh;
finally
TickInfo.Free;
end;
end;
procedure TfmMain.GetColumnData(Sender: TObject;
Column: TDPColumn; Row: Integer; var Value: Variant; var EOF: Boolean);
begin
case Column.Index of
0: Value := Row;
1: Value := Random(100);
2: Value := Random*100;
3: Value := 'abc01234567890123456789';
4: Value := Date;
else
Value := Null;
end;
EOF := Row > StrToInt(edRows.Text);
end;
procedure TfmMain.PutData(Sender: TOraLoader);
var
Count: integer;
i: integer;
begin
Count := StrToInt(edRows.Text);
for i := 1 to Count do begin
Sender.PutColumnData(0, i, i);
Sender.PutColumnData('NUM', i, Random(100));
//Sender.PutColumnData(1, i, Random(100));
Sender.PutColumnData(2, i, Random*100);
Sender.PutColumnData(3, i, 'abc01234567890123456789');
Sender.PutColumnData(4, i, Date);
end;
end;
procedure TfmMain.btDeleteAllClick(Sender: TObject);
begin
OraSession.ExecSQL('TRUNCATE TABLE ODAC_Loaded', [Null]);
OraSession.Commit;
if Query.Active then
Query.Refresh;
end;
procedure TfmMain.QueryAfterOpen(DataSet: TDataSet);
begin
StatusBar.Panels[0].Text := 'RecordCount: ' + IntToStr(DataSet.RecordCount);
end;
procedure TfmMain.QueryBeforeClose(DataSet: TDataSet);
begin
StatusBar.Panels[0].Text := '';
end;
procedure TfmMain.FormShow(Sender: TObject);
begin
rgMode.ItemIndex := Integer(OraLoader.LoadMode);
rgEvent.ItemIndex := 1;
cbUseNet.Checked := OraSession.Options.Net;
cbDebug.Checked := Query.Debug;
end;
procedure TfmMain.rgEventClick(Sender: TObject);
begin
if rgEvent.ItemIndex = 0 then begin
OraLoader.OnGetColumnData := GetColumnData;
OraLoader.OnPutData := nil;
end
else begin
OraLoader.OnGetColumnData := nil;
OraLoader.OnPutData := PutData;
end
end;
procedure TfmMain.rgModeClick(Sender: TObject);
begin
OraLoader.LoadMode := TLoadMode(rgMode.ItemIndex);
end;
procedure TfmMain.cbUseNetClick(Sender: TObject);
begin
OraSession.Options.Net := cbUseNet.Checked;
end;
procedure TfmMain.QueryBeforeFetch(DataSet: TCustomDADataSet;
var Cancel: Boolean);
begin
if DataSet.FetchingAll then begin
FetchForm.Show;
Application.ProcessMessages;
Cancel := not FetchForm.Visible;
if Cancel then
StatusBar.Panels[0].Text := 'RecordCount: ' + IntToStr(DataSet.RecordCount);
end;
end;
procedure TfmMain.QueryAfterFetch(DataSet: TCustomDADataSet);
begin
if not DataSet.FetchingAll then begin
FetchForm.Close;
Application.ProcessMessages;
StatusBar.Panels[0].Text := 'RecordCount: ' + IntToStr(DataSet.RecordCount);
end;
end;
procedure TfmMain.cbDebugClick(Sender: TObject);
begin
Query.Debug := cbDebug.Checked;
scCreate.Debug := cbDebug.Checked;
scDrop.Debug := cbDebug.Checked;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -