📄 main.pas
字号:
{$O-}
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, ToolWin, ActnMan, ActnCtrls,
ActnMenus, ActnList, XPStyleActnCtrls, StdActns, ImgList, DBGrids, Grids,
DBCtrls, DB, Registry, Menus, Buttons, ShellApi,
ABSMain,
ABSTypes,
ABSConst,
ABSExcept,
ABSConverts,
ABSSecurity,
ABSCompression,
ABSLexer;
const
RegistryComponentAcePath = '\Software\ComponentAce';
RegistryAbsoluteDatabasePath = RegistryComponentAcePath + '\Absolute Database';
RegistryDBManagerPath = RegistryAbsoluteDatabasePath + '\DatabaseManager';
HistoryOpenedFilesSize = 5;
FormCaption = 'Absolute Database Manager';
ShortFormCaption = 'AbsDb Manager';
type
TAppSettings = class(TObject)
private
FFileNames: array of String;
FLastSQMFile: String;
FLastTableName: String;
FLastSql: String;
FLastPageIndex: Integer;
FLastLeft: Integer;
FLastTop: Integer;
FLastWidth: Integer;
FLastHeight: Integer;
FLastPosition: Integer;
FLastWindowState: Integer;
FLastTreeWidth: Integer;
FLastQueryHeight: Integer;
function GetFileName(Index: Integer): String;
function GetFileNamesCount: Integer;
procedure LoadSettings;
public
constructor Create(HistorySize: Integer);
destructor Destroy; override;
procedure ClearFileNames;
procedure AddFileName(FileName: String);
procedure SaveSettings;
property FileNames[Index: Integer]: String read GetFileName;
property FileNamesCount: Integer read GetFileNamesCount;
property LastOpenedFileName: String index 0 read GetFileName;
property LastSQMFile: String read FLastSQMFile write FLastSQMFile;
property LastTableName: String read FLastTableName write FLastTableName;
property LastSQL: String read FLastSQL write FLastSQL;
property LastPageIndex: Integer read FLastPageIndex write FLastPageIndex;
property LastPosition: Integer read FLastPosition write FLastPosition;
property LastWindowState: Integer read FLastWindowState write FLastWindowState;
property LastLeft: Integer read FLastLeft write FLastLeft;
property LastTop: Integer read FLastTop write FLastTop;
property LastWidth: Integer read FLastWidth write FLastWidth;
property LastHeight: Integer read FLastHeight write FLastHeight;
property LastTreeWidth: Integer read FLastTreeWidth write FLastTreeWidth;
property LastQueryHeight: Integer read FLastQueryHeight write FLastQueryHeight;
end;
TQueryRec = record
SQL: String;
Params: array of String;
end;
TQueries = array of TQueryRec;
TSqlHistory = class(TObject)
private
FDatabaseFileName: String;
FQueries: TQueries;
FSqlHistorySize: Integer;
FListBoxSqlHistory: TListBox;
procedure Load;
procedure SetSQL(Index: Integer; Value: String);
function GetSQL(Index: Integer): String;
procedure RepaintListBoxLine(Index: Integer);
public
constructor Create(ListBoxSqlHistory: TListBox; SqlHistorySize: Integer=100);
destructor Destroy; override;
function FindSQL(SQL: String): integer;
procedure Clear;
procedure Save;
procedure SetDatabaseFileName(Name: String);
procedure AddQuery(SQL: String);
procedure DeleteCurrentQuery;
public
property DatabaseFileName: String read FDatabaseFileName write FDatabaseFileName;
property SqlHistorySize: Integer read FSqlHistorySize write FSqlHistorySize;
property Queries: TQueries read FQueries write FQueries;
property SQL[Index: Integer]: String read GetSQL write SetSQL; default;
end;
TfrmMain = class(TForm)
StatusBar: TStatusBar;
ilActions: TImageList;
CoolBar1: TCoolBar;
MainMenu: TActionMainMenuBar;
db: TABSDatabase;
tCurTable: TABSTable;
qQuery: TABSQuery;
odOpenDatabase: TOpenDialog;
dsTable: TDataSource;
dsQuery: TDataSource;
sdSaveDatabase: TSaveDialog;
tFields: TABSTable;
dsFields: TDataSource;
tIndexes: TABSTable;
dsIndexes: TDataSource;
tIndexColumns: TABSTable;
pmTables: TPopupMenu;
CreateTable1: TMenuItem;
RenameTable1: TMenuItem;
DeleteSelectedTables1: TMenuItem;
RestuctureTable1: TMenuItem;
N1: TMenuItem;
RefreshTableList1: TMenuItem;
dstIndexColumns: TDataSource;
tFieldssortorder: TAutoIncField;
tFieldsName: TStringField;
tFieldsType: TStringField;
tFieldsSize: TIntegerField;
tFieldsRequired: TBooleanField;
tFieldsDefault: TStringField;
tIndexesid: TAutoIncField;
tIndexessortorder: TAutoIncField;
tIndexesType: TStringField;
tIndexesName: TStringField;
tIndexesColumns: TStringField;
tIndexColumnsindexid: TIntegerField;
tIndexColumnssortorder: TAutoIncField;
tIndexColumnsCaseInsensitive: TBooleanField;
tIndexColumnsAsc: TBooleanField;
tIndexColumnsMaxIndexedSize: TIntegerField;
tFieldsid: TAutoIncField;
tIndexColumnsColumnID: TIntegerField;
tIndexColumnsColumnName: TStringField;
tFieldsMinValue: TStringField;
tFieldsMaxValue: TStringField;
tFieldsBLOBCompressionAlgorithm: TStringField;
tFieldsBLOBBlockSize: TIntegerField;
tFieldsBLOBCompressionMode: TIntegerField;
pMainPanel: TPanel;
pnlTree: TPanel;
tvDatabase: TTreeView;
Splitter1: TSplitter;
ActionManager: TActionManager;
aCreateDatabase: TAction;
aOpenDatabase: TAction;
aReopenFile: TAction;
aCloseDatabase: TAction;
aExit: TAction;
aCreateTable: TAction;
aDeleteTables: TAction;
aRestructureTable: TAction;
aRenameTable: TAction;
aChangeDatabaseParams: TAction;
aCompactDatabase: TAction;
aRepairDatabase: TAction;
aAbout: TAction;
aRefreshTableList: TAction;
aRefreshTableData: TAction;
aRefreshTableStructure: TAction;
aExecSQL: TAction;
aRefreshDatabaseParams: TAction;
aBorrowStructure: TAction;
ilDbTree: TImageList;
ActionToolBar2: TActionToolBar;
aPrintStructure: TAction;
pcTables: TPageControl;
tsStructure: TTabSheet;
Splitter2: TSplitter;
Panel2: TPanel;
Label3: TLabel;
dbgFields: TDBGrid;
Panel3: TPanel;
Label4: TLabel;
dbgIndexes: TDBGrid;
tsTableData: TTabSheet;
dbgTableData: TDBGrid;
tsSQL: TTabSheet;
Splitter3: TSplitter;
pcSQL: TPageControl;
tsData: TTabSheet;
dbgQuery: TDBGrid;
tsLog: TTabSheet;
reLog: TRichEdit;
pnlQuery: TPanel;
tsDatabase: TTabSheet;
Label1: TLabel;
Label7: TLabel;
Label10: TLabel;
Label8: TLabel;
Label9: TLabel;
cbEncrypted: TCheckBox;
ePageSize: TEdit;
ePageCountInExtent: TEdit;
eCryproAlgorithm: TEdit;
eDatabaseFileName: TEdit;
eDatabaseFileSize: TEdit;
Label11: TLabel;
eMaxConnections: TEdit;
BorrowStructure1: TMenuItem;
PrintTablesStructure1: TMenuItem;
pmDataBase: TPopupMenu;
ChangeDatabaseParams1: TMenuItem;
CompactDatabase1: TMenuItem;
RepairDatabase1: TMenuItem;
aCopyTables: TAction;
CopySelectedTables1: TMenuItem;
aOpenSQLScript: TAction;
aSaveSQLScript: TAction;
sdSql: TSaveDialog;
odSql: TOpenDialog;
aSyntaxHighlighting: TAction;
aEmptyTables: TAction;
About1: TMenuItem;
tsExportToSql: TTabSheet;
reExportToSql: TRichEdit;
sdExportToSql: TSaveDialog;
aExportAsSqlToScreen: TAction;
aExportAsSqlToFile: TAction;
GroupBox1: TGroupBox;
cbAddDropTable: TCheckBox;
cbStructure: TCheckBox;
cbData: TCheckBox;
cbBlobSettings: TCheckBox;
cbFieldNamesInInsert: TCheckBox;
Button1: TButton;
tFieldsObjectID: TIntegerField;
aMakeExeDatabase: TAction;
btnExpotrAsSqlToScreeen: TButton;
btnExpotrAsSqlToFile: TButton;
Panel7: TPanel;
Label2: TLabel;
lRecordCount: TLabel;
DBNavigator1: TDBNavigator;
Panel10: TPanel;
Label6: TLabel;
lSQLRecordCount: TLabel;
lReadOnly: TLabel;
DBNavigator2: TDBNavigator;
aExecSQLScript: TAction;
aExportToExcel: TAction;
ToolBar2: TToolBar;
ToolButton2: TToolButton;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
aHelp: TAction;
aChangeLog: TAction;
pmQuery: TPopupMenu;
mSelectAll: TMenuItem;
mSelectCount: TMenuItem;
aCut: TEditCut;
aCopy: TEditCopy;
aPaste: TEditPaste;
aSelectAll: TEditSelectAll;
aUndo: TEditUndo;
aDelete: TEditDelete;
pmSQL: TPopupMenu;
Cut1: TMenuItem;
Undo1: TMenuItem;
N2: TMenuItem;
Copy1: TMenuItem;
Paste1: TMenuItem;
N3: TMenuItem;
SelectAll1: TMenuItem;
Delete1: TMenuItem;
aGoToTableData: TAction;
N4: TMenuItem;
mCurrentTable: TMenuItem;
mFieldList: TMenuItem;
reSQL: TRichEdit;
Panel9: TPanel;
cbRequestLive: TCheckBox;
cbHighlighting: TCheckBox;
Panel6: TPanel;
Label14: TLabel;
lColumn: TLabel;
Panel5: TPanel;
Label12: TLabel;
lLine: TLabel;
Panel1: TPanel;
ToolBar3: TToolBar;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton3: TToolButton;
ToolButton15: TToolButton;
ToolButton12: TToolButton;
ToolBar4: TToolBar;
ToolButton16: TToolButton;
pSqlHistory: TPanel;
Splitter4: TSplitter;
aShowSqlHistory: TAction;
lbSqlHistory: TListBox;
Label5: TLabel;
reTemp: TRichEdit;
SpeedButton1: TSpeedButton;
aSqlOptimization: TAction;
aDelFromSqlHistory: TAction;
pmSqlHistory: TPopupMenu;
DeletefromSQLHistory1: TMenuItem;
aQueryMaker: TAction;
procedure aExitExecute(Sender: TObject);
procedure aCloseDatabaseExecute(Sender: TObject);
procedure aOpenDatabaseExecute(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure aRefreshTableListExecute(Sender: TObject);
procedure aCreateDatabaseExecute(Sender: TObject);
procedure aCreateTableExecute(Sender: TObject);
procedure lbTableListClick(Sender: TObject);
procedure aRefreshTableDataExecute(Sender: TObject);
procedure tCurTableAfterPost(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
procedure aRefreshTableStructureExecute(Sender: TObject);
procedure aRestructureTableExecute(Sender: TObject);
procedure aDeleteTablesExecute(Sender: TObject);
procedure aExecSQLExecute(Sender: TObject);
procedure reSQLKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure reSQLKeyPress(Sender: TObject; var Key: Char);
procedure aCompactDatabaseExecute(Sender: TObject);
procedure aRenameTableExecute(Sender: TObject);
procedure aReopenFileExecute(Sender: TObject);
procedure tFieldsAfterPost(DataSet: TDataSet);
procedure tFieldsBeforeDelete(DataSet: TDataSet);
procedure tIndexColumnsBeforeInsert(DataSet: TDataSet);
procedure tIndexesBeforeInsert(DataSet: TDataSet);
procedure tvDatabaseKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure tvDatabaseCollapsing(Sender: TObject; Node: TTreeNode;
var AllowCollapse: Boolean);
procedure tvDatabaseChange(Sender: TObject; Node: TTreeNode);
procedure aRefreshDatabaseParamsExecute(Sender: TObject);
procedure aChangeDatabaseParamsExecute(Sender: TObject);
procedure aRepairDatabaseExecute(Sender: TObject);
procedure aBorrowStructureExecute(Sender: TObject);
procedure dbgTableDataDblClick(Sender: TObject);
procedure aAboutExecute(Sender: TObject);
procedure aPrintStructureExecute(Sender: TObject);
procedure tCurTableEditError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure tCurTablePostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure tCurTableDeleteError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure tCurTableAfterScroll(DataSet: TDataSet);
procedure qQueryAfterScroll(DataSet: TDataSet);
procedure tvDatabaseDblClick(Sender: TObject);
procedure tvDatabaseMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure aCopyTablesExecute(Sender: TObject);
procedure aOpenSQLScriptExecute(Sender: TObject);
procedure aSaveSQLScriptExecute(Sender: TObject);
procedure reSQLSelectionChange(Sender: TObject);
procedure reSQLChange(Sender: TObject);
procedure aSyntaxHighlightingExecute(Sender: TObject);
procedure aEmptyTablesExecute(Sender: TObject);
procedure aExportAsSqlToScreenExecute(Sender: TObject);
procedure aExportAsSqlToFileExecute(Sender: TObject);
procedure cbStructureClick(Sender: TObject);
procedure cbDataClick(Sender: TObject);
procedure aMakeExeDatabaseExecute(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure aExecSQLScriptExecute(Sender: TObject);
procedure aExportToExcelExecute(Sender: TObject);
procedure pcTablesChange(Sender: TObject);
procedure aHelpExecute(Sender: TObject);
procedure pmQueryClick(Sender: TObject);
procedure aGoToTableDataExecute(Sender: TObject);
procedure aShowSqlHistoryExecute(Sender: TObject);
procedure aSqlOptimizationExecute(Sender: TObject);
procedure aChangeLogExecute(Sender: TObject);
procedure lbSqlHistoryClick(Sender: TObject);
procedure lbSqlHistoryDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure lbSqlHistoryKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure aDelFromSqlHistoryExecute(Sender: TObject);
procedure lbSqlHistoryMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure aQueryMakerExecute(Sender: TObject);
private
{ Private declarations }
SqlHistory: TSqlHistory;
FSQLExec: Boolean;
FOldActilePage: TTabSheet;
procedure OpenDatabaseFile(FileName: String);
procedure RefreshLastOpenedFiles;
procedure SelectTable(Name: String='');
function GetCurrentTableName: String;
procedure GetSelectedTableNames(List: TStrings);
procedure FillFieldDefsAndIndexDefs(FieldDefs: TABSAdvFieldDefs;
IndexDefs: TABSAdvIndexDefs);
procedure AddToLog(Message: String = '');
procedure ShowLog;
procedure SetAllDatabaseActionsEnabled(Flag: Boolean);
procedure SetAllTableActionsEnabled(Flag: Boolean);
function ExtractNumber(Txt, Prefix: String): Integer;
procedure SQLHiLight;
procedure ExportToSql(ToFile: Boolean);
public
{ Public declarations }
Settings: TAppSettings;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -