mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-07 08:58:23 +02:00
* Rework query panel and data panel so they are frames
git-svn-id: trunk@51167 -
This commit is contained in:
parent
56c31e9131
commit
75ba67897f
6
.gitattributes
vendored
6
.gitattributes
vendored
@ -8860,10 +8860,13 @@ tools/lazdatadesktop/bitmaps/qrybtn_previous.xpm svneol=native#text/plain
|
||||
tools/lazdatadesktop/bitmaps/qrybtn_save.xpm svneol=native#text/plain
|
||||
tools/lazdatadesktop/bitmaps/querypanel.txt svneol=native#text/plain
|
||||
tools/lazdatadesktop/conneditor.pp svneol=native#text/plain
|
||||
tools/lazdatadesktop/datapanel.pp svneol=native#text/plain
|
||||
tools/lazdatadesktop/ddfiles.pp svneol=native#text/plain
|
||||
tools/lazdatadesktop/dicteditor.pp svneol=native#text/plain
|
||||
tools/lazdatadesktop/dicteditor.res -text
|
||||
tools/lazdatadesktop/fradata.lfm svneol=native#text/plain
|
||||
tools/lazdatadesktop/fradata.pp svneol=native#text/plain
|
||||
tools/lazdatadesktop/fraquery.lfm svneol=native#text/plain
|
||||
tools/lazdatadesktop/fraquery.pp svneol=native#text/plain
|
||||
tools/lazdatadesktop/frmgeneratesql.lfm svneol=native#text/plain
|
||||
tools/lazdatadesktop/frmgeneratesql.pp svneol=native#text/plain
|
||||
tools/lazdatadesktop/frmimportdd.lfm svneol=native#text/plain
|
||||
@ -8889,7 +8892,6 @@ tools/lazdatadesktop/lazdatadeskstr.pas svneol=native#text/plain
|
||||
tools/lazdatadesktop/lazdatadesktop.lpi svneol=native#text/plain
|
||||
tools/lazdatadesktop/lazdatadesktop.lpr svneol=native#text/plain
|
||||
tools/lazdatadesktop/lazdatadesktop.res -text
|
||||
tools/lazdatadesktop/querypanel.pp svneol=native#text/plain
|
||||
tools/lazdatadesktop/querypanel.res -text
|
||||
tools/lazres.lpi svneol=native#text/plain
|
||||
tools/lazres.pp svneol=native#text/pascal
|
||||
|
@ -26,7 +26,7 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, db, fpdatadict, controls, comctrls, stdctrls, extctrls,
|
||||
graphics, imglist, lresources, RTTIGrids, querypanel, lazdatadeskstr;
|
||||
graphics, imglist, lresources, RTTIGrids, fraquery, lazdatadeskstr;
|
||||
|
||||
Type
|
||||
|
||||
@ -42,10 +42,11 @@ Type
|
||||
FImgList : TImageList;
|
||||
FTSDisplay : TTabsheet;
|
||||
FTSQuery : TTabsheet;
|
||||
FQueryPanel : TQueryPanel;
|
||||
FQueryPanel : TQueryFrame;
|
||||
procedure AddPair(LV: TListView; Const AName, AValue: String);
|
||||
procedure ClearDisplay;
|
||||
procedure DoSelectNode(Sender: TObject);
|
||||
procedure DoTabChange(Sender: TObject);
|
||||
function GetCurrentObjectType: TObjectType;
|
||||
function NewNode(TV: TTreeView; ParentNode: TTreeNode; ACaption: String;
|
||||
AImageIndex: Integer): TTreeNode;
|
||||
@ -105,7 +106,7 @@ Const
|
||||
|
||||
implementation
|
||||
|
||||
uses typinfo, datapanel, frmgeneratesql;
|
||||
uses typinfo, fradata, frmgeneratesql;
|
||||
|
||||
{ TConnectionEditor }
|
||||
|
||||
@ -170,6 +171,7 @@ begin
|
||||
FPC.Parent:=Self;
|
||||
FPC.Name:='FPC';
|
||||
FPC.Align:=alClient;
|
||||
FPC.OnChange:=@DoTabChange;
|
||||
// Display tab sheet
|
||||
FTSDisplay:=TTabsheet.Create(Self);
|
||||
FTSDisplay.Name:='FTSDisplay';
|
||||
@ -187,7 +189,7 @@ begin
|
||||
FDisplay.Align:=alClient;
|
||||
FDisplay.Caption:='';
|
||||
// Query panel
|
||||
FQueryPanel:= TQueryPanel.Create(Self);
|
||||
FQueryPanel:= TQueryFrame.Create(Self);
|
||||
FQueryPanel.Name:='FQueryPanel';
|
||||
FQueryPanel.Parent:=FTSQuery;
|
||||
FQueryPanel.Align:=alClient;
|
||||
@ -227,6 +229,7 @@ Var
|
||||
C : TControl;
|
||||
|
||||
begin
|
||||
C:=Nil;
|
||||
Result:=False;
|
||||
If FPC.ActivePage=FTSQuery then
|
||||
begin
|
||||
@ -234,8 +237,9 @@ begin
|
||||
end
|
||||
else If FPC.ActivePage=FTSDisplay then
|
||||
begin
|
||||
C:=FDisplay.Controls[0];
|
||||
If Not (C is TDataPanel) then
|
||||
if FDisplay.ControlCount>0 then
|
||||
C:=FDisplay.Controls[0];
|
||||
If Not (C is TDataFrame) then
|
||||
C:=Nil;
|
||||
Result:=Assigned(C);
|
||||
end;
|
||||
@ -291,15 +295,17 @@ Var
|
||||
C : TControl;
|
||||
|
||||
begin
|
||||
C:=Nil;
|
||||
If FPC.ActivePage=FTSQuery then
|
||||
begin
|
||||
FQueryPanel.CreateCode;
|
||||
end
|
||||
else If FPC.ActivePage=FTSDisplay then
|
||||
begin
|
||||
C:=FDisplay.Controls[0];
|
||||
If (C is TDataPanel) then
|
||||
TDataPanel(C).CreateCode;
|
||||
if FDisplay.ControlCount>0 then
|
||||
C:=FDisplay.Controls[0];
|
||||
If (C is TDataFrame) then
|
||||
TDataFrame(C).CreateCode;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -402,14 +408,20 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TConnectionEditor.DoTabChange(Sender: TObject);
|
||||
begin
|
||||
If FPC.ActivePage=FTSQuery then
|
||||
FQueryPanel.ActivatePanel;
|
||||
end;
|
||||
|
||||
procedure TConnectionEditor.ShowTableData(ATableName : String);
|
||||
|
||||
Var
|
||||
P : TDataPanel;
|
||||
P : TDataFrame;
|
||||
|
||||
begin
|
||||
ClearDisplay;
|
||||
P:=TDataPanel.Create(Self);
|
||||
P:=TDataFrame.Create(Self);
|
||||
P.TableName:=ATableName;
|
||||
P.Parent:=FDisplay;
|
||||
P.Align:=alClient;
|
||||
|
@ -1,214 +0,0 @@
|
||||
{
|
||||
***************************************************************************
|
||||
* *
|
||||
* This source is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This code is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* General Public License for more details. *
|
||||
* *
|
||||
* A copy of the GNU General Public License is available on the World *
|
||||
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
|
||||
* obtain it by writing to the Free Software Foundation, *
|
||||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
* *
|
||||
***************************************************************************
|
||||
}
|
||||
unit datapanel;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Graphics, Classes, SysUtils, Controls, ExtCtrls, StdCtrls, DB, dbgrids, dbCtrls,
|
||||
buttons, fpdatadict;
|
||||
|
||||
Type
|
||||
|
||||
{ TDataPanel }
|
||||
TDataPanel = Class(TCustomPanel)
|
||||
private
|
||||
FDataSource: TDatasource;
|
||||
FTableName: String;
|
||||
FTopPanel: TPanel;
|
||||
FDBGrid : TDBGrid;
|
||||
FNavigator : TDBNavigator;
|
||||
FExportSB : TSpeedButton;
|
||||
FCodeSB : TSpeedButton;
|
||||
procedure Checkbuttons;
|
||||
procedure CreateControls;
|
||||
function GetDataset: TDataset;
|
||||
procedure DoExport(Sender : TObject);
|
||||
procedure DoCode(Sender : TObject);
|
||||
function GetExtra: Boolean;
|
||||
procedure SetExtra(const AValue: Boolean);
|
||||
Protected
|
||||
Property TopPanel : TPanel Read FTopPanel;
|
||||
Property DBGrid : TDBGrid Read FDBGrid;
|
||||
Property DataSource : TDatasource Read FDataSource;
|
||||
procedure SetDataset(const AValue: TDataset);virtual;
|
||||
Public
|
||||
Constructor Create(AOwner : TComponent); Override;
|
||||
Property Dataset : TDataset Read GetDataset Write SetDataset;
|
||||
Property TableName: String Read FTableName Write FTableName;
|
||||
Procedure ExportData;
|
||||
Procedure CreateCode;
|
||||
Property ShowExtraButtons : Boolean Read GetExtra Write SetExtra;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses fpdataexporter,fpcodegenerator;
|
||||
|
||||
{ TDataPanel }
|
||||
|
||||
function TDataPanel.GetDataset: TDataset;
|
||||
begin
|
||||
Result:=FDatasource.Dataset;
|
||||
end;
|
||||
|
||||
procedure TDataPanel.DoExport(Sender: TObject);
|
||||
begin
|
||||
ExportData;
|
||||
end;
|
||||
|
||||
procedure TDataPanel.DoCode(Sender : TObject);
|
||||
|
||||
begin
|
||||
CreateCode;
|
||||
end;
|
||||
|
||||
function TDataPanel.GetExtra: Boolean;
|
||||
begin
|
||||
Result:=FExportSB.Visible;
|
||||
end;
|
||||
|
||||
procedure TDataPanel.SetExtra(const AValue: Boolean);
|
||||
begin
|
||||
FExportSB.Visible:=AValue;
|
||||
FCodeSB.Visible:=AValue;
|
||||
end;
|
||||
|
||||
procedure TDataPanel.SetDataset(const AValue: TDataset);
|
||||
begin
|
||||
FDatasource.Dataset:=AValue;
|
||||
CheckButtons;
|
||||
end;
|
||||
|
||||
procedure TDataPanel.ExportData;
|
||||
begin
|
||||
With TFPDataExporter.Create(Dataset) do
|
||||
Try
|
||||
If Self.TableName<>'' then
|
||||
TableNameHint:=Self.TableName;
|
||||
Execute;
|
||||
Finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDataPanel.CreateCode;
|
||||
begin
|
||||
With TFPCodeGenerator.Create(Dataset) do
|
||||
try
|
||||
If Self.TableName<>'' then
|
||||
TableNameHint:=Self.TableName;
|
||||
Execute;
|
||||
Finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TDataPanel.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
FDataSource:=TDatasource.Create(Self);
|
||||
CreateControls;
|
||||
end;
|
||||
|
||||
Procedure TDataPanel.CreateControls;
|
||||
|
||||
Var
|
||||
P : TPixMap;
|
||||
|
||||
begin
|
||||
P:=TPixMap.Create;
|
||||
try
|
||||
// Top panel;
|
||||
FTopPanel:=TPanel.Create(Self);
|
||||
FTopPanel.Parent:=Self;
|
||||
FTopPanel.Caption:='';
|
||||
FTopPanel.Align:=alTop;
|
||||
FTopPanel.height:=30;
|
||||
FTopPanel.BevelInner:=bvLowered;
|
||||
FTopPanel.BevelOuter:=bvNone;
|
||||
// Grid
|
||||
FDBgrid:=TDBGrid.Create(Self);
|
||||
FDBGrid.Parent:=Self;
|
||||
FDBGrid.Align:=alClient;
|
||||
FDBGrid.Options:=FDBGrid.Options+[dgAutoSizeColumns];
|
||||
FDBGrid.DataSource:=FDatasource;
|
||||
FDBGrid.AutoSizeColumns;
|
||||
// Navigator;
|
||||
FNavigator:=TDBNavigator.Create(Self);
|
||||
FNavigator.Parent:=FTopPanel;
|
||||
FNavigator.Top:=4;
|
||||
FNavigator.Left:=4;
|
||||
FNavigator.Height:=22;
|
||||
FNavigator.DataSource:=FDatasource;
|
||||
//
|
||||
CheckButtons;
|
||||
FExportSB:=TSpeedButton.Create(Self);
|
||||
FExportSB.Parent:=FTopPanel;
|
||||
FExportSB.Left:=16+FNavigator.Width+FNavigator.Left;
|
||||
FExportSB.Top:=4;
|
||||
FExportSB.Height:=22;
|
||||
FExportSB.Width:=22;
|
||||
P.LoadFromResourceName(HInstance,'qrybtn_export');
|
||||
FExportSB.Glyph.Assign(P);
|
||||
FExportSB.Flat:=True;
|
||||
FExportSB.OnClick:=@DoExport;
|
||||
FCodeSB:=TSpeedButton.Create(Self);
|
||||
FCodeSB.Parent:=FTopPanel;
|
||||
FCodeSB.Left:=FExportSB.Width+FExportSB.Left;
|
||||
FCodeSB.Top:=4;
|
||||
FCodeSB.Height:=22;
|
||||
FCodeSB.Width:=22;
|
||||
P.LoadFromResourceName(HInstance,'qrybtn_code');
|
||||
FCodeSB.Glyph.Assign(P);
|
||||
FCodeSB.Flat:=True;
|
||||
FCodeSB.OnClick:=@DoCode;
|
||||
Finally
|
||||
FreeAndNil(P);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDataPanel.Checkbuttons;
|
||||
|
||||
Const
|
||||
NavBtns = [nbFirst,nbPrior,nbNext,nbLast,nbRefresh];
|
||||
EditBtns = [nbInsert,nbPost,nbDelete,nbCancel];
|
||||
|
||||
begin
|
||||
If Assigned(FNavigator) and Assigned(Dataset) then
|
||||
begin
|
||||
If Dataset.CanModify then
|
||||
begin
|
||||
FNavigator.VisibleButtons:=NavBtns;
|
||||
FNavigator.Width:=122;
|
||||
end
|
||||
else
|
||||
begin
|
||||
FNavigator.VisibleButtons:=NavBtns+EditBtns;
|
||||
FNavigator.Width:=244;
|
||||
end
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
161
tools/lazdatadesktop/fradata.lfm
Normal file
161
tools/lazdatadesktop/fradata.lfm
Normal file
@ -0,0 +1,161 @@
|
||||
object DataFrame: TDataFrame
|
||||
Left = 0
|
||||
Height = 240
|
||||
Top = 0
|
||||
Width = 320
|
||||
ClientHeight = 240
|
||||
ClientWidth = 320
|
||||
TabOrder = 0
|
||||
DesignLeft = 901
|
||||
DesignTop = 348
|
||||
object FTopPanel: TPanel
|
||||
Left = 0
|
||||
Height = 34
|
||||
Top = 0
|
||||
Width = 320
|
||||
Align = alTop
|
||||
BevelOuter = bvLowered
|
||||
ClientHeight = 34
|
||||
ClientWidth = 320
|
||||
TabOrder = 0
|
||||
object FNavigator: TDBNavigator
|
||||
Left = 1
|
||||
Height = 32
|
||||
Top = 1
|
||||
Width = 113
|
||||
Align = alLeft
|
||||
BevelOuter = bvNone
|
||||
ChildSizing.EnlargeHorizontal = crsScaleChilds
|
||||
ChildSizing.EnlargeVertical = crsScaleChilds
|
||||
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||
ChildSizing.ControlsPerLine = 100
|
||||
ClientHeight = 32
|
||||
ClientWidth = 113
|
||||
DataSource = FDataSource
|
||||
Flat = True
|
||||
Options = []
|
||||
TabOrder = 0
|
||||
VisibleButtons = [nbFirst, nbPrior, nbNext, nbLast, nbRefresh]
|
||||
end
|
||||
object FExportSB: TSpeedButton
|
||||
Left = 114
|
||||
Height = 32
|
||||
Top = 1
|
||||
Width = 31
|
||||
Align = alLeft
|
||||
Flat = True
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000000000000000
|
||||
000000000000008080FF008080FF008080FF00C0C0FF00C0C0FF00C0C0FF00C0
|
||||
C0FF008080FF008080FF008080FF000000000000000000000000000000000000
|
||||
0000008080FF00C0C0FF00C0C0FF00C0C0FF00FFFFFF00FFFFFF00FFFFFF00FF
|
||||
FFFF00C0C0FF00C0C0FF00C0C0FF008080FF0000000000000000008080FF0080
|
||||
80FF00C0C0FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0FF00C0C0FF00FF
|
||||
FFFF00FFFFFF00FFFFFF00FFFFFF00C0C0FF008080FF00000000008080FF00C0
|
||||
C0FF00FFFFFF00FFFFFF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00C0
|
||||
C0FF00C0C0FF00C0C0FF00FFFFFF00FFFFFF00C0C0FF008080FF008080FF00C0
|
||||
C0FF00FFFFFF00C0C0FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
|
||||
FFFF00FFFFFF00FFFFFF00C0C0FF00FFFFFF00C0C0FF008080FF008080FF00C0
|
||||
C0FF00FFFFFF00C0C0FF00FFFFFF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00C0
|
||||
C0FF00C0C0FF00FFFFFF00C0C0FF00FFFFFF00C0C0FF008080FF008080FF00C0
|
||||
C0FF00FFFFFF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF008000FF0080
|
||||
00FF00C0C0FF00C0C0FF00C0C0FF00FFFFFF00C0C0FF008080FF008080FF00C0
|
||||
C0FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF008000FF00FF00FF00FF
|
||||
00FF008000FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF008080FF008080FF0080
|
||||
80FF008080FF00C0C0FF00C0C0FF00C0C0FF008000FF00FF00FF00FF00FF00FF
|
||||
00FF00FF00FF008000FF00C0C0FF008080FF008080FF008080FF000000000000
|
||||
0000000000000000000000000000008000FF008000FF008000FF00FF00FF00FF
|
||||
00FF008000FF008000FF008000FF000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000008000FF00FF00FF00FF
|
||||
00FF008000FF0000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000008000FF00FF00FF00FF
|
||||
00FF008000FF0000000000000000000000000000000000000000008000FF0080
|
||||
00FF008000FF008000FF008000FF008000FF008000FF008000FF00FF00FF00FF
|
||||
00FF008000FF0000000000000000000000000000000000000000008000FF00FF
|
||||
00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
|
||||
00FF008000FF0000000000000000000000000000000000000000008000FF00FF
|
||||
00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
|
||||
00FF008000FF0000000000000000000000000000000000000000008000FF0080
|
||||
00FF008000FF008000FF008000FF008000FF008000FF008000FF008000FF0080
|
||||
00FF008000FF0000000000000000000000000000000000000000
|
||||
}
|
||||
end
|
||||
object FCodeSB: TSpeedButton
|
||||
Left = 145
|
||||
Height = 32
|
||||
Top = 1
|
||||
Width = 31
|
||||
Align = alLeft
|
||||
Flat = True
|
||||
Glyph.Data = {
|
||||
0E060000424D0E06000000000000360000002800000016000000160000000100
|
||||
180000000000D8050000640000006400000000000000000000007C7C7C302E2E
|
||||
0200000400000400000300000200000001000001000001000002000002000002
|
||||
000002000001000A0B0806070401020000010000040300030200010000008282
|
||||
82ACACACC6C6C5C7C6C5C7C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
|
||||
C6C3C6C6C3C6C6C2C6C6C2C7C8C3C6C7C3C3C6C3C2C6C3BDC5C3757C7A000300
|
||||
0000828282D0CECEFFFDFCFFFDFCFFFDFAFFFDFAFFFDFAFFFDFAFFFDFAFFFDF9
|
||||
FFFEF9FFFDFAFFFDFAFFFDFAFFFEFAFFFEFAFEFCF9FCFBF8FCFFFCF7FEFB9AA3
|
||||
A0020B0800007D7D7DCECDCCEAE8E7ACA9A8ACA9A7ACA9A7ACA9A8ACA9A7ACA9
|
||||
A7ACA9A6ACAAA6ACA9A7ACA9A7ACA9A7ACAAA8ACAAA8ACA8A6ACA6A5ACAAA9E7
|
||||
E9E79EA3A1050C090000797979CCCBCCC7C4C5221C1D221C1D221C1D221C1D22
|
||||
1C1D221C1D221C1D221C1D221C1D221C1D221C1D221C1D221C1D221C1D221C1D
|
||||
221D1DC7C4C3A29D9D08000000007F7F7FCFCDCEFFFCFDFFFAFBFFF8F9FFF8F9
|
||||
FFF8F8FFF8F8FFF8F8FFF8F8FFF8F8FFF7F8FFF7F8FFF6F7FFF4F6FFF7F8FFF7
|
||||
F9FFF7F9FFFBFBFFFBFBA49D9D0C000000007E7E7ECECDCEC8C5C6231D1E231D
|
||||
1E231D1E231D1E231D1D231D1D746F6FFBF8F8FBF8F8FBF8F8C5C1C1231C1D23
|
||||
1D1E231C1E3E383AFFFBFBFFFAF9A29C9B08000000007E7E7ECECDCEEAE7E8AC
|
||||
A7A6ACA5A6ACA5A6ACA5A6ACA5A6ACA5A5CAC4C3FDF8F7FDF7F7FDF7F7E8E3E2
|
||||
ACA5A6ACA6A6ACA6A7B6B0B2FFFAFAFFFBFAA39F9E0B050300007E7E7ECECDCE
|
||||
E3E0E1918B8B918A8B918A8B918A8B918A8B918A8A918A8A918A8A918A8A918A
|
||||
8A918A8A918A8B918B8B918B8B938B8CA38F8FE8DEDEA49D9C0C040300007E7E
|
||||
7ECECDCECECBCC3E38393E37383E37383E38383E38383E37383E37383E37383E
|
||||
37383E37383E37383E37383E37383E37384238395E3E40D6C8C9A39A9A0B0000
|
||||
00007E7E7ECECDCEFFFCFCFFF9F9FFF7F8FFF7F7FFF8F7FFF8F7FFF7F7FFF7F7
|
||||
FFF7F7FFF7F7FFF7F7FFF7F7FFF7F8FFF4F6FFF5F7FFF6F8FFFAFCFFFBFDA29D
|
||||
9E09000000007E7E7ECECDCEC1BEBF0701020701020701020701020701020701
|
||||
02070102070102070102070102070102070102070102817D7DFBF9F9FFF9F9FE
|
||||
F2F3A2989909070600007E7E7ECECDCEF1EEEFC7C2C2C7C1C1C7C1C0C7C1C0C7
|
||||
C1C0C7C1C0C7C1C0C7C1C0C7C1C1C7C1C1C7C1C1C7C1C2C7BEBDE2DBDCFEF9FA
|
||||
FFFAFAFEFAFAA09D9D05020100007E7E7ECECDCEDCD9DA757070756F6F756F6F
|
||||
756F6F756F6F756F6F756F6F756F6F756F6F756F6F756F6F756F70756D6D756E
|
||||
6F7870718B7476E2D8DAA29C9D0800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFF73595CDCD1D4A49C9E0E020200000000FFFFFFFFFFFCFDFF
|
||||
F9FBFFFFFF0000FFFFF7F9FFF7F90000FFFFFFFF0000FF0000FF0000FFFFF7F8
|
||||
FFF7F9FFF8FAFFF7F9FFF6F8FFFAFDFFFAFDA69EA112050600000000FFFFFFFF
|
||||
FFFFFFFFFBFEFFFFFF0000FFFFF9FDFFF7FB0000FFFFFFFF0000FFFFFBFEFFF7
|
||||
FA0000FFFFFCFEFFFCFDFFFCFDFFFCFDFFFAFCFFFCFDA29E9F07010200000000
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0000FFFFFFFFFFFBFEFF
|
||||
FBFDFFFCFD0000FFFBF9F9F8F8F8FBFBFBFFFEFEFFFEFEFFFEFEA09E9E030000
|
||||
00000000FF0000FF0000FFFFFFFFFFFFFF0000FF0000FF0000FF0000FFFFFFFF
|
||||
0000FF0000FF0000FFF9FAFAFCFDFDFBFCFCFCFDFDFCFDFDFAFBFBF7F9F99A9B
|
||||
9B01000000000000FFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFCFFFFFDFF0000
|
||||
FFFFFFFF0000FFFEFDFEFAFBFBF9FAFAFAFDFDFAFEFDFBFEFEFAFDFDF9FCFCF7
|
||||
FAFA9A9C9C00000000000000FFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFFFFFF
|
||||
FFFF0000FFFFFFFF0000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFDCE1E0DCE1E0
|
||||
DCE0E0DCE0E09598981F202000000000FF0000FF0000FFFFFFFFFFFFFFFFFFFF
|
||||
0000FF0000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFF7C81808D92910000
|
||||
}
|
||||
end
|
||||
end
|
||||
object FDBGrid: TDBGrid
|
||||
Left = 0
|
||||
Height = 206
|
||||
Top = 34
|
||||
Width = 320
|
||||
Align = alClient
|
||||
Color = clWindow
|
||||
Columns = <>
|
||||
DataSource = FDataSource
|
||||
TabOrder = 1
|
||||
end
|
||||
object FDataSource: TDataSource
|
||||
left = 41
|
||||
top = 36
|
||||
end
|
||||
end
|
134
tools/lazdatadesktop/fradata.pp
Normal file
134
tools/lazdatadesktop/fradata.pp
Normal file
@ -0,0 +1,134 @@
|
||||
unit fradata;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, db, FileUtil, LResources, Forms, Controls, ExtCtrls,
|
||||
DbCtrls, DBGrids, Buttons;
|
||||
|
||||
type
|
||||
|
||||
{ TDataFrame }
|
||||
|
||||
TDataFrame = class(TFrame)
|
||||
FDBGrid: TDBGrid;
|
||||
FDataSource: TDataSource;
|
||||
FNavigator: TDBNavigator;
|
||||
FTopPanel: TPanel;
|
||||
FExportSB: TSpeedButton;
|
||||
FCodeSB: TSpeedButton;
|
||||
procedure DoExport(Sender : TObject);
|
||||
procedure DoCode(Sender : TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
FTableName : String;
|
||||
FDataset : TDataset;
|
||||
public
|
||||
{ public declarations }
|
||||
procedure Checkbuttons;
|
||||
function GetDataset: TDataset;
|
||||
function GetExtra: Boolean;
|
||||
procedure SetExtra(const AValue: Boolean);
|
||||
Protected
|
||||
Property TopPanel : TPanel Read FTopPanel;
|
||||
Property DBGrid : TDBGrid Read FDBGrid;
|
||||
Property DataSource : TDatasource Read FDataSource;
|
||||
procedure SetDataset(const AValue: TDataset);virtual;
|
||||
Public
|
||||
Property Dataset : TDataset Read GetDataset Write SetDataset;
|
||||
Property TableName: String Read FTableName Write FTableName;
|
||||
Procedure ExportData;
|
||||
Procedure CreateCode;
|
||||
Property ShowExtraButtons : Boolean Read GetExtra Write SetExtra;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{$r *.lfm}
|
||||
uses fpdataexporter,fpcodegenerator;
|
||||
|
||||
{ TDataFrame }
|
||||
|
||||
function TDataFrame.GetDataset: TDataset;
|
||||
begin
|
||||
Result:=FDatasource.Dataset;
|
||||
end;
|
||||
|
||||
procedure TDataFrame.DoExport(Sender: TObject);
|
||||
begin
|
||||
ExportData;
|
||||
end;
|
||||
|
||||
procedure TDataFrame.DoCode(Sender : TObject);
|
||||
|
||||
begin
|
||||
CreateCode;
|
||||
end;
|
||||
|
||||
function TDataFrame.GetExtra: Boolean;
|
||||
begin
|
||||
Result:=FExportSB.Visible;
|
||||
end;
|
||||
|
||||
procedure TDataFrame.SetExtra(const AValue: Boolean);
|
||||
begin
|
||||
FExportSB.Visible:=AValue;
|
||||
FCodeSB.Visible:=AValue;
|
||||
end;
|
||||
|
||||
procedure TDataFrame.SetDataset(const AValue: TDataset);
|
||||
begin
|
||||
FDatasource.Dataset:=AValue;
|
||||
CheckButtons;
|
||||
end;
|
||||
|
||||
procedure TDataFrame.ExportData;
|
||||
begin
|
||||
With TFPDataExporter.Create(Dataset) do
|
||||
Try
|
||||
If Self.TableName<>'' then
|
||||
TableNameHint:=Self.TableName;
|
||||
Execute;
|
||||
Finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDataFrame.CreateCode;
|
||||
begin
|
||||
With TFPCodeGenerator.Create(Dataset) do
|
||||
try
|
||||
If Self.TableName<>'' then
|
||||
TableNameHint:=Self.TableName;
|
||||
Execute;
|
||||
Finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDataFrame.Checkbuttons;
|
||||
|
||||
Const
|
||||
NavBtns = [nbFirst,nbPrior,nbNext,nbLast,nbRefresh];
|
||||
EditBtns = [nbInsert,nbPost,nbDelete,nbCancel];
|
||||
|
||||
begin
|
||||
If Assigned(FNavigator) and Assigned(Dataset) then
|
||||
begin
|
||||
If Dataset.CanModify then
|
||||
begin
|
||||
FNavigator.VisibleButtons:=NavBtns;
|
||||
FNavigator.Width:=122;
|
||||
end
|
||||
else
|
||||
begin
|
||||
FNavigator.VisibleButtons:=NavBtns+EditBtns;
|
||||
FNavigator.Width:=244;
|
||||
end
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
967
tools/lazdatadesktop/fraquery.lfm
Normal file
967
tools/lazdatadesktop/fraquery.lfm
Normal file
@ -0,0 +1,967 @@
|
||||
object QueryFrame: TQueryFrame
|
||||
Left = 0
|
||||
Height = 505
|
||||
Top = 0
|
||||
Width = 640
|
||||
ClientHeight = 505
|
||||
ClientWidth = 640
|
||||
TabOrder = 0
|
||||
DesignLeft = 671
|
||||
DesignTop = 285
|
||||
object ToolBar1: TToolBar
|
||||
Left = 0
|
||||
Height = 26
|
||||
Top = 0
|
||||
Width = 640
|
||||
Caption = 'ToolBar1'
|
||||
Images = ILQuery
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 0
|
||||
object TBExecute: TToolButton
|
||||
Left = 1
|
||||
Top = 2
|
||||
Action = AExecute
|
||||
end
|
||||
object TBSep1: TToolButton
|
||||
Left = 47
|
||||
Height = 22
|
||||
Top = 2
|
||||
Width = 8
|
||||
Caption = 'TBSep1'
|
||||
Style = tbsSeparator
|
||||
end
|
||||
object TBPrevious: TToolButton
|
||||
Left = 55
|
||||
Top = 2
|
||||
Action = APreviousQuery
|
||||
end
|
||||
object TBNext: TToolButton
|
||||
Left = 78
|
||||
Top = 2
|
||||
Action = ANextQuery
|
||||
end
|
||||
object TBSep2: TToolButton
|
||||
Left = 101
|
||||
Height = 22
|
||||
Top = 2
|
||||
Width = 8
|
||||
Caption = 'TBSep2'
|
||||
Style = tbsSeparator
|
||||
end
|
||||
object TBClose: TToolButton
|
||||
Left = 24
|
||||
Top = 2
|
||||
Action = ACloseQuery
|
||||
end
|
||||
object TBLoadSQL: TToolButton
|
||||
Left = 109
|
||||
Top = 2
|
||||
Action = ALoadSQL
|
||||
end
|
||||
object TBSaveSQL: TToolButton
|
||||
Left = 132
|
||||
Top = 2
|
||||
Action = ASaveSQL
|
||||
end
|
||||
object TBSep3: TToolButton
|
||||
Left = 155
|
||||
Height = 22
|
||||
Top = 2
|
||||
Width = 8
|
||||
Caption = 'TBSep3'
|
||||
Style = tbsSeparator
|
||||
end
|
||||
object ToolButton1: TToolButton
|
||||
Left = 163
|
||||
Top = 2
|
||||
Action = AExport
|
||||
end
|
||||
object ToolButton2: TToolButton
|
||||
Left = 186
|
||||
Top = 2
|
||||
Action = ACreateCode
|
||||
end
|
||||
end
|
||||
object PCResult: TPageControl
|
||||
Left = 0
|
||||
Height = 244
|
||||
Top = 261
|
||||
Width = 640
|
||||
ActivePage = TSResult
|
||||
Align = alBottom
|
||||
TabIndex = 0
|
||||
TabOrder = 1
|
||||
object TSResult: TTabSheet
|
||||
Caption = 'Result'
|
||||
ClientHeight = 210
|
||||
ClientWidth = 632
|
||||
object MResult: TMemo
|
||||
Left = 0
|
||||
Height = 210
|
||||
Top = 0
|
||||
Width = 632
|
||||
Align = alClient
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
object TSData: TTabSheet
|
||||
Caption = 'Data'
|
||||
end
|
||||
end
|
||||
inline FMSQL: TSynEdit
|
||||
Left = 0
|
||||
Height = 230
|
||||
Top = 26
|
||||
Width = 640
|
||||
Align = alClient
|
||||
Font.Height = -13
|
||||
Font.Name = 'Courier New'
|
||||
Font.Pitch = fpFixed
|
||||
Font.Quality = fqNonAntialiased
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
OnKeyDown = OnMemoKey
|
||||
ExtraLineSpacing = 2
|
||||
Gutter.Width = 57
|
||||
Gutter.MouseActions = <>
|
||||
RightGutter.Width = 0
|
||||
RightGutter.MouseActions = <>
|
||||
Highlighter = SQLSyn
|
||||
Keystrokes = <
|
||||
item
|
||||
Command = ecUp
|
||||
ShortCut = 38
|
||||
end
|
||||
item
|
||||
Command = ecSelUp
|
||||
ShortCut = 8230
|
||||
end
|
||||
item
|
||||
Command = ecScrollUp
|
||||
ShortCut = 16422
|
||||
end
|
||||
item
|
||||
Command = ecDown
|
||||
ShortCut = 40
|
||||
end
|
||||
item
|
||||
Command = ecSelDown
|
||||
ShortCut = 8232
|
||||
end
|
||||
item
|
||||
Command = ecScrollDown
|
||||
ShortCut = 16424
|
||||
end
|
||||
item
|
||||
Command = ecLeft
|
||||
ShortCut = 37
|
||||
end
|
||||
item
|
||||
Command = ecSelLeft
|
||||
ShortCut = 8229
|
||||
end
|
||||
item
|
||||
Command = ecWordLeft
|
||||
ShortCut = 16421
|
||||
end
|
||||
item
|
||||
Command = ecSelWordLeft
|
||||
ShortCut = 24613
|
||||
end
|
||||
item
|
||||
Command = ecRight
|
||||
ShortCut = 39
|
||||
end
|
||||
item
|
||||
Command = ecSelRight
|
||||
ShortCut = 8231
|
||||
end
|
||||
item
|
||||
Command = ecWordRight
|
||||
ShortCut = 16423
|
||||
end
|
||||
item
|
||||
Command = ecSelWordRight
|
||||
ShortCut = 24615
|
||||
end
|
||||
item
|
||||
Command = ecPageDown
|
||||
ShortCut = 34
|
||||
end
|
||||
item
|
||||
Command = ecSelPageDown
|
||||
ShortCut = 8226
|
||||
end
|
||||
item
|
||||
Command = ecPageBottom
|
||||
ShortCut = 16418
|
||||
end
|
||||
item
|
||||
Command = ecSelPageBottom
|
||||
ShortCut = 24610
|
||||
end
|
||||
item
|
||||
Command = ecPageUp
|
||||
ShortCut = 33
|
||||
end
|
||||
item
|
||||
Command = ecSelPageUp
|
||||
ShortCut = 8225
|
||||
end
|
||||
item
|
||||
Command = ecPageTop
|
||||
ShortCut = 16417
|
||||
end
|
||||
item
|
||||
Command = ecSelPageTop
|
||||
ShortCut = 24609
|
||||
end
|
||||
item
|
||||
Command = ecLineStart
|
||||
ShortCut = 36
|
||||
end
|
||||
item
|
||||
Command = ecSelLineStart
|
||||
ShortCut = 8228
|
||||
end
|
||||
item
|
||||
Command = ecEditorTop
|
||||
ShortCut = 16420
|
||||
end
|
||||
item
|
||||
Command = ecSelEditorTop
|
||||
ShortCut = 24612
|
||||
end
|
||||
item
|
||||
Command = ecLineEnd
|
||||
ShortCut = 35
|
||||
end
|
||||
item
|
||||
Command = ecSelLineEnd
|
||||
ShortCut = 8227
|
||||
end
|
||||
item
|
||||
Command = ecEditorBottom
|
||||
ShortCut = 16419
|
||||
end
|
||||
item
|
||||
Command = ecSelEditorBottom
|
||||
ShortCut = 24611
|
||||
end
|
||||
item
|
||||
Command = ecToggleMode
|
||||
ShortCut = 45
|
||||
end
|
||||
item
|
||||
Command = ecCopy
|
||||
ShortCut = 16429
|
||||
end
|
||||
item
|
||||
Command = ecPaste
|
||||
ShortCut = 8237
|
||||
end
|
||||
item
|
||||
Command = ecDeleteChar
|
||||
ShortCut = 46
|
||||
end
|
||||
item
|
||||
Command = ecCut
|
||||
ShortCut = 8238
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastChar
|
||||
ShortCut = 8
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastChar
|
||||
ShortCut = 8200
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastWord
|
||||
ShortCut = 16392
|
||||
end
|
||||
item
|
||||
Command = ecUndo
|
||||
ShortCut = 32776
|
||||
end
|
||||
item
|
||||
Command = ecRedo
|
||||
ShortCut = 40968
|
||||
end
|
||||
item
|
||||
Command = ecLineBreak
|
||||
ShortCut = 13
|
||||
end
|
||||
item
|
||||
Command = ecSelectAll
|
||||
ShortCut = 16449
|
||||
end
|
||||
item
|
||||
Command = ecCopy
|
||||
ShortCut = 16451
|
||||
end
|
||||
item
|
||||
Command = ecBlockIndent
|
||||
ShortCut = 24649
|
||||
end
|
||||
item
|
||||
Command = ecLineBreak
|
||||
ShortCut = 16461
|
||||
end
|
||||
item
|
||||
Command = ecInsertLine
|
||||
ShortCut = 16462
|
||||
end
|
||||
item
|
||||
Command = ecDeleteWord
|
||||
ShortCut = 16468
|
||||
end
|
||||
item
|
||||
Command = ecBlockUnindent
|
||||
ShortCut = 24661
|
||||
end
|
||||
item
|
||||
Command = ecPaste
|
||||
ShortCut = 16470
|
||||
end
|
||||
item
|
||||
Command = ecCut
|
||||
ShortCut = 16472
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLine
|
||||
ShortCut = 16473
|
||||
end
|
||||
item
|
||||
Command = ecDeleteEOL
|
||||
ShortCut = 24665
|
||||
end
|
||||
item
|
||||
Command = ecUndo
|
||||
ShortCut = 16474
|
||||
end
|
||||
item
|
||||
Command = ecRedo
|
||||
ShortCut = 24666
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker0
|
||||
ShortCut = 16432
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker1
|
||||
ShortCut = 16433
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker2
|
||||
ShortCut = 16434
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker3
|
||||
ShortCut = 16435
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker4
|
||||
ShortCut = 16436
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker5
|
||||
ShortCut = 16437
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker6
|
||||
ShortCut = 16438
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker7
|
||||
ShortCut = 16439
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker8
|
||||
ShortCut = 16440
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker9
|
||||
ShortCut = 16441
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker0
|
||||
ShortCut = 24624
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker1
|
||||
ShortCut = 24625
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker2
|
||||
ShortCut = 24626
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker3
|
||||
ShortCut = 24627
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker4
|
||||
ShortCut = 24628
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker5
|
||||
ShortCut = 24629
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker6
|
||||
ShortCut = 24630
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker7
|
||||
ShortCut = 24631
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker8
|
||||
ShortCut = 24632
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker9
|
||||
ShortCut = 24633
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41009
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel2
|
||||
ShortCut = 41010
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel3
|
||||
ShortCut = 41011
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel4
|
||||
ShortCut = 41012
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel5
|
||||
ShortCut = 41013
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel6
|
||||
ShortCut = 41014
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel7
|
||||
ShortCut = 41015
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel8
|
||||
ShortCut = 41016
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel9
|
||||
ShortCut = 41017
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel0
|
||||
ShortCut = 41008
|
||||
end
|
||||
item
|
||||
Command = EcFoldCurrent
|
||||
ShortCut = 41005
|
||||
end
|
||||
item
|
||||
Command = EcUnFoldCurrent
|
||||
ShortCut = 41003
|
||||
end
|
||||
item
|
||||
Command = EcToggleMarkupWord
|
||||
ShortCut = 32845
|
||||
end
|
||||
item
|
||||
Command = ecNormalSelect
|
||||
ShortCut = 24654
|
||||
end
|
||||
item
|
||||
Command = ecColumnSelect
|
||||
ShortCut = 24643
|
||||
end
|
||||
item
|
||||
Command = ecLineSelect
|
||||
ShortCut = 24652
|
||||
end
|
||||
item
|
||||
Command = ecTab
|
||||
ShortCut = 9
|
||||
end
|
||||
item
|
||||
Command = ecShiftTab
|
||||
ShortCut = 8201
|
||||
end
|
||||
item
|
||||
Command = ecMatchBracket
|
||||
ShortCut = 24642
|
||||
end
|
||||
item
|
||||
Command = ecColSelUp
|
||||
ShortCut = 40998
|
||||
end
|
||||
item
|
||||
Command = ecColSelDown
|
||||
ShortCut = 41000
|
||||
end
|
||||
item
|
||||
Command = ecColSelLeft
|
||||
ShortCut = 40997
|
||||
end
|
||||
item
|
||||
Command = ecColSelRight
|
||||
ShortCut = 40999
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageDown
|
||||
ShortCut = 40994
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageBottom
|
||||
ShortCut = 57378
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageUp
|
||||
ShortCut = 40993
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageTop
|
||||
ShortCut = 57377
|
||||
end
|
||||
item
|
||||
Command = ecColSelLineStart
|
||||
ShortCut = 40996
|
||||
end
|
||||
item
|
||||
Command = ecColSelLineEnd
|
||||
ShortCut = 40995
|
||||
end
|
||||
item
|
||||
Command = ecColSelEditorTop
|
||||
ShortCut = 57380
|
||||
end
|
||||
item
|
||||
Command = ecColSelEditorBottom
|
||||
ShortCut = 57379
|
||||
end>
|
||||
MouseActions = <>
|
||||
MouseTextActions = <>
|
||||
MouseSelActions = <>
|
||||
Lines.Strings = (
|
||||
''
|
||||
)
|
||||
Options = [eoBracketHighlight, eoGroupUndo, eoScrollPastEol, eoSmartTabs, eoTabIndent, eoTabsToSpaces, eoTrimTrailingSpaces]
|
||||
VisibleSpecialChars = [vscSpace, vscTabAtLast]
|
||||
SelectedColor.BackPriority = 50
|
||||
SelectedColor.ForePriority = 50
|
||||
SelectedColor.FramePriority = 50
|
||||
SelectedColor.BoldPriority = 50
|
||||
SelectedColor.ItalicPriority = 50
|
||||
SelectedColor.UnderlinePriority = 50
|
||||
SelectedColor.StrikeOutPriority = 50
|
||||
BracketHighlightStyle = sbhsBoth
|
||||
BracketMatchColor.Background = clNone
|
||||
BracketMatchColor.Foreground = clNone
|
||||
BracketMatchColor.Style = [fsBold]
|
||||
FoldedCodeColor.Background = clNone
|
||||
FoldedCodeColor.Foreground = clGray
|
||||
FoldedCodeColor.FrameColor = clGray
|
||||
MouseLinkColor.Background = clNone
|
||||
MouseLinkColor.Foreground = clBlue
|
||||
LineHighlightColor.Background = clNone
|
||||
LineHighlightColor.Foreground = clNone
|
||||
inline SynLeftGutterPartList1: TSynGutterPartList
|
||||
object SynGutterMarks1: TSynGutterMarks
|
||||
Width = 24
|
||||
MouseActions = <>
|
||||
end
|
||||
object SynGutterLineNumber1: TSynGutterLineNumber
|
||||
Width = 17
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clBtnFace
|
||||
MarkupInfo.Foreground = clNone
|
||||
DigitCount = 2
|
||||
ShowOnlyLineNumbersMultiplesOf = 1
|
||||
ZeroStart = False
|
||||
LeadingZeros = False
|
||||
end
|
||||
object SynGutterChanges1: TSynGutterChanges
|
||||
Width = 4
|
||||
MouseActions = <>
|
||||
ModifiedColor = 59900
|
||||
SavedColor = clGreen
|
||||
end
|
||||
object SynGutterSeparator1: TSynGutterSeparator
|
||||
Width = 2
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clWhite
|
||||
MarkupInfo.Foreground = clGray
|
||||
end
|
||||
object SynGutterCodeFolding1: TSynGutterCodeFolding
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clNone
|
||||
MarkupInfo.Foreground = clGray
|
||||
MouseActionsExpanded = <>
|
||||
MouseActionsCollapsed = <>
|
||||
end
|
||||
end
|
||||
end
|
||||
object SQuery: TSplitter
|
||||
Cursor = crVSplit
|
||||
Left = 0
|
||||
Height = 5
|
||||
Top = 256
|
||||
Width = 640
|
||||
Align = alBottom
|
||||
ResizeAnchor = akBottom
|
||||
end
|
||||
object ILQuery: TImageList
|
||||
left = 32
|
||||
top = 47
|
||||
Bitmap = {
|
||||
4C69080000001000000010000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000008080FF008080FF008080FF0080
|
||||
80FF008080FF008080FF00000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000008080FF00FFFFFF00FFFFFF00FF
|
||||
FFFF00FFFFFF008080FF00000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000008080FF00FFFFFF00FF
|
||||
FFFF00FFFFFF00FFFFFF008080FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000008080FF00FF
|
||||
FFFF00FFFFFF00FFFFFF00FFFFFF008080FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000080
|
||||
80FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008080FF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000008080FF00FFFFFF00FFFFFF00FFFFFF008080FF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000080
|
||||
80FF00FFFFFF00FFFFFF00FFFFFF008080FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000008080FF00FF
|
||||
FFFF00FFFFFF00FFFFFF008080FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000080
|
||||
80FF00FFFFFF00FFFFFF00FFFFFF008080FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000008080FF00FFFFFF00FFFFFF008080FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000008080FF00FFFFFF00FFFFFF008080FF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000008080FF00FFFFFF00FFFFFF008080FF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000008080FF00FFFFFF00FFFFFF008080FF000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000008080FF00FFFFFF008080FF000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000008080FF008080FF000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
80FF000000000000000000000000000000000000000000000000000080FF0000
|
||||
0000000000000000000000000000000000000000000000000000000080FF0000
|
||||
FFFF000080FF00000000000000000000000000000000000080FF0000FFFF0000
|
||||
80FF0000000000000000000000000000000000000000000080FF0000FFFF0000
|
||||
FFFF0000FFFF000080FF0000000000000000000080FF0000FFFF0000FFFF0000
|
||||
FFFF000080FF000000000000000000000000000080FF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF000080FF000080FF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF000080FF00000000000080FF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF000080FF00000000000080FF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF000080FF000000000000000000000000000080FF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF000080FF0000000000000000000000000000000000000000000080FF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
80FF000000000000000000000000000000000000000000000000000080FF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
80FF0000000000000000000000000000000000000000000080FF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF000080FF000000000000000000000000000080FF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF000080FF00000000000080FF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF000080FF00000000000080FF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF000080FF000080FF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF000080FF000000000000000000000000000080FF0000FFFF0000
|
||||
FFFF0000FFFF000080FF0000000000000000000080FF0000FFFF0000FFFF0000
|
||||
FFFF000080FF0000000000000000000000000000000000000000000080FF0000
|
||||
FFFF000080FF00000000000000000000000000000000000080FF0000FFFF0000
|
||||
80FF000000000000000000000000000000000000000000000000000000000000
|
||||
80FF000000000000000000000000000000000000000000000000000080FF0000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000004000FF004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000004000FF00FF00FF004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000004000FF00FF00FF00FF00FF004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000040
|
||||
00FF00FF00FF008000FF00FF00FF004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000004000FF00FF
|
||||
00FF008000FF008000FF00FF00FF004000FF0000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000004000FF00FF00FF0080
|
||||
00FF008000FF008000FF00FF00FF004000FF004000FF004000FF004000FF0040
|
||||
00FF004000FF004000FF004000FF00000000004000FF00FF00FF008000FF0080
|
||||
00FF008000FF008000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
|
||||
00FF00FF00FF00FF00FF004000FF004000FF00FF00FF008000FF008000FF0080
|
||||
00FF008000FF008000FF008000FF008000FF008000FF008000FF008000FF0080
|
||||
00FF008000FF00FF00FF004000FF004000FF00FF00FF008000FF008000FF0080
|
||||
00FF008000FF008000FF008000FF008000FF008000FF008000FF008000FF0080
|
||||
00FF008000FF00FF00FF004000FF00000000004000FF00FF00FF008000FF0080
|
||||
00FF008000FF008000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
|
||||
00FF00FF00FF00FF00FF004000FF0000000000000000004000FF00FF00FF0080
|
||||
00FF008000FF008000FF00FF00FF004000FF004000FF004000FF004000FF0040
|
||||
00FF004000FF004000FF004000FF000000000000000000000000004000FF00FF
|
||||
00FF008000FF008000FF00FF00FF004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000040
|
||||
00FF00FF00FF008000FF00FF00FF004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000004000FF00FF00FF00FF00FF004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000004000FF00FF00FF004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000004000FF004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000004000FF004000FF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000004000FF00FF00FF004000FF000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000004000FF00FF00FF00FF00FF004000FF0000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000004000FF00FF00FF008000FF00FF00FF0040
|
||||
00FF000000000000000000000000004000FF004000FF004000FF004000FF0040
|
||||
00FF004000FF004000FF004000FF004000FF00FF00FF008000FF008000FF00FF
|
||||
00FF004000FF0000000000000000004000FF00FF00FF00FF00FF00FF00FF00FF
|
||||
00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008000FF008000FF0080
|
||||
00FF00FF00FF004000FF00000000004000FF00FF00FF008000FF008000FF0080
|
||||
00FF008000FF008000FF008000FF008000FF008000FF008000FF008000FF0080
|
||||
00FF008000FF00FF00FF004000FF004000FF00FF00FF008000FF008000FF0080
|
||||
00FF008000FF008000FF008000FF008000FF008000FF008000FF008000FF0080
|
||||
00FF008000FF00FF00FF004000FF004000FF00FF00FF00FF00FF00FF00FF00FF
|
||||
00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008000FF008000FF0080
|
||||
00FF00FF00FF004000FF00000000004000FF004000FF004000FF004000FF0040
|
||||
00FF004000FF004000FF004000FF004000FF00FF00FF008000FF008000FF00FF
|
||||
00FF004000FF0000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000004000FF00FF00FF008000FF00FF00FF0040
|
||||
00FF000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000004000FF00FF00FF00FF00FF004000FF0000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000004000FF00FF00FF004000FF000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000004000FF004000FF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000004000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000FF000000FF000000FF000000FF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000FF000000FF00000000000000FF000000FF000000FF000000FF0000
|
||||
0000000000FF0000000000000000000000000000000000000000000000000000
|
||||
00FF0000000000000000000000000000000000000000000000FF000000FF0000
|
||||
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000FF0000
|
||||
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000FF000000FF0000
|
||||
00FF000000FF0000000000000000000000001B334EFF1B334EFF1B334EFF1B33
|
||||
4EFF000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000001B334EFF66A5E5FF9AD3FEFF85C5FEFF66A5
|
||||
E5FF1B334EFF1B334EFF1B334EFF1B334EFF1B334EFF1B334EFF1B334EFF0000
|
||||
00000000000000000000000000001B334EFF9AD3FEFF87C5FDFF82C2FEFF62AC
|
||||
F8FF62ACF8FF62ACF8FF62ACF8FF62ACF8FF62ACF8FF62ACF8FF62ACF8FF0000
|
||||
00FF0000000000000000000000001B334EFF8AC8FEFF82C2FEFF1B334EFF4D50
|
||||
53FF4D5053FF4F5255FF575A5CFF4E5154FF4E5154FF505356FF505356FF4E51
|
||||
54FF000000FF000000FF000000FF1B334EFF82C2FEFF4E86C4FF4C4F52FFF5F5
|
||||
F5FFF5F5F5FFECECECFFE4E4E4FFDCDCDCFFD4D4D4FFCBCBCBFFC4C4C4FFBCBC
|
||||
BCFFB5B5B5FFB3B3B3FF303030FF1B334EFF82C2FEFF19314AFFDBDBDBFFDEDF
|
||||
DFFFE7E8E8FFE4E6E6FFDEDFDFFFD1D2D2FFC6C7C7FFB9BABAFFACADADFF9FA0
|
||||
A0FF939494FF484949FF000000001B334EFF447DB7FF4E5153FFDADADAFFDADB
|
||||
DBFFE0E1E1FFDCDDDDFFD5D6D6FFCACBCBFFC0C1C1FFB5B6B6FFA8A9A9FF9FA0
|
||||
A0FF676868FF212222FF000000001B334EFF183049FFCDCDCDFFC9CACAFFD4D5
|
||||
D5FFD4D5D5FFD0D2D2FFCBCCCCFFC1C2C2FFB8B9B9FFAEAFAFFFA1A2A2FF9495
|
||||
95FF484949FF00000000000000001B334EFF505356FFCECECEFFBCBEBEFFC2C4
|
||||
C4FFC5C6C6FFC2C3C3FFBEBFBFFFB5B6B6FFADAEAEFFA4A5A5FF9D9E9EFF6E6F
|
||||
6FFF121212FF00000000000000001B334EFFBDBDBDFFA5A6A6FFA8AAAAFFABAD
|
||||
ADFFACAEAEFFAAABABFFA6A7A7FFA0A1A1FF999A9AFF929494FF8B8D8DFF4849
|
||||
49FF000000000000000000000000232323FF4A4A4AFF494A4AFF4B4C4CFF4C4C
|
||||
4CFF4B4C4CFF4A4B4BFF484949FF464646FF434343FF404141FF333434FF1E1F
|
||||
1FFF000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000A6D7FDFF447FC8FF263E5BFF1B1B1BFF3F3F
|
||||
3FFF404040FF404040FF404040FF404040FF404040FF404040FF404040FF1C1C
|
||||
1CFF1C1C1CFF00000000000000000478EAFF4AA9FAFF6FB3EEFF6B9DD0FF729A
|
||||
CCFFC3D0DEFFF4F7FAFFF2F6FBFFEEF4FAFFEAF1F9FFE6EEF8FFE2ECF7FF4040
|
||||
40FF777777FF1C1C1CFF00000000000000FF035CB6FF0475E1FF309AF8FF7FC1
|
||||
F5FF5F97D2FF6187A1FF989E6EFFA4A468FFA5A569FFB6BBABFFE0EAF6FF4040
|
||||
40FF737373FF1C1C1CFF00000000000000000B0E10FF061829FF023569FF0C7B
|
||||
E8FF2F84ECFF75A2EEFF8DA8DBFFD2DBE9FFE3ECF6FFE1EBF7FFDDE8F6FF4040
|
||||
40FF707070FF1C1C1CFF00000000000000001A1A1AFF717171FF202020FF1522
|
||||
33FF2A4571FF49679EFF5F7DB6FF44536AFF9B9B62FFB4B9A9FFDBE7F5FF4040
|
||||
40FF6D6D6DFF1C1C1CFF00000000000000001C1C1CFF7A7A7AFF3D3D3DFFDBDE
|
||||
E2FFC2C6CBFFB3B8BEFFACB2B9FFB0B7BEFFC3CBD6FFD6E2EFFFD8E5F4FF4040
|
||||
40FF696969FF1C1C1CFF00000000000000001C1C1CFF797979FF777777FF3F3F
|
||||
3FFF3D3D3DFF3C3C3CFF3C3C3CFF3C3C3CFF3D3D3DFF3F3F3FFF404040FF6767
|
||||
67FF666666FF1C1C1CFF00000000000000001C1C1CFF757575FF737373FF7272
|
||||
72FF707070FF6E6E6EFF6D6D6DFF6B6B6BFF696969FF676767FF666666FF6464
|
||||
64FF626262FF1C1C1CFF00000000000000001C1C1CFF727272FF707070FF6E6E
|
||||
6EFF404040FF404040FF404040FF404040FF404040FF404040FF404040FF6060
|
||||
60FF5F5F5FFF1C1C1CFF00000000000000001C1C1CFF6E6E6EFF6D6D6DFF4040
|
||||
40FFE6E6E6FFDBDBDBFFD1D1D1FFC7C7C7FF404040FF8E8E8EFF8B8B8BFF4040
|
||||
40FF5B5B5BFF1C1C1CFF00000000000000001C1C1CFF6B6B6BFF696969FF4040
|
||||
40FFDBDBDBFF424242FF424242FFBCBCBCFF404040FF858585FF838383FF4040
|
||||
40FF585858FF1C1C1CFF00000000000000001C1C1CFF676767FF666666FF4040
|
||||
40FFD1D1D1FF424242FF666666FFB2B2B2FF404040FF7D7D7DFF7B7B7BFF4040
|
||||
40FF545454FF1C1C1CFF00000000000000001C1C1CFF646464FF626262FF4040
|
||||
40FFC7C7C7FFBCBCBCFFB2B2B2FFA7A7A7FF404040FF757575FF737373FF4040
|
||||
40FF535353FF1C1C1CFF0000000000000000000000001C1C1CFF1C1C1CFF1C1C
|
||||
1CFF404040FF404040FF404040FF404040FF1C1C1CFF1C1C1CFF1C1C1CFF1C1C
|
||||
1CFF1C1C1CFF0000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000008000FF008000FF008000FF008000FF0080
|
||||
00FF008000FF008000FF008000FF008000FF008000FF008000FF000000000000
|
||||
0000000000000000000000000000008000FF00FF00FF00FF00FF00FF00FF00FF
|
||||
00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008000FF000000000000
|
||||
0000000000000000000000000000008000FF00FF00FF00FF00FF00FF00FF00FF
|
||||
00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008000FF000000000000
|
||||
0000000000000000000000000000008000FF008000FF008000FF008000FF0080
|
||||
00FF008000FF008000FF008000FF00FF00FF00FF00FF008000FF000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000008000FF00FF00FF00FF00FF008000FF000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000008000FF00FF00FF00FF00FF008000FF000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000008000FF008000FF008000FF00FF00FF00FF00FF008000FF008000FF0080
|
||||
00FF000000000000000000000000008080FF008080FF008080FF00C0C0FF00C0
|
||||
C0FF00C0C0FF008000FF00FF00FF00FF00FF00FF00FF00FF00FF008000FF00C0
|
||||
C0FF008080FF008080FF008080FF008080FF00C0C0FF00C0C0FF00C0C0FF00C0
|
||||
C0FF00C0C0FF00C0C0FF008000FF00FF00FF00FF00FF008000FF00C0C0FF00C0
|
||||
C0FF00C0C0FF00C0C0FF008080FF008080FF00C0C0FF00FFFFFF00C0C0FF00C0
|
||||
C0FF00C0C0FF00C0C0FF00C0C0FF008000FF008000FF00C0C0FF00C0C0FF00C0
|
||||
C0FF00FFFFFF00C0C0FF008080FF008080FF00C0C0FF00FFFFFF00C0C0FF00FF
|
||||
FFFF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00FFFFFF00C0
|
||||
C0FF00FFFFFF00C0C0FF008080FF008080FF00C0C0FF00FFFFFF00C0C0FF00FF
|
||||
FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0
|
||||
C0FF00FFFFFF00C0C0FF008080FF008080FF00C0C0FF00FFFFFF00FFFFFF00C0
|
||||
C0FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF00FF
|
||||
FFFF00FFFFFF00C0C0FF008080FF008080FF008080FF00C0C0FF00FFFFFF00FF
|
||||
FFFF00FFFFFF00FFFFFF00C0C0FF00C0C0FF00FFFFFF00FFFFFF00FFFFFF00FF
|
||||
FFFF00C0C0FF008080FF000000000000000000000000008080FF00C0C0FF00C0
|
||||
C0FF00C0C0FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0FF00C0C0FF00C0
|
||||
C0FF008080FF0000000000000000000000000000000000000000008080FF0080
|
||||
80FF008080FF00C0C0FF00C0C0FF00C0C0FF00C0C0FF008080FF008080FF0080
|
||||
80FF0000000000000000000000000000FFFF0000FFFF0000FFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0000
|
||||
FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFF
|
||||
FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFF
|
||||
FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFF
|
||||
FFFF0000FFFFFFFCFFFFFFFDFFFF0000FFFFFFFFFFFF0000FFFFFEFDFEFFFAFB
|
||||
FBFFF9FAFAFFFAFDFDFFFAFEFDFF0000FFFF0000FFFF0000FFFFFFFFFFFFFFFF
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFFFFFFFFFF0000FFFF0000FFFF0000
|
||||
FFFFF9FAFAFFFCFDFDFFFBFCFCFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFBFEFFFFFBFDFFFFFC
|
||||
FDFF0000FFFFFBF9F9FFF8F8F8FF0000FFFFFFFFFFFFFFFFFFFFFFFBFEFFFFFF
|
||||
FFFF0000FFFFFFF9FDFFFFF7FBFF0000FFFFFFFFFFFF0000FFFFFFFBFEFFFFF7
|
||||
FAFF0000FFFFFFFCFEFFFFFCFDFF0000FFFFFFFFFFFFFFFCFDFFFFF9FBFFFFFF
|
||||
FFFF0000FFFFFFF7F9FFFFF7F9FF0000FFFFFFFFFFFF0000FFFF0000FFFF0000
|
||||
FFFFFFF7F8FFFFF7F9FFFFF8FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFF7E7E7E00CECDCEFFDCD9DAFF757070FF756F
|
||||
6FFF756F6FFF756F6FFF756F6FFF756F6FFF756F6FFF756F6FFF756F6FFF756F
|
||||
6FFF756F6FFF756F70FF756D6DFF7E7E7E00CECDCEFFF1EEEFFFC7C2C2FFC7C1
|
||||
C1FFC7C1C0FFC7C1C0FFC7C1C0FFC7C1C0FFC7C1C0FFC7C1C0FFC7C1C1FFC7C1
|
||||
C1FFC7C1C1FFC7C1C2FFC7BEBDFF7E7E7E00CECDCEFFC1BEBFFF070102FF0701
|
||||
02FF070102FF070102FF070102FF070102FF070102FF070102FF070102FF0701
|
||||
02FF070102FF070102FF070102FF7E7E7E00CECDCEFFFFFCFCFFFFF9F9FFFFF7
|
||||
F8FFFFF7F7FFFFF8F7FFFFF8F7FFFFF7F7FFFFF7F7FFFFF7F7FFFFF7F7FFFFF7
|
||||
F7FFFFF7F7FFFFF7F8FFFFF4F6FF7E7E7E00CECDCEFFCECBCCFF3E3839FF3E37
|
||||
38FF3E3738FF3E3838FF3E3838FF3E3738FF3E3738FF3E3738FF3E3738FF3E37
|
||||
38FF3E3738FF3E3738FF3E3738FF7E7E7E00CECDCEFFE3E0E1FF918B8BFF918A
|
||||
8BFF918A8BFF918A8BFF918A8BFF918A8AFF918A8AFF918A8AFF918A8AFF918A
|
||||
8AFF918A8AFF918A8BFF918B8BFF7E7E7E00CECDCEFFEAE7E8FFACA7A6FFACA5
|
||||
A6FFACA5A6FFACA5A6FFACA5A6FFACA5A5FFCAC4C3FFFDF8F7FFFDF7F7FFFDF7
|
||||
F7FFE8E3E2FFACA5A6FFACA6A6FF7E7E7E00CECDCEFFC8C5C6FF231D1EFF231D
|
||||
1EFF231D1EFF231D1EFF231D1DFF231D1DFF746F6FFFFBF8F8FFFBF8F8FFFBF8
|
||||
F8FFC5C1C1FF231C1DFF231D1EFF
|
||||
}
|
||||
end
|
||||
object ALQuery: TActionList
|
||||
Images = ILQuery
|
||||
left = 85
|
||||
top = 48
|
||||
object AExecute: TAction
|
||||
Caption = 'Execute statement'
|
||||
Hint = 'Execute SQL statement(s)'
|
||||
ImageIndex = 0
|
||||
OnExecute = BExecClick
|
||||
OnUpdate = NotBusy
|
||||
ShortCut = 16453
|
||||
end
|
||||
object ACloseQuery: TAction
|
||||
Caption = 'ACloseQuery'
|
||||
Hint = 'Close dataset'
|
||||
ImageIndex = 1
|
||||
OnExecute = CloseQueryClick
|
||||
OnUpdate = DataShowing
|
||||
end
|
||||
object APreviousQuery: TAction
|
||||
Caption = 'Previous SQL'
|
||||
Hint = 'Previous SQL statement'
|
||||
ImageIndex = 2
|
||||
OnExecute = PreviousQueryClick
|
||||
OnUpdate = HavePreviousQuery
|
||||
end
|
||||
object ANextQuery: TAction
|
||||
Caption = 'ANextQuery'
|
||||
Hint = 'Next SQL statement'
|
||||
ImageIndex = 3
|
||||
OnExecute = NextQueryClick
|
||||
OnUpdate = HaveNextQuery
|
||||
end
|
||||
object ALoadSQL: TAction
|
||||
Caption = 'ALoadSQL'
|
||||
Hint = 'Load SQL from file'
|
||||
ImageIndex = 4
|
||||
OnExecute = LoadQueryClick
|
||||
OnUpdate = NotBusy
|
||||
end
|
||||
object ASaveSQL: TAction
|
||||
Caption = 'ASaveSQL'
|
||||
Hint = 'Save SQL to file'
|
||||
ImageIndex = 5
|
||||
OnExecute = SaveQueryClick
|
||||
OnUpdate = NotBusy
|
||||
end
|
||||
object AExport: TAction
|
||||
Caption = 'AExport'
|
||||
Hint = 'Export Data'
|
||||
ImageIndex = 6
|
||||
OnExecute = ExportDataClick
|
||||
OnUpdate = DataShowing
|
||||
end
|
||||
object ACreateCode: TAction
|
||||
Caption = 'ACreateCode'
|
||||
Hint = 'Create code from dataset'
|
||||
ImageIndex = 7
|
||||
OnExecute = CreateCodeClick
|
||||
OnUpdate = DataShowing
|
||||
end
|
||||
end
|
||||
object SQLSyn: TSynSQLSyn
|
||||
DefaultFilter = 'SQL Files (*.sql)|*.sql'
|
||||
TableNameAttri.Foreground = 2779939
|
||||
SQLDialect = sqlInterbase6
|
||||
left = 200
|
||||
top = 47
|
||||
end
|
||||
object ODSQL: TOpenDialog
|
||||
DefaultExt = '.sql'
|
||||
Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
|
||||
left = 144
|
||||
top = 48
|
||||
end
|
||||
object SDSQL: TSaveDialog
|
||||
Options = [ofOverwritePrompt, ofPathMustExist, ofEnableSizing]
|
||||
left = 256
|
||||
top = 48
|
||||
end
|
||||
end
|
496
tools/lazdatadesktop/fraquery.pp
Normal file
496
tools/lazdatadesktop/fraquery.pp
Normal file
@ -0,0 +1,496 @@
|
||||
unit fraquery;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, SynHighlighterSQL, SynEdit, LResources, Forms,
|
||||
DB, LCLType, Controls, ComCtrls, StdCtrls, ActnList, Dialogs, ExtCtrls,
|
||||
fpDatadict, fradata, lazdatadeskstr;
|
||||
|
||||
type
|
||||
|
||||
{ TQueryFrame }
|
||||
|
||||
TQueryFrame = class(TFrame)
|
||||
ACloseQuery: TAction;
|
||||
ACreateCode: TAction;
|
||||
AExport: TAction;
|
||||
ASaveSQL: TAction;
|
||||
ALoadSQL: TAction;
|
||||
ANextQuery: TAction;
|
||||
APreviousQuery: TAction;
|
||||
AExecute: TAction;
|
||||
ALQuery: TActionList;
|
||||
ILQuery: TImageList;
|
||||
MResult: TMemo;
|
||||
ODSQL: TOpenDialog;
|
||||
PCResult: TPageControl;
|
||||
FMSQL: TSynEdit;
|
||||
SDSQL: TSaveDialog;
|
||||
SQuery: TSplitter;
|
||||
SQLSyn: TSynSQLSyn;
|
||||
TBExecute: TToolButton;
|
||||
TBSep1: TToolButton;
|
||||
TBPrevious: TToolButton;
|
||||
TBClose: TToolButton;
|
||||
TBNext: TToolButton;
|
||||
TBSep2: TToolButton;
|
||||
TBLoadSQL: TToolButton;
|
||||
TBSaveSQL: TToolButton;
|
||||
TBSep3: TToolButton;
|
||||
ToolButton1: TToolButton;
|
||||
ToolButton2: TToolButton;
|
||||
TSResult: TTabSheet;
|
||||
TSData: TTabSheet;
|
||||
ToolBar1: TToolBar;
|
||||
procedure AExecuteExecute(Sender: TObject);
|
||||
procedure BExecClick(Sender: TObject);
|
||||
procedure CloseQueryClick(Sender: TObject);
|
||||
procedure HaveNextQuery(Sender: TObject);
|
||||
procedure HavePreviousQuery(Sender: TObject);
|
||||
procedure LoadQueryClick(Sender: TObject);
|
||||
procedure NextQueryClick(Sender: TObject);
|
||||
procedure OnMemoKey(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
procedure PreviousQueryClick(Sender: TObject);
|
||||
procedure SaveQueryClick(Sender: TObject);
|
||||
procedure ExportDataClick(Sender: TObject);
|
||||
procedure CreateCodeClick(Sender: TObject);
|
||||
Procedure NotBusy(Sender: TObject);
|
||||
Procedure DataShowing(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
FEngine: TFPDDEngine;
|
||||
FQueryHistory : TStrings;
|
||||
FCurrentQuery : Integer;
|
||||
FBusy : Boolean;
|
||||
FData : TDataFrame;
|
||||
procedure ClearResults;
|
||||
procedure DoExecuteQuery(Qry: String);
|
||||
procedure LocalizeFrame;
|
||||
procedure SetTableNames;
|
||||
public
|
||||
Protected
|
||||
procedure SetEngine(const AValue: TFPDDEngine);
|
||||
Function GetDataset: TDataset;
|
||||
Procedure CreateControls; virtual;
|
||||
Public
|
||||
Constructor Create(AOwner : TComponent); override;
|
||||
Destructor Destroy; override;
|
||||
procedure ExecuteQuery(Qry: String);
|
||||
procedure SaveQuery(AFileName: String);
|
||||
procedure LoadQuery(AFileName: String);
|
||||
Function AddToHistory(Qry : String) : Integer;
|
||||
Function NextQuery : Integer;
|
||||
Function PreviousQuery : Integer;
|
||||
Procedure CloseDataset;
|
||||
Procedure FreeDataset;
|
||||
Procedure ExportData;
|
||||
Procedure CreateCode;
|
||||
Procedure ActivatePanel;
|
||||
Property Dataset : TDataset Read GetDataset;
|
||||
Property Engine : TFPDDEngine Read FEngine Write SetEngine;
|
||||
Property QueryHistory : TStrings Read FQueryHistory;
|
||||
Property CurrentQuery : Integer Read FCurrentQuery;
|
||||
Property Busy : Boolean Read FBusy;
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses strutils, sqldb, fpdataexporter, fpcodegenerator;
|
||||
|
||||
{$r *.lfm}
|
||||
|
||||
|
||||
constructor TQueryFrame.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
FQueryHistory:=TStringList.Create;
|
||||
FCurrentQuery:=-1;
|
||||
CreateControls;
|
||||
LocalizeFrame;
|
||||
end;
|
||||
|
||||
destructor TQueryFrame.Destroy;
|
||||
begin
|
||||
FreeAndNil(FQueryHistory);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.SetEngine(const AValue: TFPDDEngine);
|
||||
begin
|
||||
if FEngine=AValue then exit;
|
||||
If Assigned(Dataset) then
|
||||
begin
|
||||
CloseDataset;
|
||||
FreeDataset;
|
||||
end;
|
||||
FEngine:=AValue;
|
||||
SetTableNames;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.SetTableNames;
|
||||
|
||||
begin
|
||||
SQLSyn.TableNames.BeginUpdate;
|
||||
try
|
||||
SQLSyn.TableNames.Clear;
|
||||
if (FEngine=Nil) or Not (FEngine.Connected) then
|
||||
exit;
|
||||
FEngine.GetTableList(SQLSyn.TableNames);
|
||||
finally
|
||||
SQLSyn.TableNames.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.ExportDataClick(Sender: TObject);
|
||||
begin
|
||||
ExportData;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.CreateCodeClick(Sender: TObject);
|
||||
begin
|
||||
CreateCode;
|
||||
end;
|
||||
|
||||
function TQueryFrame.GetDataset: TDataset;
|
||||
begin
|
||||
Result:=FData.Dataset;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.LocalizeFrame;
|
||||
|
||||
begin
|
||||
// Localize
|
||||
AExecute.Caption:=SExecute;
|
||||
AExecute.Hint:=SHintExecute;
|
||||
APreviousQuery.Caption:=SPrevious;
|
||||
APreviousQuery.Hint:=SHintPrevious;
|
||||
ANextQuery.Caption:=SNext;
|
||||
ANextQuery.Hint:=SHintNext;
|
||||
ALoadSQL.Caption:=SLoad;
|
||||
ALoadSQL.Hint:=SHintLoad;
|
||||
ASaveSQL.Caption:=SSave;
|
||||
ASaveSQL.Hint:=SHintSave;
|
||||
ACloseQuery.Caption:=SClose;
|
||||
ACloseQuery.Hint:=SHintClose;
|
||||
AExport.Caption:=SExport;
|
||||
AExport.Hint:=SHintExport;
|
||||
ACreateCode.Caption:=SCreateCode;
|
||||
ACreateCode.Hint:=SHintCreateCode;
|
||||
ODSQL.Filter:=SSQLFilters;
|
||||
SDSQL.Filter:=SSQLFilters;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.CreateControls;
|
||||
|
||||
begin
|
||||
FData:=TDataFrame.Create(Self);
|
||||
FData.Parent:=TSData;
|
||||
FData.Align:=alClient;
|
||||
FData.Visible:=True;
|
||||
FData.ShowExtraButtons:=False;
|
||||
MResult.Lines.Clear;
|
||||
MResult.Append(SReadyForSQL);
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
Callbacks
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
procedure TQueryFrame.OnMemoKey(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
begin
|
||||
If (Key=VK_E) and (Shift=[ssCtrl]) then
|
||||
begin
|
||||
AExecute.Execute;
|
||||
Key:=0;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.ClearResults;
|
||||
|
||||
Var
|
||||
DS : TDataset;
|
||||
|
||||
begin
|
||||
MResult.Clear;
|
||||
DS:=Dataset;
|
||||
If Assigned(DS) then
|
||||
CloseDataset;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.BExecClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
ClearResults;
|
||||
ExecuteQuery(FMSQL.Lines.Text);
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.AExecuteExecute(Sender: TObject);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.CloseQueryClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
CloseDataset;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.NotBusy(Sender : TObject);
|
||||
|
||||
begin
|
||||
(Sender as TAction).Enabled:=Not FBusy;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.DataShowing(Sender : TObject);
|
||||
|
||||
Var
|
||||
DS : TDataset;
|
||||
|
||||
begin
|
||||
DS:=Dataset;
|
||||
(Sender as TAction).Enabled:=Assigned(DS) and DS.Active;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.HaveNextQuery(Sender : TObject);
|
||||
|
||||
begin
|
||||
(Sender as TAction).Enabled:=(FCurrentQuery<FQueryHistory.Count-1);
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.HavePreviousQuery(Sender : TObject);
|
||||
|
||||
begin
|
||||
(Sender as TAction).Enabled:=(FCurrentQuery>0);
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.NextQueryClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
NextQuery;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.PreviousQueryClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
PreviousQuery;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.LoadQueryClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
With ODSQL do
|
||||
begin
|
||||
Options:=[ofFileMustExist];
|
||||
If Execute then
|
||||
LoadQuery(FileName);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.SaveQueryClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
With SDSQL.Create(Self) do
|
||||
begin
|
||||
If Execute then
|
||||
SaveQuery(FileName);
|
||||
end;
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
Actual commands
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
procedure TQueryFrame.LoadQuery(AFileName: String);
|
||||
|
||||
begin
|
||||
FMSQL.Lines.LoadFromFile(AFileName);
|
||||
end;
|
||||
|
||||
function TQueryFrame.AddToHistory(Qry: String): Integer;
|
||||
|
||||
Var
|
||||
I : Integer;
|
||||
|
||||
begin
|
||||
I:=FQueryHistory.IndexOf(Qry);
|
||||
If (I=-1) then
|
||||
FCurrentQuery:=FQueryHistory.Add(Qry)
|
||||
else
|
||||
begin
|
||||
FQueryHistory.Move(I,FQueryHistory.Count-1);
|
||||
FCurrentQuery:=FQueryHistory.Count-1;
|
||||
end;
|
||||
Result:=FCurrentQuery;
|
||||
end;
|
||||
|
||||
function TQueryFrame.NextQuery: Integer;
|
||||
begin
|
||||
If FCurrentQuery<FQueryHistory.Count-1 then
|
||||
begin
|
||||
Inc(FCurrentQuery);
|
||||
FMSQL.Lines.Text:=FQueryHistory[FCurrentQuery];
|
||||
end;
|
||||
Result:=FCurrentQuery;
|
||||
end;
|
||||
|
||||
function TQueryFrame.PreviousQuery: Integer;
|
||||
begin
|
||||
If (FCurrentQuery>0) then
|
||||
begin
|
||||
Dec(FCurrentQuery);
|
||||
FMSQL.Lines.Text:=FQueryHistory[FCurrentQuery];
|
||||
end;
|
||||
Result:=FCurrentQuery;
|
||||
end;
|
||||
|
||||
|
||||
procedure TQueryFrame.SaveQuery(AFileName: String);
|
||||
|
||||
begin
|
||||
FMSQL.Lines.SaveToFile(AFileName);
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.DoExecuteQuery(Qry : String);
|
||||
|
||||
Var
|
||||
DS : TDataset;
|
||||
S,RowsAff : String;
|
||||
N : Integer;
|
||||
TS,TE : TDateTime;
|
||||
|
||||
begin
|
||||
RowsAff:='';
|
||||
TS:=Now;
|
||||
MResult.Append(Format(SExecutingSQLStatement,[DateTimeToStr(TS)]));
|
||||
MResult.Append(Qry);
|
||||
If Not assigned(FEngine) then
|
||||
Raise Exception.Create(SErrNoEngine);
|
||||
S:=ExtractDelimited(1,Trim(Qry),[' ',#9,#13,#10]);
|
||||
If (CompareText(S,'SELECT')<>0) then
|
||||
begin
|
||||
N:=FEngine.RunQuery(Qry);
|
||||
TE:=Now;
|
||||
If ecRowsAffected in FEngine.EngineCapabilities then
|
||||
RowsAff:=Format(SRowsAffected,[N]);
|
||||
TSData.TabVisible:=False;
|
||||
PCResult.ActivePage:=TSResult;
|
||||
end
|
||||
else
|
||||
begin
|
||||
DS:=Dataset;
|
||||
If Assigned(DS) then
|
||||
FEngine.SetQueryStatement(Qry,DS)
|
||||
else
|
||||
begin
|
||||
DS:=FEngine.CreateQuery(Qry,Self);
|
||||
FData.Dataset:=DS;
|
||||
end;
|
||||
TSData.TabVisible:=true;
|
||||
PCResult.ActivePage:=TSData;
|
||||
DS.Open;
|
||||
TE:=Now;
|
||||
RowsAff:=Format(SRecordsFetched,[DS.RecordCount]);
|
||||
end;
|
||||
MResult.Append(Format(SSQLExecutedOK,[DateTimeToStr(TE)]));
|
||||
MResult.Append(Format(SExecutionTime,[FormatDateTime('hh:nn:ss.zzz',TE-TS,[fdoInterval])]));
|
||||
if (RowsAff<>'') then
|
||||
MResult.Append(RowsAff);
|
||||
AddToHistory(Qry);
|
||||
ACloseQuery.Update;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.ExecuteQuery(Qry : String);
|
||||
|
||||
Var
|
||||
Msg : String;
|
||||
|
||||
begin
|
||||
FBusy:=True;
|
||||
Try
|
||||
try
|
||||
DoExecuteQuery(Qry);
|
||||
except
|
||||
on Ed : ESQLDatabaseError do
|
||||
begin
|
||||
Msg:=Ed.Message;
|
||||
if Ed.ErrorCode<>0 then
|
||||
Msg:=Msg+sLineBreak+Format(SSQLErrorCode,[Ed.ErrorCode]);
|
||||
if (Ed.SQLState<>'') then
|
||||
Msg:=Msg+sLineBreak+Format(SSQLStatus,[Ed.SQLState]);
|
||||
end;
|
||||
On E : EDatabaseError do
|
||||
begin
|
||||
Msg:=E.Message;
|
||||
end;
|
||||
end;
|
||||
if (Msg<>'') then
|
||||
begin
|
||||
PCResult.ActivePage:=TSResult;
|
||||
MResult.Append(SErrorExecutingSQL);
|
||||
MResult.Append(Msg);
|
||||
end;
|
||||
Finally
|
||||
FBusy:=False;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.CloseDataset;
|
||||
begin
|
||||
FBusy:=True;
|
||||
Try
|
||||
FData.Dataset.Close;
|
||||
FData.Visible:=False;
|
||||
ACloseQuery.Update;
|
||||
Finally
|
||||
FBusy:=False;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.FreeDataset;
|
||||
|
||||
Var
|
||||
D : TDataset;
|
||||
|
||||
begin
|
||||
D:=FData.Dataset;
|
||||
FData.Dataset:=Nil;
|
||||
D.Free;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TQueryFrame.ExportData;
|
||||
|
||||
begin
|
||||
With TFPDataExporter.Create(Dataset) do
|
||||
try
|
||||
Execute;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.CreateCode;
|
||||
begin
|
||||
With TFPCodeGenerator.Create(Dataset) do
|
||||
try
|
||||
SQL:=FMSQL.Lines;
|
||||
DataSet:=Self.Dataset;
|
||||
Execute;
|
||||
Finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryFrame.ActivatePanel;
|
||||
begin
|
||||
If SQLSyn.TableNames.Count=0 then
|
||||
SetTableNames;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -221,8 +221,10 @@ object MainForm: TMainForm
|
||||
DefaultItemHeight = 16
|
||||
Images = ILMain
|
||||
PopupMenu = PMAll
|
||||
ReadOnly = True
|
||||
TabOrder = 0
|
||||
OnDblClick = TVAllDblClick
|
||||
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -140,6 +140,14 @@ resourcestring
|
||||
SHintExport = 'Export this data';
|
||||
SCreateCode = 'Create code';
|
||||
SHintCreateCode = 'Create pascal code for this data';
|
||||
SExecutingSQLStatement = '%s : Executing SQL statement:';
|
||||
SRecordsFetched = 'Records fetched: %d';
|
||||
SSQLexecutedOK = '%s : Statement executed succesfully.';
|
||||
SExecutionTime = 'Execution time: %s';
|
||||
SSQLErrorCode = 'SQL Error code: %d';
|
||||
SSQLStatus = 'SQL State: %s';
|
||||
SErrorExecutingSQL = 'Error executing SQL statement:';
|
||||
SReadyForSQL = 'Ready to execute SQL statements';
|
||||
|
||||
// Main form
|
||||
SSaveData = 'Save changes';
|
||||
|
@ -30,29 +30,32 @@
|
||||
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
||||
</local>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="7">
|
||||
<RequiredPackages Count="8">
|
||||
<Item1>
|
||||
<PackageName Value="lazdbexport"/>
|
||||
<PackageName Value="FCL"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="RunTimeTypeInfoControls"/>
|
||||
<PackageName Value="lazdbexport"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<PackageName Value="lazdatadict"/>
|
||||
<PackageName Value="RunTimeTypeInfoControls"/>
|
||||
</Item3>
|
||||
<Item4>
|
||||
<PackageName Value="SynEdit"/>
|
||||
<PackageName Value="lazdatadict"/>
|
||||
</Item4>
|
||||
<Item5>
|
||||
<PackageName Value="SQLDBLaz"/>
|
||||
<PackageName Value="SynEdit"/>
|
||||
</Item5>
|
||||
<Item6>
|
||||
<PackageName Value="LCL"/>
|
||||
<PackageName Value="SQLDBLaz"/>
|
||||
</Item6>
|
||||
<Item7>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item7>
|
||||
<Item8>
|
||||
<PackageName Value="DBFLaz"/>
|
||||
<MinVersion Minor="1" Release="1" Valid="True"/>
|
||||
</Item7>
|
||||
</Item8>
|
||||
</RequiredPackages>
|
||||
<Units Count="13">
|
||||
<Unit0>
|
||||
@ -101,27 +104,31 @@
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit7>
|
||||
<Unit8>
|
||||
<Filename Value="datapanel.pp"/>
|
||||
<Filename Value="README.txt"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit8>
|
||||
<Unit9>
|
||||
<Filename Value="querypanel.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit9>
|
||||
<Unit10>
|
||||
<Filename Value="README.txt"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit10>
|
||||
<Unit11>
|
||||
<Filename Value="frmselectconnectiontype.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="SelectConnectionTypeForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit11>
|
||||
<Unit12>
|
||||
</Unit9>
|
||||
<Unit10>
|
||||
<Filename Value="lazdatadeskstr.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit10>
|
||||
<Unit11>
|
||||
<Filename Value="fraquery.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="QueryFrame"/>
|
||||
<ResourceBaseClass Value="Frame"/>
|
||||
</Unit11>
|
||||
<Unit12>
|
||||
<Filename Value="fradata.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="DataFrame"/>
|
||||
<ResourceBaseClass Value="Frame"/>
|
||||
</Unit12>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
@ -133,11 +140,6 @@
|
||||
<SearchPaths>
|
||||
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Parsing>
|
||||
<SyntaxOptions>
|
||||
<UseAnsiStrings Value="False"/>
|
||||
</SyntaxOptions>
|
||||
</Parsing>
|
||||
<Linking>
|
||||
<Options>
|
||||
<Win32>
|
||||
|
@ -9,8 +9,8 @@ uses
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, frmmain, dicteditor, DBFLaz, frmimportdd,
|
||||
frmgeneratesql, SQLDBLaz, lazdatadict, RunTimeTypeInfoControls, frmSQLConnect,
|
||||
ddfiles, conneditor, datapanel, querypanel, frmselectconnectiontype,
|
||||
lazdatadeskstr, lazdbexport;
|
||||
ddfiles, conneditor, frmselectconnectiontype,
|
||||
lazdatadeskstr, lazdbexport, fraquery, fradata;
|
||||
|
||||
{$R *.res}
|
||||
|
||||
|
@ -1,510 +0,0 @@
|
||||
{
|
||||
***************************************************************************
|
||||
* *
|
||||
* This source is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This code is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* General Public License for more details. *
|
||||
* *
|
||||
* A copy of the GNU General Public License is available on the World *
|
||||
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
|
||||
* obtain it by writing to the Free Software Foundation, *
|
||||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
* *
|
||||
***************************************************************************
|
||||
}
|
||||
unit querypanel;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, DB, fpDatadict, FileUtil, Controls, ExtCtrls, StdCtrls,
|
||||
ComCtrls, LResources, LCLType, Dialogs, ActnList, datapanel, SynEdit, SynMemo,
|
||||
SynHighlighterSQL, lazdatadeskstr;
|
||||
|
||||
Type
|
||||
|
||||
{ TQueryPanel }
|
||||
|
||||
TQueryPanel = Class(TCustomPanel)
|
||||
private
|
||||
FEngine: TFPDDEngine;
|
||||
FPToolBar : TPanel;
|
||||
FToolBar : TToolBar;
|
||||
FIL : TImageList;
|
||||
FAL : TActionList;
|
||||
AExecute : TAction;
|
||||
ANextQuery : TAction;
|
||||
APreviousQuery : TAction;
|
||||
ACloseQuery : TAction;
|
||||
ALoadSQL : TAction;
|
||||
ASaveSQL : TAction;
|
||||
AExport : TAction;
|
||||
ACreateCode : TAction;
|
||||
FMSQL: TSynMemo; // later change to SQL highlighting Syn memo.
|
||||
FSplit: TSplitter;
|
||||
FData : TDataPanel;
|
||||
FQueryHistory : TStrings;
|
||||
FCurrentQuery : Integer;
|
||||
FBusy : Boolean;
|
||||
procedure BExecClick(Sender: TObject);
|
||||
procedure CloseQueryClick(Sender: TObject);
|
||||
Function GetDataset: TDataset;
|
||||
procedure HaveNextQuery(Sender: TObject);
|
||||
procedure HavePreviousQuery(Sender: TObject);
|
||||
procedure LoadQueryClick(Sender: TObject);
|
||||
procedure NextQueryClick(Sender: TObject);
|
||||
procedure OnMemoKey(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
procedure PreviousQueryClick(Sender: TObject);
|
||||
procedure SaveQueryClick(Sender: TObject);
|
||||
procedure SetEngine(const AValue: TFPDDEngine);
|
||||
procedure ExportDataClick(Sender: TObject);
|
||||
procedure CreateCodeClick(Sender: TObject);
|
||||
Protected
|
||||
Procedure CreateControls; virtual;
|
||||
procedure CreateActions; virtual;
|
||||
procedure CreateButtons; virtual;
|
||||
procedure CreateImageList; virtual;
|
||||
Procedure NotBusy(Sender: TObject);
|
||||
Procedure DataShowing(Sender: TObject);
|
||||
Public
|
||||
Constructor Create(AOwner : TComponent); override;
|
||||
Destructor Destroy; override;
|
||||
procedure ExecuteQuery(Qry: String);
|
||||
procedure SaveQuery(AFileName: String);
|
||||
procedure LoadQuery(AFileName: String);
|
||||
Function AddToHistory(Qry : String) : Integer;
|
||||
Function NextQuery : Integer;
|
||||
Function PreviousQuery : Integer;
|
||||
Procedure CloseDataset;
|
||||
Procedure FreeDataset;
|
||||
Procedure ExportData;
|
||||
Procedure CreateCode;
|
||||
Property Dataset : TDataset Read GetDataset;
|
||||
Property Engine : TFPDDEngine Read FEngine Write SetEngine;
|
||||
Property QueryHistory : TStrings Read FQueryHistory;
|
||||
Property CurrentQuery : Integer Read FCurrentQuery;
|
||||
Property Busy : Boolean Read FBusy;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{$R querypanel.res}
|
||||
|
||||
uses strutils, fpdataexporter, fpcodegenerator;
|
||||
|
||||
{ TQueryPanel }
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
Setup
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
constructor TQueryPanel.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
CreateControls;
|
||||
FQueryHistory:=TStringList.Create;
|
||||
FCurrentQuery:=-1;
|
||||
end;
|
||||
|
||||
destructor TQueryPanel.Destroy;
|
||||
begin
|
||||
FreeAndNil(FQueryHistory);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.SetEngine(const AValue: TFPDDEngine);
|
||||
begin
|
||||
if FEngine=AValue then exit;
|
||||
If Assigned(Dataset) then
|
||||
begin
|
||||
CloseDataset;
|
||||
FreeDataset;
|
||||
end;
|
||||
FEngine:=AValue;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.ExportDataClick(Sender: TObject);
|
||||
begin
|
||||
ExportData;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.CreateCodeClick(Sender: TObject);
|
||||
begin
|
||||
CreateCode;
|
||||
end;
|
||||
|
||||
function TQueryPanel.GetDataset: TDataset;
|
||||
begin
|
||||
Result:=FData.Dataset;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.CreateControls;
|
||||
begin
|
||||
// Images for actionlist/toolbar
|
||||
CreateImageList;
|
||||
// Actions;
|
||||
CreateActions;
|
||||
// Toolbar panel;
|
||||
FPToolBar:=TPanel.Create(Self);
|
||||
FPToolBar.Parent:=Self;
|
||||
FPToolBar.Align:=alTop;
|
||||
FPToolBar.height:=30;
|
||||
// Toolbar itself
|
||||
FToolBar:=TToolbar.Create(Self);
|
||||
FToolBar.Parent:=FPToolBar;
|
||||
FToolBar.Images:=FIL;
|
||||
FToolbar.Flat:=True;
|
||||
FToolBar.ShowHint:=True;
|
||||
// Toolbar buttons
|
||||
CreateButtons;
|
||||
// Data panel
|
||||
FData:=TDataPanel.Create(Self);
|
||||
FData.Parent:=Self;
|
||||
FData.Align:=alBottom;
|
||||
FData.Height:=200;
|
||||
FData.Visible:=False;
|
||||
FData.ShowExtraButtons:=False;
|
||||
// Splitter
|
||||
FSplit:=TSplitter.Create(Self);
|
||||
FSplit.Parent:=Self;
|
||||
FSplit.Align:=alBottom;
|
||||
// Syntax memo;
|
||||
FMSQL:=TSynMemo.Create(Self);
|
||||
FMSQL.Parent:=Self;
|
||||
FMSQL.Align:=AlClient;
|
||||
FMSQL.Highlighter:=TSynSQLSyn.Create(Self);
|
||||
FMSQL.Options:=[eoSmartTabDelete, eoSmartTabs, eoTabIndent, eoTabsToSpaces, eoTrimTrailingSpaces, eoBracketHighlight];
|
||||
FMSQL.OnKeyDown:=@OnMemoKey;
|
||||
FMSQL.ExtraLineSpacing:=2;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.CreateImageList;
|
||||
|
||||
begin
|
||||
FIL:=TImageList.Create(Self);
|
||||
FIL.AddResourceName(HInstance, 'qrybtn_execute');
|
||||
FIL.AddResourceName(HInstance, 'qrybtn_close');
|
||||
FIL.AddResourceName(HInstance, 'qrybtn_previous');
|
||||
FIL.AddResourceName(HInstance, 'qrybtn_next');
|
||||
FIL.AddResourceName(HInstance, 'qrybtn_open');
|
||||
FIL.AddResourceName(HInstance, 'qrybtn_save');
|
||||
FIL.AddResourceName(HInstance, 'qrybtn_export');
|
||||
FIL.AddResourceName(HInstance, 'qrybtn_code');
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.CreateActions;
|
||||
|
||||
Function NewAction(ACaption,AHint : String; AImageIndex : Integer; AOnExecute,AOnUpdate : TNotifyEvent) : TAction;
|
||||
|
||||
begin
|
||||
Result:=TAction.Create(Self);
|
||||
Result.Caption:=ACaption;
|
||||
Result.Hint:=AHint;
|
||||
Result.ImageIndex:=AImageIndex;
|
||||
Result.OnExecute:=AOnExecute;
|
||||
Result.OnUpdate:=AOnUpdate;
|
||||
Result.ActionList:=FAL;
|
||||
end;
|
||||
|
||||
begin
|
||||
FAL:=TActionList.Create(Self);
|
||||
FAL.Images:=FIL;
|
||||
AExecute:=NewAction(SExecute,SHintExecute,0,@BExecClick,@NotBusy);
|
||||
AExecute.ShortCut:=KeyToShortCut(VK_E,[ssCtrl]);
|
||||
ACloseQuery:=NewAction(SClose,SHintClose,1,@CloseQueryClick,@DataShowing);
|
||||
APreviousQuery:=NewAction(SPrevious,SHintPrevious,2,@PreviousQueryClick,@HavePreviousQuery);
|
||||
ANextQuery:=NewAction(SNext,SHintNext,3,@NextQueryClick,@HaveNextQuery);
|
||||
ALoadSQL:=NewAction(SLoad,SHintLoad,4,@LoadQueryClick,@NotBusy);
|
||||
ASaveSQL:=NewAction(SSave,SHintSave,5,@SaveQueryClick,@NotBusy);
|
||||
AExport:=NewAction(SExport,SHintExport,6,@ExportDataClick,@DataShowing);
|
||||
ACreateCode:=NewAction(SCreateCode,SHintCreateCode,7,@CreateCodeClick,@DataShowing);
|
||||
end;
|
||||
|
||||
|
||||
procedure TQueryPanel.CreateButtons;
|
||||
|
||||
Function NewButton(AAction : TAction; Var L : Integer) : TToolButton;
|
||||
|
||||
begin
|
||||
Result:=TToolbutton.Create(FToolBar);
|
||||
Result.Parent:=FToolBar;
|
||||
Result.Action:=AAction;
|
||||
Result.Left:=L;
|
||||
L:=L+FToolBar.ButtonWidth+1;
|
||||
end;
|
||||
|
||||
procedure NewSeparator(Var L : Integer);
|
||||
var
|
||||
B : TToolButton;
|
||||
begin
|
||||
B:=NewButton(Nil,L);
|
||||
B.Style:=tbsSeparator;
|
||||
B.Width:=8;
|
||||
Dec(L,FToolBar.ButtonWidth-8);
|
||||
end;
|
||||
|
||||
Var
|
||||
L : integer;
|
||||
|
||||
begin
|
||||
L:=0;
|
||||
NewButton(AExecute,L);
|
||||
NewButton(ACloseQuery,L);
|
||||
NewSeparator(L);
|
||||
NewButton(APreviousQuery,L);
|
||||
NewButton(ANextQuery,L);
|
||||
NewSeparator(L);
|
||||
NewButton(ALoadSQL,L);
|
||||
NewButton(ASaveSQL,L);
|
||||
NewSeparator(L);
|
||||
NewButton(AExport,L);
|
||||
NewButton(ACreateCode,L);
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
Callbacks
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
procedure TQueryPanel.OnMemoKey(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
begin
|
||||
If (Key=VK_E) and (Shift=[ssCtrl]) then
|
||||
begin
|
||||
AExecute.Execute;
|
||||
Key:=0;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.BExecClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
ExecuteQuery(FMSQL.Lines.Text);
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.CloseQueryClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
CloseDataset;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.NotBusy(Sender : TObject);
|
||||
|
||||
begin
|
||||
(Sender as TAction).Enabled:=Not FBusy;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.DataShowing(Sender : TObject);
|
||||
|
||||
Var
|
||||
DS : TDataset;
|
||||
|
||||
begin
|
||||
DS:=Dataset;
|
||||
(Sender as TAction).Enabled:=Assigned(DS) and DS.Active;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.HaveNextQuery(Sender : TObject);
|
||||
|
||||
begin
|
||||
(Sender as TAction).Enabled:=(FCurrentQuery<FQueryHistory.Count-1);
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.HavePreviousQuery(Sender : TObject);
|
||||
|
||||
begin
|
||||
(Sender as TAction).Enabled:=(FCurrentQuery>0);
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.NextQueryClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
NextQuery;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.PreviousQueryClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
PreviousQuery;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.LoadQueryClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
With TOpenDialog.Create(Self) do
|
||||
try
|
||||
Filter:=SSQLFilters;
|
||||
Options:=[ofFileMustExist];
|
||||
If Execute then
|
||||
LoadQuery(FileName);
|
||||
Finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.SaveQueryClick(Sender : TObject);
|
||||
|
||||
begin
|
||||
With TSaveDialog.Create(Self) do
|
||||
try
|
||||
Filter:=SSQLFilters;
|
||||
Options:=[ofPathMustExist,ofOverwritePrompt];
|
||||
If Execute then
|
||||
SaveQuery(FileName);
|
||||
Finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
Actual commands
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
procedure TQueryPanel.LoadQuery(AFileName: String);
|
||||
|
||||
begin
|
||||
FMSQL.Lines.LoadFromFile(AFileName);
|
||||
end;
|
||||
|
||||
function TQueryPanel.AddToHistory(Qry: String): Integer;
|
||||
|
||||
Var
|
||||
I : Integer;
|
||||
|
||||
begin
|
||||
I:=FQueryHistory.IndexOf(Qry);
|
||||
If (I=-1) then
|
||||
FCurrentQuery:=FQueryHistory.Add(Qry)
|
||||
else
|
||||
begin
|
||||
FQueryHistory.Move(I,FQueryHistory.Count-1);
|
||||
FCurrentQuery:=FQueryHistory.Count-1;
|
||||
end;
|
||||
Result:=FCurrentQuery;
|
||||
end;
|
||||
|
||||
Function TQueryPanel.NextQuery : Integer;
|
||||
begin
|
||||
If FCurrentQuery<FQueryHistory.Count-1 then
|
||||
begin
|
||||
Inc(FCurrentQuery);
|
||||
FMSQL.Lines.Text:=FQueryHistory[FCurrentQuery];
|
||||
end;
|
||||
Result:=FCurrentQuery;
|
||||
end;
|
||||
|
||||
Function TQueryPanel.PreviousQuery : Integer;
|
||||
begin
|
||||
If (FCurrentQuery>0) then
|
||||
begin
|
||||
Dec(FCurrentQuery);
|
||||
FMSQL.Lines.Text:=FQueryHistory[FCurrentQuery];
|
||||
end;
|
||||
Result:=FCurrentQuery;
|
||||
end;
|
||||
|
||||
|
||||
procedure TQueryPanel.SaveQuery(AFileName: String);
|
||||
|
||||
begin
|
||||
FMSQL.Lines.SaveToFile(AFileName);
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.ExecuteQuery(Qry : String);
|
||||
|
||||
Var
|
||||
DS : TDataset;
|
||||
S : String;
|
||||
N : Integer;
|
||||
|
||||
begin
|
||||
FBusy:=True;
|
||||
Try
|
||||
If Not assigned(FEngine) then
|
||||
Raise Exception.Create(SErrNoEngine);
|
||||
DS:=Dataset;
|
||||
If Assigned(DS) then
|
||||
CloseDataset;
|
||||
S:=ExtractDelimited(1,Trim(Qry),[' ',#9,#13,#10]);
|
||||
If (CompareText(S,'SELECT')<>0) then
|
||||
begin
|
||||
N:=FEngine.RunQuery(Qry);
|
||||
If ecRowsAffected in FEngine.EngineCapabilities then
|
||||
ShowMessage(Format(SRowsAffected,[N]));
|
||||
end
|
||||
else
|
||||
begin
|
||||
If Assigned(DS) then
|
||||
FEngine.SetQueryStatement(Qry,DS)
|
||||
else
|
||||
begin
|
||||
DS:=FEngine.CreateQuery(Qry,Self);
|
||||
FData.Dataset:=DS;
|
||||
end;
|
||||
FData.Visible:=True;
|
||||
FSplit.Top:=FData.Top-10;
|
||||
DS.Open;
|
||||
end;
|
||||
AddToHistory(Qry);
|
||||
ACloseQuery.Update;
|
||||
Finally
|
||||
FBusy:=False;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.CloseDataset;
|
||||
begin
|
||||
FBusy:=True;
|
||||
Try
|
||||
FData.Dataset.Close;
|
||||
FData.Visible:=False;
|
||||
ACloseQuery.Update;
|
||||
Finally
|
||||
FBusy:=False;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.FreeDataset;
|
||||
|
||||
Var
|
||||
D : TDataset;
|
||||
|
||||
begin
|
||||
D:=FData.Dataset;
|
||||
FData.Dataset:=Nil;
|
||||
D.Free;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TQueryPanel.ExportData;
|
||||
|
||||
begin
|
||||
With TFPDataExporter.Create(Dataset) do
|
||||
try
|
||||
Execute;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQueryPanel.CreateCode;
|
||||
begin
|
||||
With TFPCodeGenerator.Create(Dataset) do
|
||||
try
|
||||
SQL:=FMSQL.Lines;
|
||||
DataSet:=Self.Dataset;
|
||||
Execute;
|
||||
Finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user