📄 fuqexport4xlseditor.pas
字号:
procedure SheetBooleanTrue(Item: TListItem);
procedure SheetBooleanFalse(Item: TListItem);
procedure SheetNullString(Item: TListItem);
procedure SheetDeleteSelected(Item: TListItem);
procedure StyleRenumber(Item: TListItem);
procedure UnselectItem(Item: TListItem);
procedure SelectItem(Item: TListItem);
procedure DeleteItem(Item: TListItem);
procedure SetSelectedToFocused(Item: TListItem);
procedure DownloadDataFormat(Item: TListItem);
procedure UploadDataFormat(Item: TListItem);
protected
procedure Loaded; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
function RunQExportXLSEditor(ExportXLS: TQExport4XLS;
ADesigner: {$IFNDEF VCL4}TFormDesigner
{$ELSE}
{$IFNDEF VCL6}IFormDesigner
{$ELSE}IDesigner
{$ENDIF}
{$ENDIF}): boolean;
implementation
uses {$IFDEF WIN32}QExport4StrIDs{$ENDIF}
{$IFDEF LINUX}QExport4Consts{$ENDIF}, Db, DBGrids, fuQExport4SourceList,
fuQExport4XLSColorEditor, QExport4XLSCommon, QExport4CustomSource, TypInfo;
{$R *.dfm}
const
xlsUnknownFormat = -1;
xlsStandardFormat = 0;
xlsNoteFormat = 1;
xlsHyperlinkFormat = 2;
xlsChartFormat = 3;
xlsSeriesFormat = 3;
xlsCellFormat = 4;
xlsMergedCellFormat = 5;
lstColumns = 0;
lstOptions = 1;
lstStyles = 2;
lstExtensions = 3;
xlsHyperlink = 7;
xlsNote = 8;
xlsChart = 9;
xlsSeries = 10;
xlsCell = 11;
xlsMergedCell = 12;
function RunQExportXLSEditor(ExportXLS: TQExport4XLS;
ADesigner: {$IFNDEF VCL4}TFormDesigner
{$ELSE}
{$IFNDEF VCL6}IFormDesigner
{$ELSE}IDesigner
{$ENDIF}
{$ENDIF}): boolean;
var
WasNoSheets: boolean;
begin
Result := false;
if not Assigned(ExportXLS) then
raise Exception.Create('The QExportXLS parameter is not assigned!');
with TfmQExport4XLSEditor.Create(nil) do
try
FExportXLS := ExportXLS;
FDesigner := ADesigner;
FillExportSourceList;
WasNoSheets := FExportXLS.Sheets.Count = 0;
try
if WasNoSheets then
FExportXLS.Sheets.Add.LoadFromQExportXLS;
LoadSheets;
Result := ShowModal = mrOk;
if Result then
SaveSheets;
if WasNoSheets and (FExportXLS.Sheets.Count = 1) then begin
FExportXLS.Sheets[0].SaveToQExportXLS;
FExportXLS.Sheets.Clear;
end;
except
if WasNoSheets then
FExportXLS.Sheets.Clear;
raise;
end;
finally
Free;
end;
end;
{ TfmQExport4XLSEditor }
constructor TfmQExport4XLSEditor.Create(AOwner: TComponent);
begin
inherited;
FExportSourceList := TStringList.Create;
FLoading := false;
FNeedSelected := false;
cbXLSFont.Items.Assign(Screen.Fonts);
FCurrSheet := nil;
FCurrColumn := nil;
FCurrOption := nil;
FCurrStyle := nil;
FStandardFormatPageIndex := 0;
FNoteFormatPageIndex := 1;
FNotePageIndex := 0;
FHyperlinkPageIndex := 0;
FChartPageIndex := 0;
FSeriesPageIndex := 0;
FCellPageIndex := 0;
FMergedCellPageIndex := 0;
FCurrFormat := xlsUnknownFormat;
FCurrList := lstColumns;
lvOptions.Items.BeginUpdate;
try
lvOptions.Items.Clear;
lvOptions.Items.Add.Caption := {$IFDEF WIN32}QExportLoadStr(QED_XLS_Header){$ENDIF}
{$IFDEF LINUX}QED_XLS_Header{$ENDIF};
lvOptions.Items.Add.Caption := {$IFDEF WIN32}QExportLoadStr(QED_XLS_Caption){$ENDIF}
{$IFDEF LINUX}QED_XLS_Caption{$ENDIF};
lvOptions.Items.Add.Caption := {$IFDEF WIN32}QExportLoadStr(QED_XLS_Data){$ENDIF}
{$IFDEF LINUX}QED_XLS_Data{$ENDIF};
lvOptions.Items.Add.Caption := {$IFDEF WIN32}QExportLoadStr(QED_XLS_Aggregate){$ENDIF}
{$IFDEF LINUX}QED_XLS_Aggregate{$ENDIF};
lvOptions.Items.Add.Caption := {$IFDEF WIN32}QExportLoadStr(QED_XLS_Footer){$ENDIF}
{$IFDEF LINUX}QED_XLS_Footer{$ENDIF};
lvOptions.Items.Add.Caption := {$IFDEF WIN32}QExportLoadStr(QED_XLS_Hyperlink){$ENDIF}
{$IFDEF LINUX}QED_XLS_Hyperlink{$ENDIF};
lvOptions.Items.Add.Caption := {$IFDEF WIN32}QExportLoadStr(QED_XLS_Note){$ENDIF}
{$IFDEF LINUX}QED_XLS_Note{$ENDIF};
lvOptions.Items[0].Focused := true;
lvOptions.Items[0].Selected := true;
finally
lvOptions.Items.EndUpdate;
end;
end;
destructor TfmQExport4XLSEditor.Destroy;
begin
FExportSourceList.Free;
inherited;
end;
procedure TfmQExport4XLSEditor.TuneSheetButtons;
begin
tbtSheetEdit.Enabled := Assigned(lvSheets.ItemFocused);
tbtSheetDel.Enabled := Assigned(lvSheets.ItemFocused) or
(lvSheets.SelCount > 0);
tbtSheetUp.Enabled := Assigned(lvSheets.ItemFocused) and
(lvSheets.ItemFocused.Index > 0);
tbtSheetDown.Enabled := Assigned(lvSheets.ItemFocused) and
(lvSheets.ItemFocused.Index < lvSheets.Items.Count - 1);
pcFormats.Enabled := Assigned(lvSheets.ItemFocused);
pcFormats1.Enabled := Assigned(lvSheets.ItemFocused);
end;
procedure TfmQExport4XLSEditor.TuneExportRecCount;
begin
edExportRecCount.Enabled := rbExportOnly.Checked;
laExportRecCount_02.Enabled := rbExportOnly.Checked;
end;
procedure TfmQExport4XLSEditor.TuneHeader;
begin
edHeaderRowCount.Enabled := rbOnlyHeaderRows.Checked;
laHeaderRowCount_02.Enabled := rbOnlyHeaderRows.Checked;
end;
procedure TfmQExport4XLSEditor.TuneFooter;
begin
edFooterRowCount.Enabled := rbOnlyFooterRows.Checked;
laFooterRowCount_02.Enabled := rbOnlyFooterRows.Checked;
end;
procedure TfmQExport4XLSEditor.TuneFormats;
var
AssignedData: boolean;
Fnt: TxlsFont;
Algn: TxlsAlignment;
Brdrs: TxlsBorders;
Fill: TxlsFill;
Item: TxlsCustomItem;
Event: TNotifyEvent;
i: integer;
begin
Item := GetCurrFmtItem;
case FCurrList of
lstColumns: begin
SetFormatsActivePage(tsStandardFormat);
FCurrFormat := xlsStandardFormat;
tsXLSFont.PageControl := pcXLSDataFormat;
tsXLSBorders.PageControl := pcXLSDataFormat;
tsXLSFill.PageControl := pcXLSDataFormat;
tsXLSFont.PageIndex := 0;
tsXLSBorders.PageIndex := 1;
tsXLSFill.PageIndex := 2;
pcXLSDataFormat.ActivePage :=
pcXLSDataFormat.Pages[FStandardFormatPageIndex];
end;
lstOptions:
case Item.ItemType of
itNoteFormat: begin
SetFormatsActivePage(tsNoteFormat);
if tsXLSNoteBase.TabVisible then
tsXLSNoteBase.TabVisible := false;
FCurrFormat := xlsNoteFormat;
tsXLSFont.PageControl := pcXLSNotes;
tsXLSNoteBase.PageIndex := 0;
tsXLSFont.PageIndex := 1;
tsXLSNoteFill.PageIndex := 2;
//if not pcXLSNotes.Pages[FNoteFormatPageIndex].Visible then
//FNoteFormatPageIndex := 1;
pcXLSNotes.ActivePage :=
pcXLSNotes.Pages[FNoteFormatPageIndex];
end;
itFormat: begin
SetFormatsActivePage(tsStandardFormat);
FCurrFormat := xlsStandardFormat;
tsXLSFont.PageControl := pcXLSDataFormat;
tsXLSBorders.PageControl := pcXLSDataFormat;
tsXLSFill.PageControl := pcXLSDataFormat;
tsXLSFont.PageIndex := 0;
tsXLSBorders.PageIndex := 1;
tsXLSFill.PageIndex := 2;
if not pcXLSDataFormat.Pages[FStandardFormatPageIndex].Visible then
FStandardFormatPageIndex := 0;
pcXLSDataFormat.ActivePage :=
pcXLSDataFormat.Pages[FStandardFormatPageIndex];
end;
end;
lstStyles: begin
SetFormatsActivePage(tsStandardFormat);
FCurrFormat := xlsStandardFormat;
tsXLSFont.PageControl := pcXLSDataFormat;
tsXLSBorders.PageControl := pcXLSDataFormat;
tsXLSFill.PageControl := pcXLSDataFormat;
tsXLSFont.PageIndex := 0;
tsXLSBorders.PageIndex := 1;
tsXLSFill.PageIndex := 2;
pcXLSDataFormat.ActivePage :=
pcXLSDataFormat.Pages[FStandardFormatPageIndex];
end;
lstExtensions: begin
if Assigned(tvExtensions.Selected) then begin
case tvExtensions.Selected.ImageIndex of
xlsHyperlink: begin
SetFormatsActivePage(tsHyperlinkFormat);
tsXLSFont.PageControl := pcXLSHyperlinks;
tsXLSBorders.PageControl := pcXLSHyperlinks;
tsXLSFill.PageControl := pcXLSHyperlinks;
tsXLSHyperlinkBase.PageIndex := 0;
tsXLSFont.PageIndex := 1;
tsXLSBorders.PageIndex := 2;
tsXLSFill.PageIndex := 3;
pcXLSHyperlinks.ActivePage :=
pcXLSHyperlinks.Pages[FHyperlinkPageIndex];
FCurrFormat := xlsHyperlinkFormat;
end;
xlsNote: begin
SetFormatsActivePage(tsNoteFormat);
if not tsXLSNoteBase.TabVisible then
tsXLSNoteBase.TabVisible := true;
FCurrFormat := xlsNoteFormat;
tsXLSFont.PageControl := pcXLSNotes;
tsXLSNoteBase.PageIndex := 0;
tsXLSFont.PageIndex := 1;
tsXLSNoteFill.PageIndex := 2;
pcXLSNotes.ActivePage :=
pcXLSNotes.Pages[FNotePageIndex];
end;
xlsChart: begin
SetFormatsActivePage(tsChartFormat);
FCurrFormat := xlsChartFormat;
pcXLSCharts.ActivePage :=
pcXLSCharts.Pages[FChartPageIndex];
end;
xlsSeries: begin
SetFormatsActivePage(tsSeriesFormat);
FCurrFormat := xlsSeriesFormat;
pcXLSSeries.ActivePage :=
pcXLSSeries.Pages[FSeriesPageIndex];
end;
xlsCell: begin
SetFormatsActivePage(tsCellFormat);
tsXLSFont.PageControl := pcXLSCells;
tsXLSBorders.PageControl := pcXLSCells;
tsXLSFill.PageControl := pcXLSCells;
tsXLSCellBase.PageIndex := 0;
tsXLSFont.PageIndex := 1;
tsXLSBorders.PageIndex := 2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -