⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.pas

📁 delphi本地数据库引擎
💻 PAS
📖 第 1 页 / 共 3 页
字号:
      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 + -