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

📄 mainfrm.pas

📁 delphi本地数据库引擎
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit MainFrm;

interface

uses
  Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus,
  StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns,
  ActnList, ImgList, ToolWin, TinyDB, Db, ShellApi, BaseFrm;

const
  STDBVersion = '2.9';

type
  TOpenTableMode = (otGrid, otCard);

  TMainForm = class(TBaseForm)
    MainMenu1: TMainMenu;
    FileMenu: TMenuItem;
    FileNewItem: TMenuItem;
    FileOpenItem: TMenuItem;
    FileCloseItem: TMenuItem;
    WindowMenu: TMenuItem;
    HelpMenu: TMenuItem;
    FileN1Item: TMenuItem;
    FileExitItem: TMenuItem;
    WindowCascadeItem: TMenuItem;
    WindowTileItem: TMenuItem;
    WindowArrangeItem: TMenuItem;
    HelpAboutItem: TMenuItem;
    OpenDialog: TOpenDialog;
    ToolsMenu: TMenuItem;
    WindowMinimizeItem: TMenuItem;
    StatusBar: TStatusBar;
    ActionList1: TActionList;
    FileNewDBAction: TAction;
    FileExitAction: TAction;
    FileOpenDBAction: TAction;
    WindowCascadeAction: TWindowCascade;
    WindowTileHorizontalAction: TWindowTileHorizontal;
    WindowArrangeAllAction: TWindowArrange;
    WindowMinimizeAllAction: TWindowMinimizeAll;
    HelpAboutAction: TAction;
    WindowTileVerticalAction: TWindowTileVertical;
    WindowTileItem2: TMenuItem;
    ImageList: TImageList;
    HelpN1: TMenuItem;
    HelpContentAction: TAction;
    HelpContentItem: TMenuItem;
    TinyTable: TTinyTable;
    TinyDatabase: TTinyDatabase;
    CoolBar: TCoolBar;
    ToolBar: TToolBar;
    NewToolButton: TToolButton;
    OpenToolButton: TToolButton;
    ToolButton3: TToolButton;
    CascToolButton: TToolButton;
    HTileToolButton: TToolButton;
    VTileToolButton: TToolButton;
    TopPanel: TPanel;
    ToolbarPanel: TPanel;
    LeftDockPanel: TPanel;
    FileCloseDBAction: TAction;
    ToolCompactItem: TMenuItem;
    ToolRepairItem: TMenuItem;
    ToolN1: TMenuItem;
    ToolChgPwdItem: TMenuItem;
    ToolCompactAction: TAction;
    ToolRepairAction: TAction;
    ToolChgPwdAction: TAction;
    ViewToolBarAction: TAction;
    ViewStatusBarAction: TAction;
    ViewMenu: TMenuItem;
    ViewToolBarItem: TMenuItem;
    ViewStatusBarItem: TMenuItem;
    ViewRefreshAction: TAction;
    ViewN1: TMenuItem;
    ViewRefreshItem: TMenuItem;
    ToolOptionAction: TAction;
    ToolN3: TMenuItem;
    O1: TMenuItem;
    ToolButton1: TToolButton;
    HelpToolButton: TToolButton;
    HelpAdviseAction: TAction;
    HelpBugReportAction: TAction;
    HelpHomepageAction: TAction;
    HelpN2: TMenuItem;
    HelpFeedbackItem: TMenuItem;
    HelpHomepageItem: TMenuItem;
    HelpAdviseItem: TMenuItem;
    HelpBugReportItem: TMenuItem;
    DatabaseMenu: TMenuItem;
    DBNewTableAction: TAction;
    DBDeleteTableAction: TAction;
    DBRenameTableAction: TAction;
    DBEmptyTableAction: TAction;
    DBNewTableItem: TMenuItem;
    DBDeleteTableItem: TMenuItem;
    DBEmptyTableItem: TMenuItem;
    DBRenameTableItem: TMenuItem;
    DBN1: TMenuItem;
    DBDeleteIndexAction: TAction;
    DBDeleteIndexItem: TMenuItem;
    DBN2: TMenuItem;
    DBRenameFieldAction: TAction;
    DBCommentsAction: TAction;
    DBPropertyAction: TAction;
    DBRenameFieldItem: TMenuItem;
    DBN3: TMenuItem;
    DBCommentsItem: TMenuItem;
    DBPropertyItem: TMenuItem;
    DBOpenTableAction: TAction;
    O2: TMenuItem;
    ViewOpenTableGridAction: TAction;
    ViewOpenTableCardAction: TAction;
    ViewN2: TMenuItem;
    ViewOpenTableModeItem: TMenuItem;
    ViewOpenTableGridItem: TMenuItem;
    ViewOpenTableCardItem: TMenuItem;
    NewTableToolButton: TToolButton;
    ToolButton4: TToolButton;
    RefreshToolButton: TToolButton;
    CompactToolButton: TToolButton;
    RepairToolButton: TToolButton;
    ChgPwdToolButton: TToolButton;
    ToolButton12: TToolButton;
    FileN2Item: TMenuItem;
    FileMRU1Item: TMenuItem;
    FileMRU2Item: TMenuItem;
    FileMRU3Item: TMenuItem;
    FileMRU4Item: TMenuItem;
    ToolBar1: TToolBar;
    TableComboBox: TComboBox;
    DBRenameIndexAction: TAction;
    DBRenameIndexItem: TMenuItem;
    OpenAsGridToolButton: TToolButton;
    OpenAsCardToolButton: TToolButton;
    DBSearchAction: TAction;
    DBN4: TMenuItem;
    DBSearchItem: TMenuItem;
    DBFilterAction: TAction;
    DBFilterItem: TMenuItem;
    ProgressPanel: TPanel;
    ProgressBar: TProgressBar;
    OptionsToolButton: TToolButton;
    ToolButton10: TToolButton;
    ToolChgEncAction: TAction;
    ToolChgEncItem: TMenuItem;
    ViewN3Item: TMenuItem;
    ViewLanguageItem: TMenuItem;
    DBDesignTableAction: TAction;
    DBDesignTableItem: TMenuItem;
    FileExportTextAction: TAction;
    FileN3Item: TMenuItem;
    FileExportItem: TMenuItem;
    FileExportTextItem: TMenuItem;
    ToolButton2: TToolButton;
    SplitterPanel: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FileNewDBActionExecute(Sender: TObject);
    procedure FileOpenDBActionExecute(Sender: TObject);
    procedure FileCloseDBActionExecute(Sender: TObject);
    procedure FileExitActionExecute(Sender: TObject);
    procedure HelpContentActionExecute(Sender: TObject);
    procedure HelpAboutActionExecute(Sender: TObject);
    procedure LeftDockPanelDockDrop(Sender: TObject;
      Source: TDragDockObject; X, Y: Integer);
    procedure LeftDockPanelDockOver(Sender: TObject;
      Source: TDragDockObject; X, Y: Integer; State: TDragState;
      var Accept: Boolean);
    procedure LeftDockPanelUnDock(Sender: TObject; Client: TControl;
      NewTarget: TWinControl; var Allow: Boolean);
    procedure LeftDockPanelGetSiteInfo(Sender: TObject;
      DockClient: TControl; var InfluenceRect: TRect; MousePos: TPoint;
      var CanDock: Boolean);
    procedure ToolCompactActionExecute(Sender: TObject);
    procedure ToolRepairActionExecute(Sender: TObject);
    procedure ToolChgPwdActionExecute(Sender: TObject);
    procedure ViewToolBarActionExecute(Sender: TObject);
    procedure ViewStatusBarActionExecute(Sender: TObject);
    procedure ViewRefreshActionExecute(Sender: TObject);
    procedure ToolOptionActionExecute(Sender: TObject);
    procedure HelpAdviseActionExecute(Sender: TObject);
    procedure HelpBugReportActionExecute(Sender: TObject);
    procedure HelpHomepageActionExecute(Sender: TObject);
    procedure DBNewTableActionExecute(Sender: TObject);
    procedure DBDeleteTableActionExecute(Sender: TObject);
    procedure DBRenameTableActionExecute(Sender: TObject);
    procedure DBEmptyTableActionExecute(Sender: TObject);
    procedure DBDeleteIndexActionExecute(Sender: TObject);
    procedure DBRenameFieldActionExecute(Sender: TObject);
    procedure DBCommentsActionExecute(Sender: TObject);
    procedure DBPropertyActionExecute(Sender: TObject);
    procedure DBOpenTableActionExecute(Sender: TObject);
    procedure ViewOpenTableGridActionExecute(Sender: TObject);
    procedure ViewOpenTableCardActionExecute(Sender: TObject);
    procedure FileMRU1ItemClick(Sender: TObject);
    procedure StatusBarResize(Sender: TObject);
    procedure DBRenameIndexActionExecute(Sender: TObject);
    procedure DatabaseMenuClick(Sender: TObject);
    procedure TableComboBoxClick(Sender: TObject);
    procedure TableComboBoxKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBSearchActionExecute(Sender: TObject);
    procedure DBFilterActionExecute(Sender: TObject);
    procedure TinyDatabaseOperationProgress(Sender: TObject; Percent: Integer);
    procedure FormActivate(Sender: TObject);
    procedure ToolChgEncActionExecute(Sender: TObject);
    procedure DBDesignTableActionExecute(Sender: TObject);
    procedure FileExportTextActionExecute(Sender: TObject);
    procedure SplitterPanelMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure SplitterPanelMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure SplitterPanelMouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
  private
    { Private declarations }
    FFieldList: TStrings;
    FOpenTableMode: TOpenTableMode;
    FPassword: string;
    FSptMouseDown: Boolean;
    FSptMouseX: Integer;

    procedure InitFieldList;
    procedure InitMRUMenuItem;
    procedure InitLanguageMenu;
    procedure AdjustCaption(DatabaseName: string);
    procedure SetOpenTableMode(Mode: TOpenTableMode);
    procedure DoParam;
    procedure DoFileDropMessage(var Msg: tagMSG; var Handled: Boolean);
    procedure CheckLanguageMenu(Index: Integer);

    procedure LanguageItemClick(Sender: TObject);
    procedure ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
  public
    { Public declarations }
    procedure TransLanguage; override;
    procedure ShowDockPanel(APanel: TPanel; MakeVisible: Boolean; Client: TControl);
    function GetFieldStrByType(FieldType: TFieldType): string;
    function GetFieldCommentsByType(FieldType: TFieldType): string;
    procedure AdjustUI(Opened: Boolean);
    procedure InitTableComboxBox;
    procedure OpenDatabase(DatabaseName: string);
    procedure BeginProgress;
    procedure EndProgress;
    procedure DoProgress(Percent: Integer);

    property FieldList: TStrings read FFieldList;
    property OpenTableMode: TOpenTableMode read FOpenTableMode write SetOpenTableMode;
    property Password: string read FPassword write FPassword;
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

uses
  Misc, MRUMgr, DBInfoFrm, AboutFrm, OptionFrm, NewDBFrm,
  InputFrm, TableListFrm, DBCommentsFrm, DBPropertyFrm,
  ChgPwdFrm, ChgEncFrm, SearchFrm, FilterFrm, DBTableFrm,
  NewTableFrm, LangMgr;

procedure TMainForm.TransLanguage;
begin
  inherited;
  InitFieldList;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  FFieldList := TStringList.Create;
  MRUManager := TMRUMgr.Create(GetIniFileName);
  InitMRUMenuItem;
  LoadOptions;
  BoundsRect := Options.FormBounds;
  AdjustUI(False);
  SetOpenTableMode(Options.OpenTableMode);
  DragAcceptFiles(Handle, True);
  Application.OnMessage := ApplicationMessage;

  //Init language
  AppLangMgr.InitPath(ExtractFilePath(Application.ExeName));
  InitLanguageMenu;
  if Options.LanguageName = '' then
    AppLangMgr.InitLang(AppLangMgr.DefaultLangIndex)
  else
    AppLangMgr.InitLang(AppLangMgr.IndexOfLangName(Options.LanguageName));
  CheckLanguageMenu(AppLangMgr.CurrentLangIndex);
end;

procedure TMainForm.FormActivate(Sender: TObject);
begin
  OnActivate := nil;
  DoParam;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  FFieldList.Free;
  MRUManager.Free;
  if Options.RememberSize then
  begin
    if WindowState = wsMaximized then
      Options.FormBounds := GetWorkAreaRect
    else
      Options.FormBounds := BoundsRect;
  end;
  SaveOptions;
