childwin.pas

来自「MysqlFront的源码」· PAS 代码 · 共 2,085 行 · 第 1/5 页

PAS
2,085
字号
    end;
  end else
  if MessageDlg('Drop field ' + FeldListe.Selected.Caption + ' ?', mtConfirmation, [mbok,mbcancel], 0) = mrok then
  begin
    ExecQuery( 'ALTER TABLE '+mainform.mask(ActualTable)+' DROP '+mainform.mask(FeldListe.Selected.Caption) );
    ShowTableProperties(self);
  end;
end;


procedure TMDIChild.SynMemo1Change(Sender: TObject);
var somechars : Boolean;
begin
  PanelCharsInQueryWindow.Caption :=
    Format('%g', [length(SynMemo1.Text) + 0.0]) + ' Characters';
  somechars := length(SynMemo1.Text) > 0;
  Mainform.ExecuteQuery.Enabled := somechars;
  Mainform.ExecuteSelection.Enabled := length(SynMemo1.SelText) > 0;
  Mainform.ExecuteLine.Enabled := SynMemo1.LineText <> '';
  ButtonSaveSQL.Enabled := somechars;
end;



procedure TMDIChild.CreateTable(Sender: TObject);
begin
  CreateTableForm.showmodal;
end;


procedure TMDIChild.Timer1Timer(Sender: TObject);
var
  tage, stunden, minuten, sekunden : Integer;
begin
  // Host-Uptime
  tage:= uptime div (60*60*24);
  sekunden := uptime mod (60*60*24);
  stunden := sekunden div (60*60);
  sekunden := sekunden mod (60*60);
  minuten  := sekunden div 60;
  sekunden := sekunden mod 60;

  inc(uptime);
  Panel4.Caption := format(strHostRunning + '%d days, %.2d:%.2d:%.2d', [tage,stunden,minuten,sekunden])
end;


procedure TMDIChild.FormActivate(Sender: TObject);
begin
  if ZConn.Connected then
  begin
    Application.Title := Description + ' - ' + main.appname;
    with MainForm do
    begin
      ButtonRefresh.Enabled := true;
      ButtonReload.Enabled := true;
      ButtonExport.Enabled := true;
      ButtonImportTextfile.Enabled := true;
      ButtonCreateTable.Enabled := true;
      ButtonCreateDatabase.Enabled := true;
      ButtonDropDatabase.Enabled := true;
      ButtonDropTable.Enabled := true;
      MenuRefresh.Enabled := true;
      MenuExport.Enabled := true;
      MenuImportTextFile.Enabled := true;
      MenuCreateTable.Enabled := true;
      MenuCreateDatabase.Enabled := true;
      MenuDropDatabase.Enabled := true;
      MenuDropTable.Enabled := true;
      MenuFlushHosts.Enabled := true;
      MenuFlushLogs.Enabled := true;
      FlushUserPrivileges1.Enabled := true;
      MenuFlushTables.Enabled := true;
      MenuFlushTableswithreadlock.Enabled := true;
      MenuFlushStatus.Enabled := true;
      UserManager.Enabled := true;
      Diagnostics.Enabled := true;
      InsertFiles.Enabled := true;
      PrintList.Enabled := true;
      ODBCImport.Enabled := true;
      if (PageControl1.ActivePage = SheetData) or
        (PageControl1.ActivePage = SheetQuery) then begin
        Copy2CSV.Enabled := true;
        CopyHTMLtable.Enabled := true;
        Copy2XML.Enabled := true;
        ExportData.Enabled := true;
      end;
      mainform.ToolBarData.visible := (PageControl1.ActivePage = SheetData);
      mainform.DBNavigator1.DataSource := DataSource1;
    end;
  end;
  timer4.OnTimer(self);
end;

procedure TMDIChild.FormDeactivate(Sender: TObject);
begin
  Application.Title := main.appname;
  with MainForm do
  begin
    ButtonRefresh.Enabled := false;
    ButtonReload.Enabled := false;
    ButtonExport.Enabled := false;
    ButtonImportTextfile.Enabled := false;
    ButtonCreateTable.Enabled := false;
    ButtonCreateDatabase.Enabled := false;
    ButtonDropDatabase.Enabled := false;
    ButtonDropTable.Enabled := false;
    MenuRefresh.Enabled := false;
    MenuExport.Enabled := false;
    MenuImportTextFile.Enabled := false;
    MenuCreateTable.Enabled := false;
    MenuCreateDatabase.Enabled := false;
    MenuDropDatabase.Enabled := false;
    MenuDropTable.Enabled := false;
    MenuFlushHosts.Enabled := false;
    MenuFlushLogs.Enabled := false;
    FlushUserPrivileges1.Enabled := false;
    MenuFlushTables.Enabled := false;
    MenuFlushTableswithreadlock.Enabled := false;
    MenuFlushStatus.Enabled := false;
    UserManager.Enabled := false;
    Diagnostics.Enabled := false;
    InsertFiles.Enabled := false;
    PrintList.Enabled := false;
    ODBCImport.Enabled := false;
    Copy2CSV.Enabled := false;
    CopyHTMLtable.Enabled := false;
    Copy2XML.Enabled := false;
    ExportData.Enabled := false;
  end;
  showstatus('', 1); // empty connected_time
end;



// Primary key abfragen - delete from .. where
procedure TMDIChild.FormShow(Sender: TObject);
begin
  // initialize some values and components:
  timer2.Enabled := true;
  timer3.Enabled := true;
  timer4.Enabled := true;
//  ComboBoxOperator.ItemIndex := 0;

  { TODO : nur bei autoconnected file laden }
  if (paramstr(1) <> '') and Main.loadsqlfile then try
    // load sql-file from paramstr
    SynMemo1.Lines.LoadFromFile(paramstr(1));
    Main.loadsqlfile := false;
  except
    MessageDLG('File could not be opened: ' + paramstr(1), mtError, [mbOK], 0);
  end;
end;

{ Edit field }
procedure TMDIChild.UpdateField(Sender: TObject);
begin
  FieldEditForm.UpdateField := FeldListe.Selected <> nil;
  FieldEditForm.showmodal;
end;

{ Add new field }
procedure TMDIChild.MenuAddFieldClick(Sender: TObject);
begin
  FieldEditForm.UpdateField := false;
  FieldEditForm.showmodal;
end;


