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

📄 fuqexport4xlseditor.pas

📁 Advanced.Export.Component.v4.01.rar,delphi 第三方控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    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 + -