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

📄 qexport4dsgn.pas

📁 Advanced.Export.Component.v4.01.rar,delphi 第三方控件
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit QExport4Dsgn;

{$I VerCtrl.inc}

interface

uses Classes, Controls, Graphics, Windows
  {$IFDEF VCL6}, DesignIntf, DesignEditors, VCLEditors{$ELSE}, DsgnIntf{$ENDIF};

type

  TQExportEditor = class(TDefaultEditor)
  public
    function GetVerbCount: integer; override;
    function GetVerb(Index: integer): string; override;
    procedure ExecuteVerb(Index: integer); override;
    procedure Edit; override;
  end;

  TQExportHTMLEditor = class(TQExportEditor)
  protected
  {$IFDEF VCL6}
  procedure EditProperty(const Prop: IProperty; var Continue: Boolean);
    override;
  {$ELSE}
  procedure EditProperty(PropertyEditor: TPropertyEditor;
    var Continue, FreeEditor: boolean); override;
  {$ENDIF}
  public
    function GetVerbCount: integer; override;
    function GetVerb(Index: integer): string; override;
    procedure ExecuteVerb(Index: integer); override;
    procedure Edit; override;
  end;

  TQExportXLSEditor = class(TDefaultEditor)
    function GetVerbCount: integer; override;
    function GetVerb(Index: integer): string; override;
    procedure ExecuteVerb(Index: integer); override;
    procedure Edit; override;
  end;

  TQExportODSEditor = class(TDefaultEditor)
    function GetVerbCount: integer; override;
    function GetVerb(Index: integer): string; override;
    procedure ExecuteVerb(Index: integer); override;
    procedure Edit; override;
  end;

  TQExportODTEditor = class(TDefaultEditor)
    function GetVerbCount: integer; override;
    function GetVerb(Index: integer): string; override;
    procedure ExecuteVerb(Index: integer); override;
    procedure Edit; override;
  end;

  TQExportXlsxEditor = class(TDefaultEditor)
    function GetVerbCount: integer; override;
    function GetVerb(Index: integer): string; override;
    procedure ExecuteVerb(Index: integer); override;
    procedure Edit; override;
  end;

  TQExportDocxEditor = class(TDefaultEditor)
    function GetVerbCount: integer; override;
    function GetVerb(Index: integer): string; override;
    procedure ExecuteVerb(Index: integer); override;
    procedure Edit; override;
  end;

  TQHTMLTemplateProperty = class(TEnumProperty)
  public
    procedure Edit; override;
  end;

  TQDateTimeFormatProperty = class(TStringProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure GetValues(Proc: TGetStrProc); override;
  end;

  TQDateFormatProperty = class(TQDateTimeFormatProperty)
  public
    procedure GetValues(Proc: TGetStrProc); override;
  end;

  TQTimeFormatProperty = class(TQDateTimeFormatProperty)
  public
    procedure GetValues(Proc: TGetStrProc); override;
  end;

  TQFileNameProperty = class(TStringProperty)
  protected
    function GetFilter: string; virtual; abstract;
    function GetDefaultExt: string; virtual; abstract;
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
  end;

  TxlsColorProperty = class(TIntegerProperty
  {$IFDEF VCL6}, ICustomPropertyDrawing, ICustomPropertyListDrawing{$ENDIF})
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
    function GetValue: string; override;
    procedure GetValues(Proc: TGetStrProc); override;
    procedure SetValue(const Value: string); override;

    { ICustomPropertyListDrawing }
    {$IFDEF VCL5}
    procedure ListMeasureWidth(const Value: string; ACanvas: TCanvas;
      var AWidth: Integer); {$IFNDEF VCL6}override;{$ENDIF}
    {$ENDIF}
    {$IFDEF VCL6}
    procedure ListMeasureHeight(const Value: string; ACanvas: TCanvas;
      var AHeight: Integer);
    {$ENDIF}
    {$IFDEF VCL5}
    procedure ListDrawValue(const Value: string; ACanvas: TCanvas;
      const ARect: TRect; ASelected: Boolean); {$IFNDEF VCL6}override;{$ENDIF}
    {$ENDIF}

    { CustomPropertyDrawing }
    {$IFDEF VCL6}
    procedure PropDrawName(ACanvas: TCanvas; const ARect: TRect;
      ASelected: Boolean);
    {$ENDIF}
    {$IFDEF VCL5}
    procedure PropDrawValue(ACanvas: TCanvas; const ARect: TRect;
      ASelected: Boolean); {$IFNDEF VCL6}override;{$ENDIF}
    {$ENDIF}
  end;

  TQExcelFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQRTFFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQHTMLFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQHTMLBkgFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQLaTeXFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQASCIIFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQCSSFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQSQLFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQAppFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQXMLFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQDBFFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQODSFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQODTFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQXlsxFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQDocxFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQCFGFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQPDFFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQPictureFileNameProperty = class(TQFileNameProperty)
  protected
    function GetFilter: string; override;
    function GetDefaultExt: string; override;
  end;

  TQExportAboutProperty = class(TStringProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    function GetValue: string; override;
    procedure Edit; override;
  end;

  TQExportVersionProperty = class(TStringProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    function GetValue: string; override;
    procedure Edit; override;
  end;

  TQExcelFieldNameProperty = class(TStringProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure GetValues(Proc: TGetStrProc); override;
  end;

  TQExcelPictureNameProperty = class(TStringProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure GetValues(Proc: TGetStrProc); override;
  end;

  {$IFDEF ADO}
  TQDatabaseNameProperty = class(TQFileNameProperty)
    protected
      function GetFilter: string; override;
      function GetDefaultExt: string; override;
  end;
  {$ENDIF}


implementation

uses SysUtils, QExport4, QExport4HTML, QExport4ASCII, QExport4XLS, QExport4Dialog,
     QExport4Common, Db, DBGrids, ComCtrls, Grids, QExport4XLSCommon,
     QExport4ODT, QExport4ODS, QExport4Xlsx, QExport4Docx
     {$IFDEF WIN32}
       , Dialogs, fuQExport4About, fuQExport4HTMLTemplateEditor,
         fuQExport4ColumnsEditor, fuQExport4XLSEditor, TypInfo,
         fuQExport4XLSColorEditor, fuQExport4ODSEditor, fuQExport4ODTEditor,
         fuQExport4XlsxEditor, fuQExport4DocxEditor
       {$IFDEF VCL3}
         //, ToolsAPI
       {$ENDIF}
     {$ENDIF}
     {$IFDEF LINUX}
         , QDialogs, QExport4About_KLX, QExport4HTMLTemplateEditor_KLX,
         QExport4FieldsEditor_KLX, QExport4XLSFieldFormatEditor_KLX
     {$ENDIF};

function GetObjDelimiter: string;
begin
{$IFDEF BCB}
  Result := '->'
{$ELSE}
  Result := '.';
{$ENDIF}
end;

{ TQExportEditor }

procedure TQExportEditor.Edit;
begin
  inherited;
end;

procedure TQExportEditor.ExecuteVerb(Index: integer);
var
  FExport: TQExport4;
  FDialog: TQExport4Dialog;
begin
  case Index of
    0: begin
      FExport := nil;
      FDialog := nil;
      if Component is TQExport4
        then FExport := Component as TQExport4
        else if Component is TQExport4Dialog
               then FDialog := Component as TQExport4Dialog;

      if Assigned(FExport) then begin
        with FExport do
          if RunQExportColumnsEditor(ExportSource, DataSet, CustomSource, DBGrid,
            ListView, StringGrid, ExportedFields)
            then Designer.Modified
      end else begin
        if Assigned(FDialog) then
          with FDialog do
            if RunQExportColumnsEditor(ExportSource, DataSet, CustomSource, DBGrid,
                 ListView, StringGrid, ExportedFields)
              then Designer.Modified
      end;
    end;
    1: ShowAboutForm;
  end;
end;

function TQExportEditor.GetVerb(Index: integer): string;
begin
  case Index of
    0: Result := 'F&ields editor...';
    1: Result := '&About EMS QuickExport...';
  end;
end;

function TQExportEditor.GetVerbCount: integer;
begin
  Result := 2;
end;

{ TVHTMLTemplateProperty }

procedure TQHTMLTemplateProperty.Edit;
var
  QHE: TQExport4HTML;
  HT: THTMLTemplate;
begin
  QHE := GetComponent(0) as TQExport4HTML;
  with TfmQExport4HTMLTemplateEditor.Create(nil) do begin
    try
      Caption := Format('%s%s%s -- HTML Template Editor', [QHE.Owner.Name,
        GetObjDelimiter, QHE.Name]);
      HT := THTMLTemplate(GetOrdValue);
      Template := HT;
      if HT = htCustom then begin
        BackGroundColor := QHE.HTMLOptions.BackgroundColor;
        DefaultTextColor := QHE.HTMLOptions.TextFont.Color;
        LinkColor := QHE.HTMLOptions.LinkColor;
        VLinkColor := QHE.HTMLOptions.VLinkColor;
        ALinkColor := QHE.HTMLOptions.ALinkColor;
        TextFontName := QHE.HTMLOptions.TextFont.Name;
        HeadersRowBgColor := QHE.TableOptions.HeadersRowBgColor;
        HeadersRowFontColor := QHE.TableOptions.HeadersRowFontColor;
        TableBgColor := QHE.TableOptions.TableBgColor;
        TableFontColor := QHE.TableOptions.TableFontColor;
        OddRowBgColor := QHE.TableOptions.OddRowBgColor;
      end;
      if ShowModal = mrOk then begin
        SetOrdValue(Integer(Template));
        if Template = htCustom then begin
          QHE.HTMLOptions.BackGroundColor := BackgroundColor;
          QHE.HTMLOptions.TextFont.Color := DefaultTextColor;
          QHE.HTMLOptions.LinkColor := LinkColor;
          QHE.HTMLOptions.VLinkColor := VLinkColor;
          QHE.HTMLOptions.ALinkColor := ALinkColor;
          QHE.HTMLOptions.TextFont.Name := TextFontName;
          QHE.TableOptions.HeadersRowBgColor := HeadersRowBgColor;
          QHE.TableOptions.HeadersRowFontColor := HeadersRowFontColor;
          QHE.TableOptions.TableBgColor := TableBgColor;
          QHE.TableOptions.TableFontColor := TableFontColor;
          QHE.TableOptions.OddRowBgColor := OddRowBgColor;
        end;
      end;
    finally
      Free;
    end;
  end;
end;

{ TQDateTimeFormatProperty }

function TQDateTimeFormatProperty.GetAttributes: TPropertyAttributes;
begin
  Result := inherited GetAttributes + [paValueList];
end;

procedure TQDateTimeFormatProperty.GetValues(Proc: TGetStrProc);
begin
  Proc(ShortDateFormat + ' ' + ShortTimeFormat);
  Proc(ShortDateFormat + ' ' + LongTimeFormat);
  Proc(LongDateFormat + ' ' +  ShortTimeFormat);
  Proc(LongDateFormat + ' ' +  LongTimeFormat);
  Proc(ShortDateFormat);
  Proc(LongDateFormat);
  Proc(ShortTimeFormat);
  Proc(LongTimeFormat);
end;

{ TQDateFormatProperty }

procedure TQDateFormatProperty.GetValues(Proc: TGetStrProc);
begin
  Proc(ShortDateFormat);
  Proc(LongDateFormat);
end;

{ TQTimeFormatProperty }

procedure TQTimeFormatProperty.GetValues(Proc: TGetStrProc);
begin
  Proc(ShortTimeFormat);
  Proc(LongTimeFormat);
end;

{ TQHTMLExportEdtor }

function TQExportHTMLEditor.GetVerbCount: integer;
begin
  Result := 3;
end;

function TQExportHTMLEditor.GetVerb(Index: integer): string;
begin
  case Index of
   2: Result := 'Edit HTML template...';
   else
     Result:= inherited GetVerb(Index);
  end;
end;

procedure TQExportHTMLEditor.ExecuteVerb(Index: integer);
begin
  case Index of

⌨️ 快捷键说明

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