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