main.pas
来自「MysqlFront的源码」· PAS 代码 · 共 1,179 行 · 第 1/3 页
PAS
1,179 行
unit Main;
// -------------------------------------
// HeidiSQL
// Main-window
// -------------------------------------
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus,
StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns,
ActnList, ImgList, Registry, ShellApi, ToolWin, Clipbrd, db, DBCtrls,
SynMemo, synedit, smdbgrid;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
FileNewItem: TMenuItem;
FileCloseItem: TMenuItem;
Window1: TMenuItem;
Help1: TMenuItem;
N1: TMenuItem;
FileExitItem: TMenuItem;
WindowCascadeItem: TMenuItem;
WindowTileItem: TMenuItem;
WindowArrangeItem: TMenuItem;
HelpAboutItem: TMenuItem;
Edit1: TMenuItem;
CopyItem: TMenuItem;
PasteItem: TMenuItem;
WindowMinimizeItem: TMenuItem;
StatusBar: TStatusBar;
ActionList1: TActionList;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
FileNew1: TAction;
FileExit1: TAction;
WindowCascade1: TWindowCascade;
WindowTileHorizontal1: TWindowTileHorizontal;
WindowArrangeAll1: TWindowArrange;
WindowMinimizeAll1: TWindowMinimizeAll;
FileClose1: TWindowClose;
WindowTileVertical1: TWindowTileVertical;
WindowTileItem2: TMenuItem;
ImageList1: TImageList;
Extra1: TMenuItem;
FlushUserPrivileges1: TMenuItem;
N2: TMenuItem;
MenuCopyCSV: TMenuItem;
N3: TMenuItem;
MenuRefresh: TMenuItem;
MenuExport: TMenuItem;
MenuCreateDatabase: TMenuItem;
MenuCreateTable: TMenuItem;
N4: TMenuItem;
MenuDropDatabase: TMenuItem;
MenuDropTable: TMenuItem;
ResetWindowOptions1: TMenuItem;
N5: TMenuItem;
MenuImportTextFile: TMenuItem;
Timer1: TTimer;
Flush1: TMenuItem;
MenuFlushLogs: TMenuItem;
MenuFlushHosts: TMenuItem;
MenuFlushTables: TMenuItem;
MenuFlushTableswithreadlock: TMenuItem;
MenuFlushStatus: TMenuItem;
N6: TMenuItem;
MenuUserManager: TMenuItem;
MenuPreferences: TMenuItem;
N7: TMenuItem;
ImageList2: TImageList;
Readme1: TMenuItem;
N8: TMenuItem;
UserManager: TAction;
ShowAboutBox: TAction;
Diagnostics: TAction;
OptimizeTables1: TMenuItem;
ImExport1: TMenuItem;
ODBCImport1: TMenuItem;
ODBCImport: TAction;
CopyContentsasHTMLTable1: TMenuItem;
CopyHTMLtable: TAction;
Copy2CSV: TAction;
menuOnTheWeb: TMenuItem;
N9: TMenuItem;
N11: TMenuItem;
PrintList: TAction;
CopyTable: TAction;
ControlBar1: TControlBar;
ToolBar2: TToolBar;
ToolButton9: TToolButton;
FileCloseItem2: TToolButton;
ToolButton3: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton12: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ButtonCreateDatabase: TToolButton;
ButtonCreateTable: TToolButton;
ButtonDropDatabase: TToolButton;
ButtonDropTable: TToolButton;
ToolButton4: TToolButton;
ButtonRefresh: TToolButton;
ButtonReload: TToolButton;
ToolButton13: TToolButton;
ButtonImportTextfile: TToolButton;
ButtonExport: TToolButton;
ButtonUserManager: TToolButton;
ToolButton15: TToolButton;
ToolBarData: TToolBar;
DBNavigator1: TDBNavigator;
PanelLimit: TPanel;
CheckBoxLimit: TCheckBox;
EditLimitStart: TEdit;
EditLimitEnd: TEdit;
ButtonOK: TButton;
UpDownLimitStart: TUpDown;
UpDownLimitEnd: TUpDown;
SaveDialog1: TSaveDialog;
SQLFunctions: TPopupMenu;
MenuRun: TMenuItem;
MenuRunSelection: TMenuItem;
N10: TMenuItem;
menuclear: TMenuItem;
OpenDialog1: TOpenDialog;
PopupMenu6: TPopupMenu;
EditUndo1: TEditUndo;
ToolButton14: TToolButton;
ExecuteQuery: TAction;
ExecuteSelection: TAction;
MenuSetFilter: TMenuItem;
menucopy: TMenuItem;
N12: TMenuItem;
menupaste: TMenuItem;
menuload: TMenuItem;
menusave: TMenuItem;
MenuFind: TMenuItem;
FindDialog1: TFindDialog;
SaveDialog2: TSaveDialog;
ExportSettings1: TMenuItem;
Importsettings1: TMenuItem;
OpenDialog2: TOpenDialog;
menuForum: TMenuItem;
Copy2XML: TAction;
ExportData: TAction;
Exportdata1: TMenuItem;
CopyasXMLdata1: TMenuItem;
SearchReplace: TAction;
ReplaceDialog1: TReplaceDialog;
Searchandreplace1: TMenuItem;
ManualCopy: TAction;
ExecuteLine: TAction;
ExecuteLine1: TMenuItem;
HTMLview: TAction;
InsertFiles: TAction;
InsertfilesintoBLOBfields1: TMenuItem;
procedure ShowConnections(Sender: TObject);
procedure FileExit1Execute(Sender: TObject);
procedure connect(Sender: TObject);
procedure FlushClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure ButtonRefreshClick(Sender: TObject);
procedure ButtonExportClick(Sender: TObject);
procedure ButtonCreateDatabaseClick(Sender: TObject);
procedure ButtonCreateTableClick(Sender: TObject);
procedure ButtonDropDatabaseClick(Sender: TObject);
procedure ButtonDropTableClick(Sender: TObject);
procedure ButtonAdvancedPropertiesClick(Sender: TObject);
procedure ResetWindowOptions1Click(Sender: TObject);
procedure ButtonImportTextfileClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure MenuPreferencesClick(Sender: TObject);
procedure Readme1Click(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure UserManagerExecute(Sender: TObject);
procedure ShowAboutBoxExecute(Sender: TObject);
procedure DiagnosticsExecute(Sender: TObject);
procedure ODBCImportExecute(Sender: TObject);
procedure CopyHTMLtableExecute(Sender: TObject);
procedure Copy2CSVExecute(Sender: TObject);
procedure Save2CSVExecute(Sender: TObject);
procedure SaveHTMLTableExecute(Sender: TObject);
procedure PrintListExecute(Sender: TObject);
procedure CopyTableExecute(Sender: TObject);
procedure StatusBarDrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
procedure showstatus(msg: string=''; panel : Integer=0; Icon: Integer=50);
procedure ButtonOKClick(Sender: TObject);
procedure CheckBoxLimitClick(Sender: TObject);
procedure LimitPanelEnter(Sender: TObject);
procedure LimitPanelExit(Sender: TObject);
procedure ButtonSaveSQLClick(Sender: TObject);
procedure ButtonLoadSQLFile(Sender: TObject);
procedure insertFunction(sender: TObject);
procedure menuclearClick(Sender: TObject);
procedure SQLFunctionsPopup(Sender: TObject);
procedure MenuSetFilterClick(Sender: TObject);
procedure OpenURL(Sender: TObject);
function mask(str: String) : String;
procedure FindDialog1Find(Sender: TObject);
procedure ExportSettings1Click(Sender: TObject);
procedure Importsettings1Click(Sender: TObject);
procedure LoadSQLFile(sender: TObject);
procedure ExecuteQueryExecute(Sender: TObject);
procedure ExecuteSelectionExecute(Sender: TObject);
procedure MenuFindClick(Sender: TObject);
procedure Save2XMLExecute(Sender: TObject);
procedure Copy2XMLExecute(Sender: TObject);
procedure DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
procedure ExportDataExecute(Sender: TObject);
procedure SearchReplaceExecute(Sender: TObject);
procedure ReplaceDialog1Replace(Sender: TObject);
procedure ReplaceDialog1Find(Sender: TObject);
procedure ImportWizardExecute(Sender: TObject);
procedure ManualCopyExecute(Sender: TObject);
procedure ExecuteLineExecute(Sender: TObject);
procedure HTMLviewExecute(Sender: TObject);
procedure InsertFilesExecute(Sender: TObject);
procedure debug( msg : String = '' );
private
{ Private declarations }
public
logsqlnum : Integer;
CSVSeparator, CSVEncloser,
CSVTerminator : String[10];
ConvertHTMLEntities : Boolean;
DefaultColWidth : Integer;
NativeFieldTypes : Boolean;
LanguageOffset : Integer;
DataAlwaysEditMode : Boolean;
DataNullBackground : TColor;
debugfile : TextFile;
end;
var
MainForm: TMainForm;
highestcon : Integer; // Remember last connection
appstarted : Boolean = false; // see connections.pas
StatusText : String = 'Initializing...';
StatusIconIndex : Integer = 51;
loadsqlfile : boolean = true; // load sql-file into query-memo at startup?
const
appname = 'HeidiSQL';
regpath = 'Software\' + appname;
appversion = '3.0';
type TMyKey = record
Name : String;
_type : String;
Columns : TStringList
end;
implementation
uses ChildWin, About, connections, exportsql, tbl_properties, loaddata,
usermanager, options, optimizetables, odbcimport, helpers,
printlist, copytable, insertfiles;
{$R *.DFM}
procedure TMainForm.ShowConnections(Sender: TObject);
begin
connform.showmodal;
end;
procedure TMainForm.showstatus(msg: string=''; panel : Integer=0; Icon: Integer=50);
begin
// show Message in statusbar
if panel = 2 then begin
StatusText := msg;
StatusIconIndex := Icon;
end
else
StatusBar.Panels[panel].Text := msg;
StatusBar.Invalidate;
// StatusBar.Update;
end;
procedure TMainForm.FileExit1Execute(Sender: TObject);
begin
Close;
end;
procedure TMainForm.connect(Sender: TObject);
begin
// MDI-Child erzeugen und Verbindung aufbauen...
Screen.Cursor := crSQLWait;
{ create a new MDI child window }
TMDIChild.Create(Application);
Screen.Cursor := crDefault;
end;
procedure TMainForm.FlushClick(Sender: TObject);
var
flushwhat : String;
begin
if sender is TMenuItem then
flushwhat := (sender as TMenuItem).Caption
else if sender is TToolButton then
flushwhat := 'PRIVILEGES';
delete(flushwhat, pos('&', flushwhat), 1);
TMDIChild(Application.Mainform.ActiveMDIChild).ExecQuery('FLUSH ' + flushwhat);
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var
ws : String;
filename : String;
buffer : array[0..MAX_PATH] of char;
begin
if ActiveMDIChild <> nil then
ActiveMDIChild.Close;
if windowstate = wsNormal
then ws := 'Normal' else
if windowstate = wsMinimized
then ws := 'Minimized' else
if windowstate = wsMaximized
then ws := 'Maximized';
with TRegistry.Create do
begin
if OpenKey(regpath, true) then
begin
WriteString('windowstate', ws);
WriteInteger('windowleft', left);
WriteInteger('windowtop', top);
WriteInteger('windowwidth', width);
WriteInteger('windowheight', height);
// Position of Toolbars
WriteInteger('ToolBar2Left', ToolBar2.Left);
WriteInteger('ToolBarDataLeft', ToolBarData.Left);
WriteInteger('ToolBar2Top', ToolBar2.Top);
WriteInteger('ToolBarDataTop', ToolBarData.Top);
// Limit-options
WriteBool('DataLimit', CheckBoxLimit.Checked);
WriteInteger('DataLimitStart', UpDownLimitStart.Position);
WriteInteger('DataLimitEnd', UpDownLimitEnd.Position);
end;
CloseKey;
end;
GetTempPath(MAX_PATH, buffer);
filename := buffer+'\heidisql-preview.';
if FileExists(filename+'html') then
deletefile(filename+'html');
if FileExists(filename+'jpg') then
deletefile(filename+'jpg');
if FileExists(filename+'gif') then
deletefile(filename+'gif');
if FileExists(filename+'bmp') then
deletefile(filename+'bmp');
end;
procedure TMainForm.FormShow(Sender: TObject);
var
ws : String;
mi : TMenuItem;
f : TextFile;
functionname, functionhint : String;
i, pipeposition : Integer;
begin
caption := appname;
with TRegistry.Create do
begin
if OpenKey(regpath, true) then
begin
ws := ReadString('windowstate');
if ws = 'Minimized'
then windowstate := wsMinimized else
if ws = 'Normal' then begin
windowstate := wsNormal;
left := ReadInteger('windowleft');
top := ReadInteger('windowtop');
width := ReadInteger('windowwidth');
height := ReadInteger('windowheight');
end else
if ws = 'Maximized'
then windowstate := wsMaximized;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?