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

📄 editorquery.pas

📁 DBDesigner 4 is a database design system that integrates database design, modelling, creation and ma
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  else
{$ENDIF}
    SQLMemo.Undo;
end;

procedure TEditorQueryForm.RedoMIClick(Sender: TObject);
begin
{$IFDEF USE_SYNEDIT}
  if(DMGUI.UseSQLSyntaxHighlighting)then
    SQLSynEdit.Redo
  else
{$ENDIF}
    SQLMemo.Redo;
end;

procedure TEditorQueryForm.CopyMIClick(Sender: TObject);
begin
  if(GetSQLMemoText<>'')then
    Clipboard.AsText:=GetSQLMemoText;
end;

procedure TEditorQueryForm.CutMIClick(Sender: TObject);
begin
  if(GetSQLMemoText<>'')then
  begin
    Clipboard.AsText:=GetSQLMemoText;
    SetSQLMemoText('');
  end;
end;

procedure TEditorQueryForm.PasteMIClick(Sender: TObject);
begin
  if(Clipboard.AsText<>'')then
{$IFDEF USE_SYNEDIT}
    if(DMGUI.UseSQLSyntaxHighlighting)then
      SQLSynEdit.SelText:=Clipboard.AsText
    else
{$ENDIF}
      SQLMemo.SelText:=Clipboard.AsText;
end;

procedure TEditorQueryForm.CopyMIShow(Sender: TObject);
begin
{$IFDEF USE_SYNEDIT}
  if(DMGUI.UseSQLSyntaxHighlighting)then
    TMenuItem(Sender).Enabled:=(SQLSynEdit.SelText<>'')
  else
{$ENDIF}
    TMenuItem(Sender).Enabled:=(SQLMemo.SelText<>'');
end;

procedure TEditorQueryForm.PasteMIShow(Sender: TObject);
begin
  TMenuItem(Sender).Enabled:=(Clipboard.AsText<>'');
end;

procedure TEditorQueryForm.ClearMIClick(Sender: TObject);
begin
  SetSQLMemoText('');
end;

procedure TEditorQueryForm.SelectAllMIClick(Sender: TObject);
begin
{$IFDEF USE_SYNEDIT}
  if(DMGUI.UseSQLSyntaxHighlighting)then
    SQLSynEdit.SelectAll
  else
{$ENDIF}
    SQLMemo.SelectAll;
end;

procedure TEditorQueryForm.SelectAllMIShow(Sender: TObject);
begin
  TMenuItem(Sender).Enabled:=(GetSQLMemoText<>'');
end;

procedure TEditorQueryForm.DBGridDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept:=False;
  if(Source<>nil)then
    if(Source.ClassnameIs('TEERTable'))then
      Accept:=True;
end;

procedure TEditorQueryForm.StoredSQLBtnClick(Sender: TObject);
begin
  if(Not(StoredSQLBtn.Down))then
  begin
    StoredSQLPnl.Visible:=True;
    StoredSQLSplitter.Visible:=True;
  end
  else
  begin
    StoredSQLSplitter.Visible:=False;
    StoredSQLPnl.Visible:=False;
  end;
end;

procedure TEditorQueryForm.RefreshStoredSQLTreeView(theModel: TEERModel; ExpandedNodesList: TStringList = nil);
var //theSQLCmd: PStoredSQLCmd;
  parentFolderNode, theTreeNode: TTreeNode;
  i, j, k, folderanz: integer;
  foldername, itemname: string;
  ExpandedNodes: TStringList;
  StartFolder: integer;
  SQLCommandsNode,
  ScriptsNode,
  TableSelectsNode,
  HistroyNode: TTreeNode;
begin
  ExpandedNodes:=TStringList.Create;
  try
    if(theEERModel=theModel)then
    begin
      if(ExpandedNodesList<>nil)then
        ExpandedNodes.Text:=ExpandedNodesList.Text
      else
      begin
        //Store expanded nodes
        for i:=0 to StoredSQLTreeView.Items.Count-1 do
        begin
          if(StoredSQLTreeView.Items[i].Expanded)then
            ExpandedNodes.Add(StoredSQLTreeView.Items[i].Text);
        end;
      end;
    end
    else
      theEERModel:=theModel;

    ClearingStoredSQLTreeView:=True;
    StoredSQLTreeView.Items.Clear;
    ClearingStoredSQLTreeView:=False;

    if(theEERModel<>nil)then
    begin
      //Add Initial Nodes
      SQLCommandsNode:=StoredSQLTreeView.Items.Add(nil, DMMain.GetTranslatedMessage('SQL Commands', 85));
      SQLCommandsNode.ImageIndex:=1;
      SQLCommandsNode.Data:=nil;
      ScriptsNode:=StoredSQLTreeView.Items.Add(nil, DMMain.GetTranslatedMessage('Scripts', 86));
      ScriptsNode.ImageIndex:=2;
      ScriptsNode.Data:=nil;
      TableSelectsNode:=StoredSQLTreeView.Items.Add(nil, DMMain.GetTranslatedMessage('Table Selects', 87));
      TableSelectsNode.ImageIndex:=3;
      TableSelectsNode.Data:=nil;
      HistroyNode:=StoredSQLTreeView.Items.Add(nil, DMMain.GetTranslatedMessage('History', 88));
      HistroyNode.ImageIndex:=4;
      HistroyNode.Data:=nil;

      for i:=0 to theEERModel.StoredSQLCmds.Count-1 do
      begin
        if(TStoredSQLCmd(theEERModel.StoredSQLCmds[i]).SQLCmdType=ct_SQLDragDropStores)then
          continue;

        folderanz:=DMMain.GetColumnCountFromSepString(TStoredSQLCmd(theEERModel.StoredSQLCmds[i]).StoredPosition, '/', '');
        case TStoredSQLCmd(theEERModel.StoredSQLCmds[i]).SQLCmdType of
          ct_SQLCmd:
            parentFolderNode:=SQLCommandsNode;
          ct_SQLScript:
            parentFolderNode:=ScriptsNode;
          ct_SQLTableSelect:
            parentFolderNode:=TableSelectsNode;
          ct_SQLHistory:
            parentFolderNode:=HistroyNode;
        else
          parentFolderNode:=nil;
        end;

        //for compatibility with version before 4.0.3.16
        foldername:=DMMain.GetColumnFromSepString(TStoredSQLCmd(theEERModel.StoredSQLCmds[i]).StoredPosition, 0, '/', '');
        if(foldername='SQL Commands')or
          (foldername='Scripts')or
          (foldername='Table Selects')or
          (foldername='History')then
          StartFolder:=1
        else
          StartFolder:=0;


        for j:=StartFolder to folderanz-2 do
        begin
          foldername:=DMMain.GetColumnFromSepString(TStoredSQLCmd(theEERModel.StoredSQLCmds[i]).StoredPosition, j, '/', '');
          theTreeNode:=nil;

          for k:=0 to StoredSQLTreeView.Items.Count-1 do
            if(StoredSQLTreeView.Items[k].Text=foldername)then
              theTreeNode:=StoredSQLTreeView.Items[k];

          if(theTreeNode=nil)then
          begin
            theTreeNode:=StoredSQLTreeView.Items.AddChild(parentFolderNode, foldername);
            theTreeNode.ImageIndex:=0;
            theTreeNode.Data:=nil;
          end;

          parentFolderNode:=theTreeNode;
        end;

        if(parentFolderNode<>nil)then
        begin
          itemname:=DMMain.GetColumnFromSepString(TStoredSQLCmd(theEERModel.StoredSQLCmds[i]).StoredPosition, folderanz-1, '/', '');
          theTreeNode:=StoredSQLTreeView.Items.AddChild(parentFolderNode, itemname);
          theTreeNode.ImageIndex:=TStoredSQLCmd(theEERModel.StoredSQLCmds[i]).SQLCmdType;
          theTreeNode.Data:=theEERModel.StoredSQLCmds[i];
        end;
      end;
    end;

    //Re-expand tree
    if(ExpandedNodes.Count>0)then
      for i:=0 to ExpandedNodes.Count-1 do
      begin
        for j:=0 to StoredSQLTreeView.Items.Count-1 do
          if(ExpandedNodes[i]=StoredSQLTreeView.Items[j].Text)and
            (Not(StoredSQLTreeView.Items[j].Expanded))then
            begin
              StoredSQLTreeView.Items[j].Expanded:=True;
              break;
            end;
      end;
  finally
    ExpandedNodes.Free;
  end;
end;

procedure TEditorQueryForm.StoredSQLTreeViewChange(Sender: TObject;
  Node: TTreeNode);
begin
  {if(ClearingStoredSQLTreeView)then
    Exit;

  if(Node<>nil)then
  begin
    if(Node.Data<>nil)then
      StoredSQLMemo.Text:=TStoredSQLCmd(Node.Data).SQLText
    else
      StoredSQLMemo.Text:='';
  end
  else
    StoredSQLMemo.Text:='';}
end;

procedure TEditorQueryForm.StoredSQLTreeViewCustomDrawItem(
  Sender: TCustomViewControl; Item: TCustomViewItem; Canvas: TCanvas;
  const Rect: TRect; State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
begin
  {with Canvas do
  begin
    Pen.Color:=clDark;
    MoveTo(0, Rect.Bottom-1);
    LineTo(StoredSQLTreeView.Width+30, Rect.Bottom-1);

    if(TTreeNode(Item).ImageIndex>-1)then
      StoredSQLImageList.Draw(Canvas, TTreeNode(Item).ImageIndex, Rect.Left, Rect.Top);
    TextOut(Rect.Left+18, Rect.Top+3, TTreeNode(Item).Text);
  end;

  DefaultDraw := False; //item already complete}
end;

procedure TEditorQueryForm.StoredSQLEditBtnClick(Sender: TObject);
begin
  if(StoredSQLTreeView.Selected<>nil)then
    if(StoredSQLTreeView.Selected.Data<>nil)then
      if(TStoredSQLCmd(StoredSQLTreeView.Selected.Data).SQLText<>'')then
        SetSQLMemoText(TStoredSQLCmd(StoredSQLTreeView.Selected.Data).SQLText);
end;

procedure TEditorQueryForm.StoredSQLExecuteBtnClick(Sender: TObject);
begin
  StoredSQLEditBtnClick(Sender);

  if(GetSQLMemoText<>'')then
    ExecSQLBtnClick(Sender);
end;

procedure TEditorQueryForm.StoredSQLTreeViewEdited(Sender: TObject;
  Node: TTreeNode; var S: WideString);
var itemname: string;
  folderanz: integer;
  i: integer;
begin
  try
    try
      if(s<>'')then
        if(Node<>nil)then
        begin
          if(Node.Data<>nil)then
          begin
            s:=DMMain.ReplaceText(S, '/', ' ');
            folderanz:=DMMain.GetColumnCountFromSepString(TStoredSQLCmd(Node.Data).StoredPosition, '/', '');
            itemname:=DMMain.GetColumnFromSepString(TStoredSQLCmd(Node.Data).StoredPosition, folderanz-1, '/', '');
            TStoredSQLCmd(Node.Data).StoredPosition:=Copy(
              TStoredSQLCmd(Node.Data).StoredPosition, 1,
                Length(TStoredSQLCmd(Node.Data).StoredPosition)-Length(itemname))+
                  S;
          end
          else
          begin
            //A Folder is renamed
            s:=DMMain.ReplaceText(S, '/', ' ');

            //TODO: Replace only the selected folder, not all folders
            //with the same name

            //Replace the Folder's name in all StoredSQLCmds
            for i:=0 to theEERModel.StoredSQLCmds.Count-1 do
              TStoredSQLCmd(theEERModel.StoredSQLCmds[i]).StoredPosition:=DMMain.ReplaceText(TStoredSQLCmd(theEERModel.StoredSQLCmds[i]).StoredPosition, '/'+Node.Text+'/', '/'+s+'/');
          end;
        end;
    except
    end;
  finally
    RefreshStoredSQLTreeView(theEERModel);
  end;
end;

procedure TEditorQueryForm.StoredSQLTreeViewEditing(Sender: TObject;
  Node: TTreeNode; var AllowEdit: Boolean);
var s: string;
  s1: Widestring;
begin
  AllowEdit:=False;

  if(Node<>nil)then
    if(Node.Level>0)then
    begin
      s:=Node.Text;
      if(DMMain.ShowStringEditor('Connecion Name', 'Name:', s))then
        if(s<>'')then
        begin
          s1:=s;
          //Node.Text:=s;
          StoredSQLTreeViewEdited(Sender, Node, s1);
        end;

      //AllowEdit:=True;
    end;
end;

procedure TEditorQueryForm.DeleteSQLCommandMIShow(Sender: TObject);
begin
  DeleteSQLCommandMI.Enabled:=False;

  if(StoredSQLTreeView.Selected<>nil)then
    if(StoredSQLTreeView.Selected.Data<>nil)then
      DeleteSQLCommandMI.Enabled:=True;
end;

procedure TEditorQueryForm.DeleteSQLCommandMIClick(Sender: TObject);
var theSQLCmd: TStoredSQLCmd;
  //ExpandedNodes: TStringList;
  i: integer;
begin
  if(TForm(Application.MainForm).ActiveMDIChild=nil)then
    Exit;

  if(StoredSQLTreeView.EditingItem=nil)then
  begin
    i:=0;
    while(i<StoredSQLTreeView.Items.Count)do
    begin
      if(StoredSQLTreeView.Items[i].Selected)and
        (StoredSQLTreeView.Items[i].Data<>nil)then
      begin
        theSQLCmd:=StoredSQLTreeView.Items[i].Data;

        theEERModel.StoredSQLCmds.Delete(theEERModel.StoredSQLCmds.IndexOf(theSQLCmd));
        theEERModel.ModelHasChanged;
      end;

      inc(i);
    end;

    RefreshStoredSQLTreeView(theEERModel);
  end;
end;

procedure TEditorQueryForm.RefreshStoredSQLTreeMIClick(Sender: TObject);
begin
  RefreshStoredSQLTreeView(theEERModel);
end;

procedure TEditorQueryForm.DBGridDragDrop(Sender, Source: TObject; X,
  Y: Integer);
begin
  if(Source<>nil)then
    if(Source.ClassnameIs('TEERTable'))then
    begin
      //When the table is dragged onto the Gird directly
      if(Sender.ClassNameIs('TDBGrid'))then
        SetSQLMemoText('');

      AddTableToSQLCommand(TEERTable(Source), SQLctSELECT, SQLjtINNER);

      if(Sender.ClassNameIs('TDBGrid'))then
      begin
        ExecSQLBtnClick(self);
        if(DBGrid.Visible)then
          DBGrid.SetFocus;
      end
    end;
end;

procedure TEditorQueryForm.AddTableToSQLCommand(theTable: TEERTable; SQLCmdType, SQLCmdSelectJoinType: integer);
var i, j, k, destTblNr: integer;
  theTableList: TList;
  theInnerJoinTables,
  theTableAliases: TStringList;
  TablesInFromClauseCount: integer;
  s, SQLStr: string;
  theClauses: TStringList;

⌨️ 快捷键说明

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