procedure TMDIChild.CreateDatabase(Sender: TObject);
var dbname : String;
begin
  // Create new Database:
  if InputQuery('Create new Database...', 'Database Name:', dbname) then begin
    Screen.Cursor := crSQLWait;
    ZQuery3.SQL.Clear();
    ZQuery3.SQL.Add('CREATE DATABASE ' + dbname);
    Try
      ZQuery3.ExecSQL;
      ActualDatabase := dbname;
      ReadDatabasesAndTables(self);
    except
      MessageDLG('Creation failed.'+crlf+'Maybe '''+dbname+''' is not a valid database-name.', mtError, [mbOK], 0)
    end;
    Screen.Cursor := crDefault;
  end;
end;


procedure TMDIChild.Timer2Timer(Sender: TObject);
begin
  // show mdi-form (kr點ke...)
  show;
  Application.ProcessMessages;
  Timer2.Enabled := false;
end;


procedure TMDIChild.MenuAdvancedPropertiesClick(Sender: TObject);
begin
  tbl_properties_form.showmodal;
end;


procedure TMDIChild.TabellenlisteEdited(Sender: TObject; Item: TListItem;
  var S: String);
var i : Integer;
begin
  // edit table-name
  menudroptable.ShortCut := TextToShortCut('Del');

  ExecQuery( 'ALTER TABLE ' + mainform.mask(Item.Caption) + ' RENAME ' + mainform.mask(S) );
  ActualTable := S;
  ShowDBProperties(self);
  // Re-Select Entry
  for i:=0 to Tabellenliste.Items.Count-1 do
    if TabellenListe.Items[i].Caption = S then
      break;
  TabellenListe.Selected := TabellenListe.Items[i];
  TabellenListe.Items[i].Focused := true;
  // Important! Otherwise OnEdited refreshes list too:
  abort;
end;


procedure TMDIChild.MenuRenameTableClick(Sender: TObject);
begin
  // menuitem for edit table-name
  Tabellenliste.Selected.EditCaption;
end;


procedure TMDIChild.MenuViewBlobClick(Sender: TObject);
begin
  PageControl3.ActivePageIndex := 1;
end;


procedure TMDIChild.Timer3Timer(Sender: TObject);
begin
  try
    showstatus('Pinging host...', 2, 51);
    ExecQuery( SQL_PING );
    showstatus('Ready', 2);
  except
    showstatus('Connection to Host terminated abnormally!');
    Timer3.Enabled := false;
  end;
end;


procedure TMDIChild.Timer4Timer(Sender: TObject);
var
  stunden, minuten, sekunden : Integer;
begin
  // calculate and display connection-time
  sekunden := time_connected mod (60*60*24);
  stunden := sekunden div (60*60);
  sekunden := sekunden mod (60*60);
  minuten  := sekunden div 60;
  sekunden := sekunden mod 60;

  inc(time_connected);
  showstatus(format('Connected: %.2d:%.2d:%.2d', [stunden,minuten,sekunden]), 1);
end;


procedure TMDIChild.Clear1Click(Sender: TObject);
begin
  // clear
  if SynMemo3.Focused then
    SynMemo3.Lines.Clear
  else
    synmemo1.Lines.Clear;
end;


procedure TMDIChild.MenuTableCommentClick(Sender: TObject);
begin
  // table-comment
  tablecomment.showmodal;
end;


procedure TMDIChild.Clear2Click(Sender: TObject);
begin
  // clear history-memo
  Screen.Cursor := crHourglass;
  SynMemo2.Lines.Clear;
  Screen.Cursor := crDefault;
end;


procedure TMDIChild.EditQuery1Click(Sender: TObject);
begin
  // take query from history to query-tab
  SynMemo1.Text := SynMemo2.SelText;
  PageControl1.ActivePage := SheetQuery;
  pcChange(self);
end;


procedure TMDIChild.Markall3Click(Sender: TObject);
begin
  // select all in history
  SynMemo2.SelectAll;
end;


procedure TMDIChild.More1Click(Sender: TObject);
begin
  optimize.showmodal;
end;


procedure TMDIChild.MenuOptimizeClick(Sender: TObject);
var
  i : Integer;
begin
  // Optimize tables
  Screen.Cursor := crHourGlass;
  try
    for i:=0 to Tabellenliste.Items.Count - 1 do
    begin
      if Tabellenliste.Items[i].Selected then
        ExecQuery( 'OPTIMIZE TABLE ' + mainform.mask(Tabellenliste.Items[i].Caption) );
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;


procedure TMDIChild.MenuCheckClick(Sender: TObject);
var
  i : Integer;
  tables : String;
begin
  // Check tables
  Screen.Cursor := crHourGlass;
  try
    tables := '';
    for i:=0 to Tabellenliste.Items.Count - 1 do
      if Tabellenliste.Items[i].Selected then begin
        if tables <> '' then
          tables := tables + ', ';
        tables := tables + mainform.mask(Tabellenliste.Items[i].Caption);
      end;
    ExecQuery( 'CHECK TABLE ' + tables + ' QUICK' );
  finally
    Screen.Cursor := crDefault;
  end;
end;


procedure TMDIChild.MenuAnalyzeClick(Sender: TObject);
var
  i : Integer;
  tables : String;
begin
  // Analyze tables
  Screen.Cursor := crHourGlass;
  try
    tables := '';
    for i:=0 to Tabellenliste.Items.Count - 1 do
      if Tabellenliste.Items[i].Selected then begin
        if tables <> '' then
          tables := tables + ', ';
        tables := tables + mainform.mask(Tabellenliste.Items[i].Caption);
      end;
    ExecQuery( 'ANALYZE TABLE ' + tables );
  finally
    Screen.Cursor := crDefault;
  end;
end;


procedure TMDIChild.MenuRepairClick(Sender: TObject);
var
  i : Integer;
  tables : String;
begin
  // Repair tables
  Screen.Cursor := crHourGlass;
  try
    tables := '';
    for i:=0 to Tabellenliste.Items.Count - 1 do
      if Tabellenliste.Items[i].Selected then begin
        if tables <> '' then
          tables := tables + ', ';
        tables := tables + mainform.mask(Tabellenliste.Items[i].Caption);
      end;
    ExecQuery( 'REPAIR TABLE ' + tables + ' QUICK' );
  finally
    Screen.Cursor := crDefault;
  end;
end;


procedure TMDIChild.TabellenlisteDblClick(Sender: TObject);
begin
  // table-doubleclick
  if Tabellenliste.Selected <> nil then begin
    SheetTable.TabVisible := Tabellenliste.Selected <> nil;
    SheetData.TabVisible := Tabellenliste.Selected <> nil;
    ActualTable := Tabellenliste.Selected.Caption;
    ShowTableProperties(self);
  end;
end;


procedure TMDIChild.Timer5Timer(Sender: TObject);
begin
  // can't connect -> close MDI-Child
  timer5.Enabled := false;
  timer4.Enabled := false;
  mainf

⌨️ 快捷键说明

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