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

📄 frxeditsql.pas

📁 报表源码 FastReport 3 is new generation of the report generators components. It consists of report engin
💻 PAS
字号:
{******************************************}
{ }
{ FastReport v3.0 }
{ SQL editor }
{ }
{ Copyright (c) 1998-2005 }
{ by Alexander Tzyganenko, }
{ Fast Reports Inc. }
{ }
{******************************************}

unit frxEditSQL;

interface

{$I frx.inc}

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, ToolWin, frxSynMemo
{$IFDEF Delphi6}
, Variants
{$ENDIF}
{$IFDEF QBUILDER}
, fqbClass
{$ENDIF};

type
  TfrxSQLEditorForm = class(TForm)
    ToolBar:TToolBar;
    OkB:TToolButton;
    CancelB:TToolButton;
    QBB:TToolButton;
    procedure OkBClick(Sender:TObject);
    procedure CancelBClick(Sender:TObject);
    procedure FormCreate(Sender:TObject);
    procedure MemoKeyDown(Sender:TObject; var Key:Word;
      Shift:TShiftState);
    procedure FormHide(Sender:TObject);
    procedure FormShow(Sender:TObject);
    procedure QBBClick(Sender:TObject);
  private
    { Private declarations }
    FMemo:TfrxSyntaxMemo;
    FSQLSchema:String;
  public
    { Public declarations }
{$IFDEF QBUILDER}
    QBEngine:TfqbEngine;
{$ENDIF}
    property Memo:TfrxSyntaxMemo read FMemo;
    property SQLSchema:String read FSQLSchema write FSQLSchema;
  end;

implementation

{$R *.DFM}

uses frxClass, frxRes, frxDock, IniFiles;

procedure TfrxSQLEditorForm.FormCreate(Sender:TObject);
begin
  FMemo:= TfrxSyntaxMemo.Create(Self);
  with FMemo do
  begin
    Parent:= Self;
    Align:= alClient;
    Syntax:= 'SQL';
    ShowGutter:= False;
    Color:= clWindow;
    OnKeyDown:= MemoKeyDown;
{$I frxEditSQL.inc}
  end;
  Toolbar.Images:= frxResources.MainButtonImages;
{$IFDEF QBUILDER}
  QBB.Visible:= True;
{$ENDIF}
  frxResources.LocalizeForm(Self);
end;

procedure TfrxSQLEditorForm.FormShow(Sender:TObject);
var
  Ini:TCustomIniFile;
begin
  Ini:= TfrxCustomDesigner(Owner).Report.GetIniFile;
  Ini.WriteBool('Form.TfrxSQLEditorForm', 'Visible', True);
  frxRestoreFormPosition(Ini, Self);
  Ini.Free;
end;

procedure TfrxSQLEditorForm.FormHide(Sender:TObject);
var
  Ini:TCustomIniFile;
begin
  Ini:= TfrxCustomDesigner(Owner).Report.GetIniFile;
  frxSaveFormPosition(Ini, Self);
  Ini.Free;
{$IFDEF QBUILDER}
  if QBEngine<>nil then
    QBEngine.Free;
{$ENDIF}
end;

procedure TfrxSQLEditorForm.OkBClick(Sender:TObject);
begin
  ModalResult:= mrOk;
end;

procedure TfrxSQLEditorForm.CancelBClick(Sender:TObject);
begin
  ModalResult:= mrCancel;
end;

procedure TfrxSQLEditorForm.MemoKeyDown(Sender:TObject; var Key:Word;
  Shift:TShiftState);
begin
  if (Key = vk_Return) and (ssCtrl in Shift) then
    ModalResult:= mrOk
  else if Key = vk_Escape then
    ModalResult:= mrCancel;
end;

procedure TfrxSQLEditorForm.QBBClick(Sender:TObject);
{$IFDEF QBUILDER}
var
  fqbDialog:TfqbDialog;
{$ENDIF}
begin
{$IFDEF QBUILDER}
  fqbDialog:= TfqbDialog.Create(nil);
  try
    fqbDialog.Engine:= QBEngine;
    fqbDialog.SchemaInsideSQL:= False;
    fqbDialog.SQL:= Memo.Lines.Text;
    fqbDialog.SQLSchema:= FSQLSchema;

    if fqbDialog.Execute then
    begin
      Memo.Lines.Text:= fqbDialog.SQL;
      FSQLSchema:= fqbDialog.SQLSchema;
    end;
  finally
    fqbDialog.Free;
  end;
{$ENDIF}
end;

end.

⌨️ 快捷键说明

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