📄 mainfrm.pas
字号:
Point(Self.ClientWidth div 4, LeftDockPanel.Height));
Source.DockRect := ARect;
end;
end;
procedure TMainForm.LeftDockPanelUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
begin
if (Sender as TPanel).DockClientCount = 1 then
ShowDockPanel(Sender as TPanel, False, nil);
end;
procedure TMainForm.LeftDockPanelGetSiteInfo(Sender: TObject;
DockClient: TControl; var InfluenceRect: TRect; MousePos: TPoint;
var CanDock: Boolean);
begin
CanDock := DockClient is TDBInfoForm;
end;
procedure TMainForm.ToolCompactActionExecute(Sender: TObject);
var
R: Integer;
Ok: Boolean;
begin
R := Application.MessageBox(PChar(AppLangMgr.Trans('Pack the database?')), PChar(Application.Title), 36);
if R = ID_NO then Exit;
BeginProgress;
Ok := TinyDatabase.Compact;
EndProgress;
if Ok then
Application.MessageBox(PChar(AppLangMgr.Trans('Packing finished.')), PChar(Application.Title), 48)
else
Application.MessageBox(PChar(AppLangMgr.Trans('Fail to pack database.')), PChar(Application.Title), 16);
end;
procedure TMainForm.ToolRepairActionExecute(Sender: TObject);
var
R: Integer;
Ok: Boolean;
begin
R := Application.MessageBox(PChar(AppLangMgr.Trans('Repair the database?')), PChar(Application.Title), 36);
if R = ID_NO then Exit;
BeginProgress;
Ok := TinyDatabase.Repair;
EndProgress;
if Ok then
Application.MessageBox(PChar(AppLangMgr.Trans('Repairing finished.')), PChar(Application.Title), 48)
else
Application.MessageBox(PChar(AppLangMgr.Trans('Fail to repair database.')), PChar(Application.Title), 16);
end;
procedure TMainForm.ToolChgPwdActionExecute(Sender: TObject);
var
Value: TChgPwdFormData;
Ok: Boolean;
begin
Value.CheckPwd := TinyDatabase.Encrypted;
if ShowChgPwdForm(Value) then
begin
BeginProgress;
Ok := TinyDatabase.ChangePassword(Value.Password, Value.CheckPwd);
EndProgress;
if Ok then
Application.MessageBox(PChar(AppLangMgr.Trans('Change password successfully.')), PChar(Application.Title), 48)
else
Application.MessageBox(PChar(AppLangMgr.Trans('Fail to change password.')), PChar(Application.Title), 16);
end;
end;
procedure TMainForm.ToolChgEncActionExecute(Sender: TObject);
var
Value: TChgEncFormData;
Ok: Boolean;
begin
Value.Encrypt := TinyDatabase.Encrypted;
Value.EncAlg := TinyDatabase.EncryptAlgoName;
Value.Password := FPassword;
if ShowChgEncForm(Value) then
begin
BeginProgress;
Ok := TinyDatabase.ChangeEncrypt(Value.Encrypt, Value.EncAlg, Value.Password);
EndProgress;
if Ok then
Application.MessageBox(PChar(AppLangMgr.Trans('Change encrypt algorithm successfully.')), PChar(Application.Title), 48)
else
Application.MessageBox(PChar(AppLangMgr.Trans('Fail to change encrypt algorithm.')), PChar(Application.Title), 16);
end;
end;
procedure TMainForm.ToolOptionActionExecute(Sender: TObject);
begin
if ShowOptionForm then
begin
SetOpenTableMode(Options.OpenTableMode);
end;
end;
procedure TMainForm.ViewToolBarActionExecute(Sender: TObject);
begin
ViewToolBarAction.Checked := not ViewToolBarAction.Checked;
CoolBar.Visible := ViewToolBarAction.Checked;
end;
procedure TMainForm.ViewStatusBarActionExecute(Sender: TObject);
begin
ViewStatusBarAction.Checked := not ViewStatusBarAction.Checked;
StatusBar.Visible := ViewStatusBarAction.Checked;
end;
procedure TMainForm.ViewRefreshActionExecute(Sender: TObject);
begin
DBInfoForm.RefreshDBInfo;
end;
procedure TMainForm.DBNewTableActionExecute(Sender: TObject);
begin
DBInfoForm.InvokeNewTableForm;
InitTableComboxBox;
end;
procedure TMainForm.DBDeleteTableActionExecute(Sender: TObject);
begin
DBInfoForm.TableMenuDeleteItemClick(nil);
InitTableComboxBox;
end;
procedure TMainForm.DBRenameTableActionExecute(Sender: TObject);
begin
DBInfoForm.TableMenuRenameItemClick(nil);
end;
procedure TMainForm.DBEmptyTableActionExecute(Sender: TObject);
begin
DBInfoForm.TableMenuEmptyItemClick(nil);
end;
procedure TMainForm.DBDesignTableActionExecute(Sender: TObject);
var
Value: TTableListFormData;
begin
Value.TinyDatabase := TinyDatabase;
Value.TableName := '';
if ShowTableListForm(Value) then
begin
DBInfoForm.DesignTable(Value.TableName);
InitTableComboxBox;
end;
end;
procedure TMainForm.DBDeleteIndexActionExecute(Sender: TObject);
begin
DBInfoForm.IndexMenuDeleteItemClick(nil);
end;
procedure TMainForm.DBRenameFieldActionExecute(Sender: TObject);
begin
DBInfoForm.FieldMenuRenameItemClick(nil);
end;
procedure TMainForm.DBRenameIndexActionExecute(Sender: TObject);
begin
DBInfoForm.IndexMenuRenameItemClick(nil);
end;
procedure TMainForm.DBCommentsActionExecute(Sender: TObject);
begin
ShowDBCommentsForm(TinyDatabase);
end;
procedure TMainForm.DBPropertyActionExecute(Sender: TObject);
begin
ShowDBPropertyForm(TinyDatabase);
end;
procedure TMainForm.DBOpenTableActionExecute(Sender: TObject);
var
Value: TTableListFormData;
begin
Value.TinyDatabase := TinyDatabase;
Value.TableName := '';
if ShowTableListForm(Value) then
begin
DBInfoForm.OpenTable(Value.TableName);
end;
end;
procedure TMainForm.DBSearchActionExecute(Sender: TObject);
var
Value: TSearchFormData;
begin
Value.TinyTable := (ActiveMDIChild as TDBTableForm).TinyTable;
ShowSearchForm(Value);
end;
procedure TMainForm.DBFilterActionExecute(Sender: TObject);
var
Value: TFilterFormData;
begin
Value.TinyTable := (ActiveMDIChild as TDBTableForm).TinyTable;
ShowFilterForm(Value);
end;
procedure TMainForm.ViewOpenTableGridActionExecute(Sender: TObject);
begin
SetOpenTableMode(otGrid);
end;
procedure TMainForm.ViewOpenTableCardActionExecute(Sender: TObject);
begin
SetOpenTableMode(otCard);
end;
procedure TMainForm.FileMRU1ItemClick(Sender: TObject);
var
DatabaseName: string;
MenuItem: TMenuItem;
begin
MenuItem := Sender as TMenuItem;
DatabaseName := MRUManager.Items[MenuItem.Tag - 1];
OpenDatabase(DatabaseName);
end;
procedure TMainForm.StatusBarResize(Sender: TObject);
begin
StatusBar.Panels[0].Width := StatusBar.Width - StatusBar.Panels[1].Width;
ProgressPanel.Top := StatusBar.Top + 2;
ProgressPanel.Left := 0;
ProgressPanel.Width := StatusBar.Panels[0].Width;
end;
procedure TMainForm.DatabaseMenuClick(Sender: TObject);
var
Node: TTreeNode;
NodeData: TNodeData;
begin
DBDeleteTableAction.Enabled := False;
DBRenameTableAction.Enabled := False;
DBEmptyTableAction.Enabled := False;
DBRenameFieldAction.Enabled := False;
DBDeleteIndexAction.Enabled := False;
DBRenameIndexAction.Enabled := False;
DBSearchAction.Enabled := False;
DBFilterAction.Enabled := False;
Node := DBInfoForm.DBStructTreeView.Selected;
if Node = nil then Exit;
if Node.Data = nil then Exit;
NodeData := PNodeData(Node.Data)^;
if NodeData.NodeType = ntTable then
begin
DBDeleteTableAction.Enabled := True;
DBRenameTableAction.Enabled := True;
DBEmptyTableAction.Enabled := True;
end else
if NodeData.NodeType = ntField then
begin
DBRenameFieldAction.Enabled := True;
end else
if NodeData.NodeType = ntIndex then
begin
DBDeleteIndexAction.Enabled := True;
DBRenameIndexAction.Enabled := True;
end;
if ActiveMDIChild is TDBTableForm then
begin
DBSearchAction.Enabled := True;
DBFilterAction.Enabled := True;
end;
end;
procedure TMainForm.TableComboBoxClick(Sender: TObject);
var
TableName: string;
begin
if TableComboBox.Text = '' then
if TableComboBox.Items.Count > 0 then
TableComboBox.ItemIndex := 0;
TableName := TableComboBox.Text;
if TinyDatabase.TableDefs.IndexOf(TableName) <> -1 then
if DBInfoForm <> nil then
DBInfoForm.OpenTable(TableName);
end;
procedure TMainForm.TableComboBoxKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
TableName: string;
begin
if Key = VK_RETURN then
begin
Key := 0;
TableName := TableComboBox.Text;
if TinyDatabase.TableDefs.IndexOf(TableName) = -1 then
begin
Application.MessageBox(PChar(AppLangMgr.Trans('Table name [%s] does not exist.', [TableName])), PChar(Application.Title), 48);
TableComboBox.SelectAll;
TableComboBox.SetFocus;
end else
begin
DBInfoForm.OpenTable(TableName);
end;
end;
end;
procedure TMainForm.TinyDatabaseOperationProgress(Sender: TObject;
Percent: Integer);
begin
DoProgress(Percent);
end;
procedure TMainForm.ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
begin
case Msg.Message of
WM_DROPFILES:
DoFileDropMessage(Msg, Handled);
end;
end;
procedure TMainForm.SplitterPanelMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
FSptMouseDown := True;
FSptMouseX := X;
end;
procedure TMainForm.SplitterPanelMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
FSptMouseDown := False;
end;
procedure TMainForm.SplitterPanelMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
W: Integer;
begin
// because of the bugs of the TSplitter in MDI form under D6.
if FSptMouseDown then
begin
W := SplitterPanel.Left + X - FSptMouseX;
if W < 0 then W := 0;
if W > ClientWidth - 10 then W := ClientWidth - 10;
LeftDockPanel.Width := W;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -