📄 editorquery.pas
字号:
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 + -