main.pas

来自「MysqlFront的源码」· PAS 代码 · 共 1,179 行 · 第 1/3 页

PAS
1,179
字号
      CSVSeparator := ',';
      CSVEncloser := '';
      CSVTerminator := '\r\n';
      ConvertHTMLEntities := true;
      logsqlnum := 300;
      if Valueexists('CSVSeparator') then
        CSVSeparator := ReadString('CSVSeparator');
      if Valueexists('CSVEncloser') then
        CSVEncloser := ReadString('CSVEncloser');
      if Valueexists('CSVTerminator') then
        CSVTerminator := ReadString('CSVTerminator');
      if Valueexists('ConvertHTMLEntities') then
        ConvertHTMLEntities := ReadBool('ConvertHTMLEntities');
      if valueExists('logsqlnum') then
        logsqlnum := ReadInteger('logsqlnum');
      if valueExists('NativeFieldTypes') then
        NativeFieldTypes := ReadBool('NativeFieldTypes')
      else
        NativeFieldTypes := false;

      // Position of Toolbars
      if valueExists('ToolBar2Left') then
        ToolBar2.Left := ReadInteger('ToolBar2Left');
      if valueExists('ToolBarDataLeft') then
        ToolBarData.Left := ReadInteger('ToolBarDataLeft');
      if valueExists('ToolBar2Top') then
        ToolBar2.Top := ReadInteger('ToolBar2Top');
      if valueExists('ToolBarDataTop') then
        ToolBarData.Top := ReadInteger('ToolBarDataTop');

      // SQLFiles-History
      i := 1;
      PopUpMenu6.Items.Clear;
      while ValueExists('SQLFile'+inttostr(i)) do begin
        mi := Tmenuitem.Create(self);
        mi.Caption := inttostr(PopUpMenu6.Items.count+1) + ' ' + ReadString('SQLFile'+inttostr(i));
        mi.OnClick := LoadSQLFile;
        PopUpMenu6.Items.Add(mi);
        inc(i);
      end;

      // Limit-options
      if valueExists('DataLimit') then
        CheckBoxLimit.Checked := ReadBool('DataLimit');
      if valueExists('DataLimitStart') then
        UpDownLimitStart.Position := ReadInteger('DataLimitStart');
      if valueExists('DataLimitEnd') then
        UpDownLimitEnd.Position := ReadInteger('DataLimitEnd');

      // Other values
      DataAlwaysEditMode := true;
      if valueExists('DataAlwaysEditMode') then
        DataAlwaysEditMode := ReadBool('DataAlwaysEditMode');
      if valueExists('DataNullBackground') then
        DataNullBackground := StringToColor(ReadString('DataNullBackground'))
      else
        DataNullBackground := clAqua;
    end;
    CloseKey;
  end;

  // read function-list from function.txt:
  if fileexists(ExtractFilePath(paramstr(0)) + 'function.txt') then
  try
    AssignFile(f, ExtractFilePath(paramstr(0)) + 'function.txt');
    Reset(f);
    i := 1;

    while not eof(f) do
    begin
      functionname := '';
      Readln(f, functionname);
      pipeposition := pos('|', functionname);
      if pipeposition > 0 then // read hint
      begin
        functionhint := copy(functionname, 0, pipeposition-1) + ' - ' + copy(functionname, pipeposition+1, length(functionname)-1);
//        functionnametoinsert := copy(functionname, 0, pos('(', functionname)-1);
        functionname := copy(functionname, 0, pos('(', functionname)-1)
      end else
        functionhint := '';
      if (functionname[1] <> '#') and (length(trim(functionname)) > 0) then
      begin
        mi := TMenuItem.Create(self);
        mi.Caption := trim(functionname);
        mi.Hint := trim(functionhint);
        mi.OnClick := insertFunction;
        if functionname[1] <> ' ' then // build submenu
        begin
          SQLfunctions.Items.add(mi);
          inc(i);
        end else
        begin
          SQLfunctions.Items[i+11].OnClick := nil; // deactivate parent Menuitem
          SQLfunctions.Items[i+11].Add(mi);
        end;
      end;
    end;
  finally
    CloseFile(f);
  end;
  timer1.Enabled := true;
  debug('-------> Programstart!');
end;

procedure TMainform.LoadSQLFile(sender: TObject);
begin
  TMDIChild(Mainform.ActiveMDIChild).LoadSQLClick(sender);
end;

procedure TMainForm.insertFunction(sender: TObject);
var
  t1,t2,f : String;
  oldSelStart : Integer;
  sm : TSynMemo;
begin
  // insert function from function.txt
  if TMDIChild(Mainform.ActiveMDIChild).SynMemo3.Focused then
    sm := TMDIChild(Mainform.ActiveMDIChild).SynMemo3
  else
    sm := TMDIChild(Mainform.ActiveMDIChild).SynMemo1;
  f := TMenuItem(Sender).Hint;
  f := stringreplace(f, '&', '', [rfReplaceAll]);
  f := copy(f, 0, pos(')', f));
  oldSelStart := sm.SelStart;
  t1 := copy(sm.Text, 0, sm.SelStart-1);
  t2 := copy(sm.Text, sm.SelStart, Length(sm.Text) - sm.SelStart);
  sm.Text := t1 + f + t2;
  sm.SelStart := oldSelStart + length(f);
  if not TMDIChild(Mainform.ActiveMDIChild).SynMemo3.Focused then
    TMDIChild(Mainform.ActiveMDIChild).SynMemo1Change(self);
end;



procedure TMainForm.ButtonRefreshClick(Sender: TObject);
begin
  // Refresh
  with TMDIChild(Application.Mainform.ActiveMDIChild) do
  begin
    if PageControl1.ActivePage = SheetHost then
      ShowVariablesAndProcesses(self)
    else if PageControl1.ActivePage = SheetDatabase then
      ShowDBProperties(self)
    else if PageControl1.ActivePage = SheetTable then
      ShowTableProperties(self)
    else if PageControl1.ActivePage = SheetData then
      viewdata(self)
    else
      ReadDatabasesAndTables(self);
  end;
end;

procedure TMainForm.ButtonExportClick(Sender: TObject);
begin
  // Export SQL
  exportsqlform.showmodal;
end;

procedure TMainForm.ButtonCreateDatabaseClick(Sender: TObject);
begin
  // create database
  TMDIChild(Application.Mainform.ActiveMDIChild).CreateDatabase(self);
end;

procedure TMainForm.ButtonCreateTableClick(Sender: TObject);
begin
  // create table
  TMDIChild(Application.Mainform.ActiveMDIChild).CreateTable(self);
end;

procedure TMainForm.ButtonDropDatabaseClick(Sender: TObject);
begin
  // drop db
  with TMDIChild(Application.Mainform.ActiveMDIChild) do
    if ActualDatabase <> '' then
      DBLoeschen(self);
end;

procedure TMainForm.ButtonDropTableClick(Sender: TObject);
begin
  // delete table
  with TMDIChild(Application.Mainform.ActiveMDIChild) do
    if ActualTable <> '' then
      TabelleLoeschen(self);
end;

procedure TMainForm.ButtonAdvancedPropertiesClick(Sender: TObject);
begin
  // Show advanced table-properties
  tbl_properties_form.showmodal;
end;


procedure TMainForm.ResetWindowOptions1Click(Sender: TObject);
var
  reg : TRegistry;
begin
  // reset all options for window-size, height ...

  if ActiveMDIChild <> nil then
  begin
    MessageDlg('Close all open windows before you do this.', mtError, [mbok], 0);
    exit;
  end;

  reg := TRegistry.Create;
  with reg do
  begin
    Access := KEY_ALL_ACCESS;
    if OpenKey(regpath, false) then
    begin
      DeleteValue('childwinstate');
      DeleteValue('childwinleft');
      DeleteValue('childwintop');
      DeleteValue('childwinwidth');
      DeleteValue('childwinheight');
      DeleteValue('querymemoheight');
      DeleteValue('dbtreewidth');
      DeleteValue('sqloutheight');

      CloseKey;
      MessageDlg('All Window-Settings were reset to default values.', mtInformation, [mbok], 0);
    end;
    Free;
  end;

end;

procedure TMainForm.ButtonImportTextfileClick(Sender: TObject);
begin
  // Import Textfile
  loaddataform.showmodal;
end;

procedure TMainForm.Timer1Timer(Sender: TObject);
begin
  // Startup!
  timer1.Enabled := false;
  ShowConnections(self);
end;

procedure TMainForm.MenuPreferencesClick(Sender: TObject);
begin
  // Preferences
  optionsform.showmodal;
end;

procedure TMainForm.Readme1Click(Sender: TObject);
begin
  // show readme.txt
  shellexecute(0, 'open', pchar('readme.txt'), Nil, pchar(ExtractFilePath(paramstr(0))), 5);
end;

procedure TMainForm.FormResize(Sender: TObject);
begin
  StatusBar.Panels[0].Width := width - StatusBar.Panels[1].Width - StatusBar.Panels[2].Width;
end;

procedure TMainForm.UserManagerExecute(Sender: TObject);
begin
  // Usermanager
  usermanagerform.showmodal;
end;

procedure TMainForm.ShowAboutBoxExecute(Sender: TObject);
begin
  // Info-Box
  AboutBox.showmodal;
end;

procedure TMainForm.DiagnosticsExecute(Sender: TObject);
begin
  // optimize / repair... tables
  optimize.showmodal;
end;

procedure TMainForm.ODBCImportExecute(Sender: TObject);
begin
  // ODBC
  ODBCImportForm.ShowModal;
end;


procedure TMainForm.Copy2CSVExecute(Sender: TObject);
begin
  // Copy data in actual dataset as CSV
end;


procedure TMainForm.Save2CSVExecute(Sender: TObject);
begin
  // Save data in actual dataset as CSV
  with TMDIChild(Application.Mainform.ActiveMDIChild) do
  with TSaveDialog.Create(self) do begin
//    Separator := CSVSeparator;
//    Encloser := CSVEncloser;
//    Terminator := CSVTerminator;
    Filter := 'CSV-Files (*.csv)|*.csv|Textfiles (*.txt)|*.txt|All files (*.*)|*.*';
    DefaultExt := 'csv';
    if PageControl1.ActivePage = SheetData then
      FileName := ActualTable
    else
      FileName := sstr(ZQuery1.Sql[0], 20);
    Options := [ofOverwritePrompt,ofEnableSizing];

    if Execute and (FileName <> '') then begin
    end;
  end;
end;


procedure TMainForm.CopyHTMLtableExecute(Sender: TObject);
begin
  // Copy data in actual dataset as HTML
  with TMDIChild(Application.Mainform.ActiveMDIChild) do begin
  end;
end;


procedure TMainForm.SaveHTMLTableExecute(Sender: TObject);
begin
  // Save data in actual dataset as HTML
  with TMDIChild(Application.Mainform.ActiveMDIChild) do begin

    with TSaveDialog.Create(self) do begin
      Filter := 'Hypertext-Files (*.html, *.htm)|*.html;*.htm|All files (*.*)|*.*';
      DefaultExt := 'html';
      if PageControl1.ActivePage = SheetData then
        FileName := ActualTable
      else
        FileName := sstr(ZQuery1.Sql[0], 20);
      Options := [ofOverwritePrompt,ofEnableSizing];

      if Execute and (FileName <> '') then
      begin
      end;
    end;

  end;

end;

procedure TMainForm.PrintListExecute(Sender: TObject);
var
  page : TTabSheet;
begin
  // print
  page := TMDIChild(Mainform.ActiveMDIChild).PageControl1.ActivePage;
  if page.Name = 'SheetData' then
  begin
    // TODO: Print data
  end
  else if (page.Name = 'SheetQuery') then
  begin
    // TODO: Print data
  end
  else
    printlistform.showmodal;
end;


procedure TMainForm.CopyTableExecute(Sender: TObject);
begin
  // copy table
  CopyTableForm.ShowModal;
end;


procedure TMainForm.StatusBarDrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  // clear panel
  StatusBar.Canvas.Pen.Color := StatusBar.Canvas.Brush.Color;
  StatusBar.Canvas.Rectangle(rect);
  StatusBar.Canvas.Pen.Color := clWindowText;
  // draw icon and message
  ImageList1.Draw(StatusBar.Canvas, Rect.Left, Rect.Top, StatusIconIndex);
  StatusBar.Canvas.TextOut(Rect.left + 17, Rect.top+1, StatusText);
end;


procedure TMainForm.ButtonOKClick(Sender: TObject);
begin
  // Set Filter
  TMDIChild(Mainform.ActiveMDIChild).DBTree.SetFocus;
  TMDIChild(Mainform.ActiveMDIChild).viewdata(self);
end;


procedure TMainForm.CheckBoxLimitClick(Sender: TObject);
begin
  // Check/Uncheck popupmenu-item
  if TMDIChild(Mainform.ActiveMDIChild) <> nil then

⌨️ 快捷键说明

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