end;

procedure TMainForm.InitFieldList;
begin
  FFieldList.Clear;
  FFieldList.AddObject('AutoInc=' + AppLangMgr.Trans('ftmAutoInc'), TObject(ftAutoInc));
  FFieldList.AddObject('Smallint=' + AppLangMgr.Trans('ftmSmallint'), TObject(ftSmallint));
  FFieldList.AddObject('Integer=' + AppLangMgr.Trans('ftmInteger'), TObject(ftInteger));
  FFieldList.AddObject('Word=' + AppLangMgr.Trans('ftmWord'), TObject(ftWord));
  FFieldList.AddObject('Largeint=' + AppLangMgr.Trans('ftmLargeint'), TObject(ftLargeint));
  FFieldList.AddObject('Boolean=' + AppLangMgr.Trans('ftmBoolean'), TObject(ftBoolean));
  FFieldList.AddObject('Float=' + AppLangMgr.Trans('ftmFloat'), TObject(ftFloat));
  FFieldList.AddObject('Currency=' + AppLangMgr.Trans('ftmCurrency'), TObject(ftCurrency));
  FFieldList.AddObject('Date=' + AppLangMgr.Trans('ftmDate'), TObject(ftDate));
  FFieldList.AddObject('Time=' + AppLangMgr.Trans('ftmTime'), TObject(ftTime));
  FFieldList.AddObject('DateTime=' + AppLangMgr.Trans('ftmDateTime'), TObject(ftDateTime));
  FFieldList.AddObject('String=' + AppLangMgr.Trans('ftmString'), TObject(ftString));
  FFieldList.AddObject('WideString=' + AppLangMgr.Trans('ftmWideString'), TObject(ftWideString));
  FFieldList.AddObject('FixedChar=' + AppLangMgr.Trans('ftmFixedChar'), TObject(ftFixedChar));
  FFieldList.AddObject('Memo=' + AppLangMgr.Trans('ftmMemo'), TObject(ftMemo));
  FFieldList.AddObject('Graphic=' + AppLangMgr.Trans('ftmGraphic'), TObject(ftGraphic));
  FFieldList.AddObject('Blob=' + AppLangMgr.Trans('ftmBlob'), TObject(ftBlob));
end;

procedure TMainForm.InitMRUMenuItem;
var
  I: Integer;
  MenuItem: TMenuItem;
begin
  for I := 1 to MRUManager.Items.Count do
  begin
    MenuItem := FindComponent('FileMRU' + IntToStr(I) + 'Item') as TMenuItem;
    MenuItem.Caption := '&' + IntToStr(MenuItem.Tag) + ' ' + MRUManager.GetDisplayString(I - 1);
    MenuItem.Visible := True;
  end;
  FileN2Item.Visible := MRUManager.Items.Count > 0;
end;

procedure TMainForm.InitTableComboxBox;
var
  I: Integer;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -