* added popup-menu options to create string constant from SQL statement, and to clean up pascal string with SQL statement. Enables copy/paste from/to code.

git-svn-id: trunk@27425 -
This commit is contained in:
michael 2010-09-21 13:52:35 +00:00
parent 5106674f1f
commit 19d1bedc52
2 changed files with 162 additions and 12 deletions

View File

@ -12,8 +12,8 @@ object SQLStringsPropertyEditorDlg: TSQLStringsPropertyEditorDlg
LCLVersion = '0.9.29' LCLVersion = '0.9.29'
object ButtonsPanel: TButtonPanel object ButtonsPanel: TButtonPanel
Left = 6 Left = 6
Height = 34 Height = 35
Top = 317 Top = 316
Width = 482 Width = 482
OKButton.Name = 'OKButton' OKButton.Name = 'OKButton'
OKButton.Caption = '&OK' OKButton.Caption = '&OK'
@ -76,7 +76,7 @@ object SQLStringsPropertyEditorDlg: TSQLStringsPropertyEditorDlg
end end
object PageControl: TPageControl object PageControl: TPageControl
Left = 0 Left = 0
Height = 281 Height = 280
Top = 30 Top = 30
Width = 494 Width = 494
ActivePage = EditorTabSheet ActivePage = EditorTabSheet
@ -84,11 +84,11 @@ object SQLStringsPropertyEditorDlg: TSQLStringsPropertyEditorDlg
TabIndex = 0 TabIndex = 0
TabOrder = 2 TabOrder = 2
object EditorTabSheet: TTabSheet object EditorTabSheet: TTabSheet
ClientHeight = 253 ClientHeight = 249
ClientWidth = 490 ClientWidth = 490
inline SQLEditor: TSynEdit inline SQLEditor: TSynEdit
Left = 0 Left = 0
Height = 253 Height = 249
Top = 0 Top = 0
Width = 490 Width = 490
Align = alClient Align = alClient
@ -98,6 +98,7 @@ object SQLStringsPropertyEditorDlg: TSQLStringsPropertyEditorDlg
Font.Quality = fqNonAntialiased Font.Quality = fqNonAntialiased
ParentColor = False ParentColor = False
ParentFont = False ParentFont = False
PopupMenu = PMSQL
TabOrder = 0 TabOrder = 0
Gutter.Width = 61 Gutter.Width = 61
Gutter.MouseActions = < Gutter.MouseActions = <
@ -123,6 +124,30 @@ object SQLStringsPropertyEditorDlg: TSQLStringsPropertyEditorDlg
Option = 0 Option = 0
Priority = 0 Priority = 0
end> end>
RightGutter.Width = 0
RightGutter.MouseActions = <
item
Shift = []
ShiftMask = []
Button = mbLeft
ClickCount = ccAny
ClickDir = cdDown
Command = 13
MoveCaret = False
Option = 0
Priority = 0
end
item
Shift = []
ShiftMask = []
Button = mbRight
ClickCount = ccSingle
ClickDir = cdUp
Command = 12
MoveCaret = False
Option = 0
Priority = 0
end>
Highlighter = SQLHighlighter Highlighter = SQLHighlighter
Keystrokes = < Keystrokes = <
item item
@ -571,7 +596,7 @@ object SQLStringsPropertyEditorDlg: TSQLStringsPropertyEditorDlg
BracketHighlightStyle = sbhsBoth BracketHighlightStyle = sbhsBoth
inline SynGutterPartList1: TSynGutterPartList inline SynGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks object SynGutterMarks1: TSynGutterMarks
Width = 23 Width = 24
end end
object SynGutterLineNumber1: TSynGutterLineNumber object SynGutterLineNumber1: TSynGutterLineNumber
Width = 21 Width = 21
@ -676,10 +701,12 @@ object SQLStringsPropertyEditorDlg: TSQLStringsPropertyEditorDlg
end> end>
end end
end end
inline SynRightGutterPartList1: TSynRightGutterPartList
end
end end
end end
object ResultTabSheet: TTabSheet object ResultTabSheet: TTabSheet
ClientHeight = 253 ClientHeight = 249
ClientWidth = 490 ClientWidth = 490
object ResultDBGrid: TDBGrid object ResultDBGrid: TDBGrid
Left = 0 Left = 0
@ -728,7 +755,7 @@ object SQLStringsPropertyEditorDlg: TSQLStringsPropertyEditorDlg
left = 284 left = 284
top = 156 top = 156
Bitmap = { Bitmap = {
4C69040000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 4C69050000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00EAC39DFFE6BF96FFE4BB92FFE4BB92FFD1A06CF5D09E6DF6CC96 FF00FFFFFF00EAC39DFFE6BF96FFE4BB92FFE4BB92FFD1A06CF5D09E6DF6CC96
5FDAC479427EB2673C09FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 5FDAC479427EB2673C09FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00E5BE96FFFFFFFEFFFDF3E9FFFDF3EAFFFCF2E8FFFAEFE3FFFAF2 FF00FFFFFF00E5BE96FFFFFFFEFFFDF3E9FFFDF3EAFFFCF2E8FFFAEFE3FFFAF2
@ -856,7 +883,58 @@ object SQLStringsPropertyEditorDlg: TSQLStringsPropertyEditorDlg
00000000000000000052000000FF000000FF0000001A00000000000000000000 00000000000000000052000000FF000000FF0000001A00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000 00000000000000000000000000000048783B004B7CDA004A7BE300487847FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00004A7BE50A69A6FF0B6DABFF004A7BF50048
7844FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00004A7BED0C72B2FF107DC1FF0A6BA9FF004A
7BDA00698A02008B9C82008B9C13FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000049796F035286F40F7ABCFF107DC1FF0152
84F200859ACE008B9CFF008B9C29FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF0000487802004A7B95014E80F40B76B2FF0188
A1FF32AEBEFE1DA0B1F2008B9C3DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000064878100889CFE41BD
CDFF77DEEBFF1769B0F70036A0E4018FA0D2008C9D77008B9C15FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00008B9C5A018D9EF64FC8D8FF68DC
ECFF336DC8FF0D1BABFF62B1D7FF72DCEAFF43BDCCF70990A2F6018E9F9F008B
9C1BFFFFFF00FFFFFF00FFFFFF00FFFFFF00008B9C5F008D9EEB29A5BBF6284A
BBFF1D38B8FF61D8F6FF63EAFDFF6CEBFDFF7DEEFDFF88EAF8FF45BECDFA058F
9FF7008E9FA3008B9C40008B9C02FFFFFF00FFFFFF00008B9C070024A1D71342
ADFC84EAFBFF6BECFDFF84EFFDFF6DECFDFF52E9FDFF44E5FBFF65E3F3FF77DD
EBFF49C1CFFE1B9EAEF3008C9DEAFFFFFF00FFFFFF00FFFFFF00007F9C5F2FB0
C0F58AEFFDFF5FEAFDFF61EBFDFF52E9FDFF3CE6FDFF2ADBF3FF18D0E7FF10C6
DCFF49D2E4FF67D4E2FF018D9FE9FFFFFF00FFFFFF00FFFFFF00008B9C1A1194
A5F78BEDFBFF3CE5FCFF37E4FBFF2FDEF6FF23D7EEFF14CDE5FF04C3DBFF03C2
DAFF56D6E6FF33B6C6FB008E9FA8FFFFFF00FFFFFF00FFFFFF00FFFFFF00018E
A0D45ECFDDFF46DAEDFF18D0E7FF11CBE3FF07C4DCFF03C2DAFF03C2DAFF4CD3
E4FF58CDDCFF048E9FF4008B9C1CFFFFFF00FFFFFF00FFFFFF00FFFFFF00008B
9C431A9BABF66CDAE8FF10C5DCFF03C2DAFF03C2DAFF15C6DCFF5BD7E7FF56C8
D6FE058FA0F1008B9C3FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00008E9FC536B5C5FA5FD8E7FF26CADFFF4ED4E5FF6DD9E7FF32B4C5FB008D
9EE6008B9C26FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00008B9C13008D9EE24FC3D2FD5BD3E1FF30B5C6FA0890A1F6008D9FA9008B
9C14FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00008B9C1F008C9DED008D9EEC008D9E9E008B9C21FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00
} }
end end
object PMSQL: TPopupMenu
Images = ImageList
left = 155
top = 101
object MICheck: TMenuItem
Caption = 'Check syntax'
ImageIndex = 3
OnClick = TBCheckClick
end
object MICleanup: TMenuItem
Caption = 'Clean-up Delphi code'
ImageIndex = 4
OnClick = MICleanupClick
end
object MICreateConstant: TMenuItem
Caption = 'Create string constant'
OnClick = MICreateConstantClick
end
end
end end

View File

@ -10,8 +10,8 @@ interface
uses uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
SynEdit, ButtonPanel, SynHighlighterSQL, ComCtrls, SQLDb, db, DBGrids, SynEdit, ButtonPanel, SynHighlighterSQL, ComCtrls, SQLDb, db, DBGrids, Menus,
SrcEditorIntf; SrcEditorIntf,clipbrd;
type type
@ -20,6 +20,10 @@ type
TSQLStringsPropertyEditorDlg = class(TForm) TSQLStringsPropertyEditorDlg = class(TForm)
ButtonsPanel: TButtonPanel; ButtonsPanel: TButtonPanel;
ImageList: TImageList; ImageList: TImageList;
MICheck: TMenuItem;
MICreateConstant: TMenuItem;
MICleanup: TMenuItem;
PMSQL: TPopupMenu;
ResultDBGrid: TDBGrid; ResultDBGrid: TDBGrid;
SQLDataSource: TDatasource; SQLDataSource: TDatasource;
OpenDialog: TOpenDialog; OpenDialog: TOpenDialog;
@ -38,6 +42,8 @@ type
TBCheck: TToolButton; TBCheck: TToolButton;
procedure ExecuteToolButtonClick(Sender: TObject); procedure ExecuteToolButtonClick(Sender: TObject);
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure MICleanupClick(Sender: TObject);
procedure MICreateConstantClick(Sender: TObject);
procedure OpenToolButtonClick(Sender: TObject); procedure OpenToolButtonClick(Sender: TObject);
procedure SaveToolButtonClick(Sender: TObject); procedure SaveToolButtonClick(Sender: TObject);
procedure TBCheckClick(Sender: TObject); procedure TBCheckClick(Sender: TObject);
@ -49,6 +55,8 @@ type
function CheckConnection:boolean; function CheckConnection:boolean;
procedure CheckSQLSyntax(SQL: TStrings); procedure CheckSQLSyntax(SQL: TStrings);
procedure CleanupDelphiCode;
procedure CreateConstant;
public public
{ public declarations } { public declarations }
constructor Create(AOwner:TComponent);override; constructor Create(AOwner:TComponent);override;
@ -60,9 +68,11 @@ type
implementation implementation
uses
{$IFDEF HASSQLPARSER} {$IFDEF HASSQLPARSER}
uses fpsqltree,fpsqlparser; fpsqltree,fpsqlparser,
{$ENDIF} {$ENDIF}
strutils;
{$R *.lfm} {$R *.lfm}
@ -123,8 +133,10 @@ Var
begin begin
{$IFDEF HASSQLPARSER} {$IFDEF HASSQLPARSER}
TBCheck.Visible:=True; TBCheck.Visible:=True;
MICheck.Visible:=True;
{$ELSE} {$ELSE}
TBCheck.Visible:=False; TBCheck.Visible:=False;
MICheck.Visible:=True;
{$ENDIF} {$ENDIF}
D:=sqlStandard; D:=sqlStandard;
If Assigned(FConnection) then If Assigned(FConnection) then
@ -158,6 +170,66 @@ begin
{$endif} {$endif}
end; end;
procedure TSQLStringsPropertyEditorDlg.MICleanupClick(Sender: TObject);
begin
CleanupDelphiCode;
end;
procedure TSQLStringsPropertyEditorDlg.CleanupDelphiCode;
Var
L : TStringList;
I,J,K : Integer;
S : String;
begin
L:=TStringList.Create;
try
L.Assign(SQLEditor.Lines);
For I:=0 to L.Count-1 do
begin
S:=L[i];
K:=0;
For J:=1 to Length(S) do
If S[j]='''' then
Inc(K);
if (K<>0) and ((K mod 2)=0) then
begin
J:=Pos('''',S);
Delete(S,1,J);
J:=RPos('''',S);
S:=Copy(S,1,J-1);
L[i]:=S;
end;
end;
SQLEditor.Lines:=L;
finally
L.Free;
end;
end;
procedure TSQLStringsPropertyEditorDlg.MICreateConstantClick(Sender: TObject);
begin
CreateConstant;
end;
procedure TSQLStringsPropertyEditorDlg.CreateConstant;
Var
C,S : String;
I : Integer;
begin
For I:=0 to SQLEditor.Lines.Count-1 do
begin
S:=SQLEditor.Lines[i];
If (C<>'') then
C:=C+'+sLineBreak+'+sLineBreak;
C:=C+''''+StringReplace(S,'''','''''',[rfReplaceAll])+'''';
end;
C:='SQL = '+C+';';
Clipboard.AsText:=C;
end;
//------------------------------------------------------------------------// //------------------------------------------------------------------------//
procedure TSQLStringsPropertyEditorDlg.SaveToolButtonClick(Sender: TObject); procedure TSQLStringsPropertyEditorDlg.SaveToolButtonClick(Sender: TObject);