📄 fuqexport4xlsxeditor.pas
字号:
unit fuQExport4XlsxEditor;
interface
uses
Windows, Messages, SysUtils{$IFDEF VCL6}, Variants{$ENDIF}, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ImgList, StdCtrls, ExtCtrls, Buttons, ComCtrls, ToolWin,
QExport4, QExport4Common, QExport4Xlsx;
type
TfmQExport4XlsxEditor = class(TForm)
paButtons: TPanel;
buOK: TButton;
buCancel: TButton;
paFile: TPanel;
laFileName: TLabel;
btnSave: TSpeedButton;
edFileName: TEdit;
chkShow: TCheckBox;
chkPrint: TCheckBox;
paSelector: TPanel;
pcStyleEditor: TPageControl;
tsOptions: TTabSheet;
lvOptions: TListView;
tsStripStyles: TTabSheet;
tlbProcessing: TToolBar;
buAdd: TToolButton;
buRemove: TToolButton;
tlbSeparator1: TToolButton;
buMoveUp: TToolButton;
buMoveDown: TToolButton;
rgStripStyle: TRadioGroup;
lvSStyles: TListView;
paTableName: TPanel;
laTableName: TLabel;
edSheetName: TEdit;
paOptions: TPanel;
pcOptions: TPageControl;
tsCommon: TTabSheet;
bvl1: TBevel;
bvl2: TBevel;
laSkipRecCount_01: TLabel;
laSkipRecCount_02: TLabel;
laCaptionRow: TLabel;
laExportRecCount_02: TLabel;
chkAllowCaptions: TCheckBox;
chkAutoCalcStrType: TCheckBox;
chkGoToFirsrRec: TCheckBox;
chkVisibleFields: TCheckBox;
edSkipRecCount: TEdit;
edCaptionRow: TEdit;
rbExportAll: TRadioButton;
rbExportOnly: TRadioButton;
edExportRecCount: TEdit;
tsHeader: TTabSheet;
meHeader: TMemo;
tsFooter: TTabSheet;
meFooter: TMemo;
tsFormats: TTabSheet;
laInteger: TLabel;
laDate: TLabel;
laDateTime: TLabel;
laTrue: TLabel;
laFalse: TLabel;
laNull: TLabel;
laFloat: TLabel;
laTime: TLabel;
laCurrency: TLabel;
edInteger: TEdit;
edDate: TEdit;
edDateTime: TEdit;
edTrue: TEdit;
edFalse: TEdit;
edNull: TEdit;
edFloat: TEdit;
edTime: TEdit;
edCurrency: TEdit;
btnRestoreInitial: TBitBtn;
btnResetDefault: TBitBtn;
paStylesEdit: TPanel;
pcAllOptions: TPageControl;
tsCommonCellStyle: TTabSheet;
pcCommonCellStyle: TPageControl;
tsFont: TTabSheet;
bvl3: TBevel;
bvl4: TBevel;
bvl5: TBevel;
laXlsxFont: TLabel;
laXlsxFontSize: TLabel;
btnFontColor: TSpeedButton;
pbFontColor: TPaintBox;
bvl6: TBevel;
btnFontBold: TSpeedButton;
btnFontItalic: TSpeedButton;
btnUnderlineSingle: TSpeedButton;
btnHorizontalLeft: TSpeedButton;
btnHorizontalCenter: TSpeedButton;
btnHorizontalRight: TSpeedButton;
bvl8: TBevel;
btnVerticalTop: TSpeedButton;
btnVerticalCenter: TSpeedButton;
btnVerticalBottom: TSpeedButton;
btnBackgroundColor: TSpeedButton;
pbBackColor: TPaintBox;
cbXlsxFont: TComboBox;
cbXlsxFontSize: TComboBox;
chkUseBackground: TCheckBox;
tsBorder: TTabSheet;
bvl9: TBevel;
btnBorderColor: TSpeedButton;
pbBorder: TPaintBox;
laBorderStyle: TLabel;
laBorderColor: TLabel;
chkUseBorder: TCheckBox;
ilButtons: TImageList;
ilListView: TImageList;
ColorDialog: TColorDialog;
sdFileName: TSaveDialog;
pmHeaderFooter: TPopupMenu;
miInsertTab: TMenuItem;
miClear: TMenuItem;
btnWrapText: TSpeedButton;
cbBorderStyle: TComboBox;
procedure edFileNameChange(Sender: TObject);
procedure edSheetNameChange(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure lvOptionsSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure lvSStylesSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure pcStyleEditorChange(Sender: TObject);
procedure btnFontColorMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure btnFontColorMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure btnFontColorClick(Sender: TObject);
procedure btnBackgroundColorClick(Sender: TObject);
procedure btnBackgroundColorMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure btnBackgroundColorMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure pbFontColorPaint(Sender: TObject);
procedure pbBackColorPaint(Sender: TObject);
procedure chkUseBackgroundClick(Sender: TObject);
procedure chkUseBorderClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnFontBoldClick(Sender: TObject);
procedure btnFontItalicClick(Sender: TObject);
procedure btnUnderlineSingleClick(Sender: TObject);
procedure rbExportAllClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure cbXlsxFontChange(Sender: TObject);
procedure cbXlsxFontSizeChange(Sender: TObject);
procedure lvSStylesChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure buAddClick(Sender: TObject);
procedure buRemoveClick(Sender: TObject);
procedure buMoveUpClick(Sender: TObject);
procedure buMoveDownClick(Sender: TObject);
procedure btnHorizontalLeftClick(Sender: TObject);
procedure btnHorizontalCenterClick(Sender: TObject);
procedure btnHorizontalRightClick(Sender: TObject);
procedure btnVerticalTopClick(Sender: TObject);
procedure btnVerticalCenterClick(Sender: TObject);
procedure btnVerticalBottomClick(Sender: TObject);
procedure btnWrapTextClick(Sender: TObject);
procedure btnBorderColorClick(Sender: TObject);
procedure btnBorderColorMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure btnBorderColorMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure pbBorderPaint(Sender: TObject);
procedure cbBorderStyleChange(Sender: TObject);
private
FExportXlsx: TQExport4Xlsx;
FHeaderStyle: TXlsxCellStyle;
FCaptionRowStyle: TXlsxCellStyle;
FDataStyle: TXlsxCellStyle;
FFooterStyle: TXlsxCellStyle;
FStripStylesList: TXlsxStripStyleList;
FFileName: WideString;
FSheetName: WideString;
FSelectedOptions: TXlsxCellStyle;
FEnableFontAndBorder: Boolean;
procedure SetFileName(const Value: WideString);
procedure SetSheetName(const Value: WideString);
procedure SetExportXlsx(const Value: TQExport4Xlsx);
procedure SetSelectedOptions(const Value: TXlsxCellStyle);
procedure SetEnableFontAndBorder(const Value: Boolean);
procedure SetFocusedToSelected(Item: TListItem);
procedure SetStripStylesNumber(Item: TListItem);
private
procedure SetFontAndBorder(Source: TXlsxCellStyle);
public
procedure ApplyChanges;
procedure FillStripStyles;
procedure FillOptions;
procedure FillOther;
procedure Default;
property FileName: WideString read FFileName write SetFileName;
property SheetName: WideString read FSheetName write SetSheetName;
property ExportXlsx: TQExport4Xlsx read FExportXlsx
write SetExportXlsx;
property SelectedOptions: TXlsxCellStyle read FSelectedOptions
write SetSelectedOptions;
property EnableFontAndBorder: Boolean read FEnableFontAndBorder
write SetEnableFontAndBorder;
end;
var
fmQExport4XlsxEditor: TfmQExport4XlsxEditor;
function RunQExportXlsxEditor(AExport: TQExport4Xlsx): Boolean;
implementation
uses
QExport4MSOfficeCommon;
{$R *.dfm}
function RunQExportXlsxEditor(AExport: TQExport4Xlsx): Boolean;
begin
if not Assigned(AExport) then
raise Exception.Create('Export is not assigned.');
with TfmQExport4XlsxEditor.Create(nil) do
try
ExportXlsx := AExport;
Default;
FillStripStyles;
FillOptions;
FillOther;
Result := ShowModal = mrOk;
if Result then
ApplyChanges;
finally
Free;
end;
end;
{ TfmQExport4XlsxEditor }
procedure TfmQExport4XlsxEditor.edFileNameChange(Sender: TObject);
begin
FileName := edFileName.Text;
end;
procedure TfmQExport4XlsxEditor.edSheetNameChange(Sender: TObject);
begin
SheetName := edSheetName.Text;
end;
procedure TfmQExport4XlsxEditor.btnSaveClick(Sender: TObject);
begin
sdFileName.FileName := edFileName.Text;
if sdFileName.Execute then
FileName := sdFileName.FileName;
end;
procedure TfmQExport4XlsxEditor.lvOptionsSelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
begin
if Item.Selected then
SelectedOptions := TXlsxCellStyle(Item.Data);
end;
procedure TfmQExport4XlsxEditor.lvSStylesSelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
begin
if Item.Selected then
SelectedOptions := TXlsxCellStyle(Item.Data);
end;
procedure TfmQExport4XlsxEditor.pcStyleEditorChange(Sender: TObject);
begin
case pcStyleEditor.ActivePage.Tag of
1: //tsOptions
if Assigned(lvOptions.Selected) then
SelectedOptions := TXlsxCellStyle(lvOptions.Selected.Data);
2: //tsStripStyles
if Assigned(lvSStyles.Selected) then
SelectedOptions := TXlsxCellStyle(lvSStyles.Selected.Data)
else
SelectedOptions := nil;
end;
end;
procedure TfmQExport4XlsxEditor.pbFontColorPaint(Sender: TObject);
begin
if Assigned(FSelectedOptions) then
PaintStandardColors(pbFontColor, FSelectedOptions.Font.Color);
end;
procedure TfmQExport4XlsxEditor.btnFontColorClick(Sender: TObject);
begin
if ColorDialog.Execute then
begin
if ColorDialog.Color = -1 then
ColorDialog.Color := clBlack;
FSelectedOptions.Font.Color := ColorDialog.Color;
pbFontColor.Repaint;
end;
end;
procedure TfmQExport4XlsxEditor.btnFontColorMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
IncLeftAndTop(pbFontColor);
end;
procedure TfmQExport4XlsxEditor.btnFontColorMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
DecLeftAndTop(pbFontColor);
end;
procedure TfmQExport4XlsxEditor.pbBackColorPaint(Sender: TObject);
begin
if Assigned(FSelectedOptions) then
PaintStandardColors(pbBackColor, FSelectedOptions.BackgroundColor);
end;
procedure TfmQExport4XlsxEditor.btnBackgroundColorClick(Sender: TObject);
begin
if ColorDialog.Execute then
begin
if ColorDialog.Color = -1 then
ColorDialog.Color := clBlack;
FSelectedOptions.BackgroundColor := ColorDialog.Color;
pbBackColor.Repaint;
end;
end;
procedure TfmQExport4XlsxEditor.btnBackgroundColorMouseDown(
Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
IncLeftAndTop(pbBackColor);
end;
procedure TfmQExport4XlsxEditor.btnBackgroundColorMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
DecLeftAndTop(pbBackColor);
end;
procedure TfmQExport4XlsxEditor.chkUseBackgroundClick(Sender: TObject);
begin
btnBackgroundColor.Enabled := chkUseBackground.Checked;
if Assigned(FSelectedOptions) then
FSelectedOptions.UseBackground := chkUseBackground.Checked;
end;
procedure TfmQExport4XlsxEditor.chkUseBorderClick(Sender: TObject);
begin
laBorderColor.Enabled := chkUseBorder.Checked;
btnBorderColor.Enabled := chkUseBorder.Checked;
laBorderStyle.Enabled := chkUseBorder.Checked;
cbBorderStyle.Enabled := chkUseBorder.Checked;
if Assigned(FSelectedOptions) then
FSelectedOptions.UseBorder := chkUseBorder.Checked;
end;
procedure TfmQExport4XlsxEditor.FormShow(Sender: TObject);
begin
if Assigned(lvOptions.Items[0]) then
begin
lvOptions.Items[0].Focused := True;
lvOptions.Items[0].Selected := True;
end;
end;
procedure TfmQExport4XlsxEditor.btnFontBoldClick(Sender: TObject);
begin
if btnFontBold.Down then
FSelectedOptions.Font.Style := FSelectedOptions.Font.Style + [fsBold]
else
FSelectedOptions.Font.Style := FSelectedOptions.Font.Style - [fsBold];
end;
procedure TfmQExport4XlsxEditor.btnFontItalicClick(Sender: TObject);
begin
if btnFontItalic.Down then
FSelectedOptions.Font.Style := FSelectedOptions.Font.Style + [fsItalic]
else
FSelectedOptions.Font.Style := FSelectedOptions.Font.Style - [fsItalic];
end;
procedure TfmQExport4XlsxEditor.btnUnderlineSingleClick(Sender: TObject);
begin
if btnUnderlineSingle.Down then
FSelectedOptions.Font.Style := FSelectedOptions.Font.Style + [fsUnderline]
else
FSelectedOptions.Font.Style := FSelectedOptions.Font.Style - [fsUnderline];
end;
procedure TfmQExport4XlsxEditor.rbExportAllClick(Sender: TObject);
begin
edExportRecCount.Enabled := rbExportOnly.Checked;
laExportRecCount_02.Enabled := rbExportOnly.Checked;
end;
procedure TfmQExport4XlsxEditor.FormCreate(Sender: TObject);
begin
FHeaderStyle := TXlsxCellStyle.Create;
FCaptionRowStyle := TXlsxCellStyle.Create;
FDataStyle := TXlsxCellStyle.Create;
FFooterStyle := TXlsxCellStyle.Create;
FStripStylesList := TXlsxStripStyleList.Create(TXlsxStripStyle);
end;
procedure TfmQExport4XlsxEditor.FormDestroy(Sender: TObject);
procedure ClearListViewData(ListView: TListView);
var
i: Integer;
begin
for i := 0 to ListView.Items.Count - 1 do
if Assigned(ListView.Items[i]) then
ListView.Items[i].Data := nil;
end;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -