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

📄 fuqexport4docxeditor.pas

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

procedure TfmQExport4DocxEditor.lvSStylesChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  if Assigned(lvSStyles.ItemFocused) then
  begin
    buRemove.Enabled := (lvSStyles.ItemFocused.Index >= 0);
    buMoveUp.Enabled := (lvSStyles.ItemFocused.Index > 0);
    buMoveDown.Enabled := (lvSStyles.ItemFocused.Index < lvSStyles.Items.Count - 1)
                         and (lvSStyles.ItemFocused.Index >= 0);
  end else
  begin
    buRemove.Enabled := (lvSStyles.Items.Count > 0);
    buMoveUp.Enabled := False;
    buMoveDown.Enabled := False;
  end;
end;

procedure TfmQExport4DocxEditor.lvSStylesSelectItem(Sender: TObject;
  Item: TListItem; Selected: Boolean);
begin
  if Item.Selected then
    SelectedOptions := TDocxCellStyle(Item.Data);
end;

procedure TfmQExport4DocxEditor.pbFontColorPaint(Sender: TObject);
begin
  if Assigned(FSelectedOptions) then
    PaintStandardColors(pbFontColor, FSelectedOptions.Font.Color);
end;

procedure TfmQExport4DocxEditor.pbBackColorPaint(Sender: TObject);
begin
  if Assigned(FSelectedOptions) then
    PaintStandardColors(pbBackColor, FSelectedOptions.BackgroundColor);
end;

procedure TfmQExport4DocxEditor.chkUseHighlightClick(Sender: TObject);
begin                                                         
  cbHighlight.Enabled := chkUseHighlight.Checked;
  if Assigned(FSelectedOptions) then
    FSelectedOptions.UseHighlight := chkUseHighlight.Checked;
end;

procedure TfmQExport4DocxEditor.rbExportAllClick(Sender: TObject);
begin
  edExportRecCount.Enabled := rbExportOnly.Checked;
  laExportRecCount_02.Enabled := rbExportOnly.Checked;
end;

procedure TfmQExport4DocxEditor.buAddClick(Sender: TObject);
var
  Num: Integer;
begin
  FStripStylesList.Add;
  lvSStyles.Items.BeginUpdate;
  try
    Num := lvSStyles.Items.Count;
    with lvSStyles.Items.Add do
    begin
      Caption := 'Strip Style ' + IntToStr(Num + 1);
      ImageIndex := 1;
      Data := Pointer(FStripStylesList[FStripStylesList.Count - 1].Options);
    end;
  finally
    lvSStyles.Items.EndUpdate;
  end;
end;

procedure TfmQExport4DocxEditor.buRemoveClick(Sender: TObject);
begin
  if Assigned(lvSStyles.ItemFocused) then
  begin
    FStripStylesList.Items[lvSStyles.ItemFocused.Index].Free;
    FSelectedOptions := nil;
    lvSStyles.Items.BeginUpdate;
    try
      lvSStyles.Selected.Delete;
      ForAllListViewItems(lvSStyles, SetFocusedToSelected, False, True);
      ForAllListViewItems(lvSStyles, SetStripStylesNumber, False, True);
    finally
      lvSStyles.Items.EndUpdate;
    end;
  end;
end;

procedure TfmQExport4DocxEditor.buMoveUpClick(Sender: TObject);
var
  TempStyle: TDocxCellStyle;
begin
  TempStyle := TDocxCellStyle.Create;
  try
    TempStyle.Assign(TDocxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index].Data));
    TDocxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index].Data).Assign(TDocxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index - 1].Data));
    TDocxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index - 1].Data).Assign(TempStyle);
  finally
    TempStyle.Free;
  end;
  lvSStyles.Items[lvSStyles.ItemFocused.Index - 1].Selected := True;
  lvSStyles.Items[lvSStyles.ItemFocused.Index - 1].Focused := True;
end;

procedure TfmQExport4DocxEditor.buMoveDownClick(Sender: TObject);
var
  TempStyle: TDocxCellStyle;
begin
  TempStyle := TDocxCellStyle.Create;
  try
    TempStyle.Assign(TDocxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index].Data));
    TDocxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index].Data).Assign(TDocxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index + 1].Data));
    TDocxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index + 1].Data).Assign(TempStyle);
  finally
    TempStyle.Free;
  end;
  lvSStyles.Items[lvSStyles.ItemFocused.Index + 1].Selected := True;
  lvSStyles.Items[lvSStyles.ItemFocused.Index + 1].Focused := True;
end;

procedure TfmQExport4DocxEditor.pcStyleEditorChange(Sender: TObject);
begin
  case pcStyleEditor.ActivePage.Tag of
    1://tsOptions
      if Assigned(lvOptions.Selected) then
        SelectedOptions := TDocxCellStyle(lvOptions.Selected.Data);
    2://tsStripStyles
      if Assigned(lvSStyles.Selected) then
        SelectedOptions := TDocxCellStyle(lvSStyles.Selected.Data)
      else
        SelectedOptions := nil;
    3://tsBorder
      SelectedOptions := nil;
  end;
end;

procedure TfmQExport4DocxEditor.cbHighlightChange(Sender: TObject);
begin
  FSelectedOptions.HighlightColor := TMSHighlightColor(cbHighlight.ItemIndex);
end;

procedure TfmQExport4DocxEditor.btnBorderColorClick(Sender: TObject);
begin
  if ColorDialog.Execute then
  begin
    if ColorDialog.Color = -1 then
      ColorDialog.Color := clBlack;
    FBorder.Color := ColorDialog.Color;
    pbBorder.Repaint;
  end;
end;

procedure TfmQExport4DocxEditor.btnBorderColorMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  IncLeftAndTop(pbBorder);
end;

procedure TfmQExport4DocxEditor.btnBorderColorMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  DecLeftAndTop(pbBorder);
end;

procedure TfmQExport4DocxEditor.pbBorderPaint(Sender: TObject);
begin
  PaintStandardColors(pbBorder, FBorder.Color);
end;

procedure TfmQExport4DocxEditor.cbBorderStyleChange(Sender: TObject);
begin
  FBorder.Style := TDocxBorderStyle(cbBorderStyle.ItemIndex);
end;

//******************************************************************************

procedure TfmQExport4DocxEditor.SetFileName(const Value: WideString);
begin
  if FFileName <> Value then
  begin
    FFileName := Value;
    edFileName.Text := Value;
  end;
end;

procedure TfmQExport4DocxEditor.SetExportDocx(const Value: TQExport4Docx);
begin
  FExportDocx := Value;
  FHeaderStyle.Assign(FExportDocx.DocxOptions.HeaderStyle);
  FCaptionRowStyle.Assign(FExportDocx.DocxOptions.CaptionRowStyle);
  FDataStyle.Assign(FExportDocx.DocxOptions.DataStyle);
  FFooterStyle.Assign(FExportDocx.DocxOptions.FooterStyle);
  FStripStylesList.Assign(FExportDocx.DocxOptions.StripStylesList);
  chkUseBorder.Checked := FExportDocx.DocxOptions.UseBorder;
  chkUseBorder.OnClick(chkUseBorder);
  FBorder.Assign(FExportDocx.DocxOptions.Border);
end;

procedure TfmQExport4DocxEditor.SetSelectedOptions(
  const Value: TDocxCellStyle);
begin
  FSelectedOptions := Value;
  SetFontAndBorder(FSelectedOptions);
  EnableFontAndBorder := Assigned(Value);
end;

procedure TfmQExport4DocxEditor.SetEnableFontAndBorder(
  const Value: Boolean);
begin
  if FEnableFontAndBorder <> Value then
  begin
    FEnableFontAndBorder := Value;
    laTextFont.Enabled := Value;
    cbTextFont.Enabled := Value;
    laTextSize.Enabled := Value;
    cbTextFontSize.Enabled := Value;
    btnFontColor.Enabled := Value;
    btnFontBold.Enabled := Value;
    btnFontItalic.Enabled := Value;
    btnFontUnderline.Enabled := Value;
    btnFontStrikeOut.Enabled := Value;
    btnTextLeft.Enabled := Value;
    btnTextCenter.Enabled := Value;
    btnTextRight.Enabled := Value;
    btnTextJustify.Enabled := Value;

    chkUseBackground.Enabled := Value;
    chkUseBackground.OnClick(chkUseBackground);
    chkUseHighlight.Enabled := Value;
    chkUseHighlight.OnClick(chkUseHighlight);
  end;
end;

procedure TfmQExport4DocxEditor.SetFontAndBorder(Source: TDocxCellStyle);
begin
  if Assigned(Source) then
    with Source do
    begin
      cbTextFont.ItemIndex := cbTextFont.Items.IndexOf(Font.Name);
      cbTextFontSize.Text := IntToStr(Font.Size);
      btnFontBold.Down := fsBold in Font.Style;
      btnFontItalic.Down := fsItalic in Font.Style;
      btnFontUnderline.Down := fsUnderline in Font.Style;
      btnFontStrikeOut.Down := fsStrikeOut in Font.Style;
      pbFontColor.Repaint;
      case Alignment of
        caLeft:
          btnTextLeft.Down := True;
        caRight:
          btnTextRight.Down := True;
        caCenter:
          btnTextCenter.Down := True;
        caJustify:
          btnTextJustify.Down := True;
      end;
      chkUseBackground.Checked := UseBackground;
      chkUseBackground.OnClick(chkUseBackground);
      pbBackColor.Repaint;
      chkUseHighlight.Checked := UseHighlight;
      chkUseHighlight.OnClick(chkUseHighlight);
      if UseHighlight then
        cbHighlight.ItemIndex := Integer(HighlightColor);
      cbBorderStyle.ItemIndex := Integer(FBorder.Style);
      pbBorder.Repaint;
    end;
end;

procedure TfmQExport4DocxEditor.ApplyChanges;
begin
  FExportDocx.DocxOptions.HeaderStyle.Assign(FHeaderStyle);
  FExportDocx.DocxOptions.CaptionRowStyle.Assign(FCaptionRowStyle);
  FExportDocx.DocxOptions.DataStyle.Assign(FDataStyle);
  FExportDocx.DocxOptions.FooterStyle.Assign(FFooterStyle);
  FExportDocx.DocxOptions.StripStylesList.Assign(FStripStylesList);
  FExportDocx.DocxOptions.Border.Assign(FBorder);
  FExportDocx.FileName := FileName;
  FExportDocx.ShowFile := chkShow.Checked;
  FExportDocx.PrintFile := chkPrint.Checked;
  FExportDocx.AllowCaptions := chkAllowCaptions.Checked;
  FExportDocx.AutoCalcStrType := chkAutoCalcStrType.Checked;
  FExportDocx.OnlyVisibleFields := chkVisibleFields.Checked;
  FExportDocx.GoToFirstRecord := chkGoToFirsrRec.Checked;
  FExportDocx.SkipRecCount := StrToIntDef(edSkipRecCount.Text, 0);
  FExportDocx.CaptionRow := StrToIntDef(edCaptionRow.Text, -1);
  if rbExportOnly.Checked then
    FExportDocx.ExportRecCount := StrToIntDef(edExportRecCount.Text, 0);
  FExportDocx.Header.Text := meHeader.Text;
  FExportDocx.Footer.Text := meFooter.Text;
  FExportDocx.DocxOptions.StripStyleType := TMSStripStyleType(rgStripStyle.ItemIndex);
  FExportDocx.DocxOptions.UseBorder := FUseBorder;
  FExportDocx.DocxOptions.Border.Assign(FBorder);
  with FExportDocx.Formats do
  begin
    IntegerFormat := edInteger.Text;
    FloatFormat := edFloat.Text;
    DateFormat := edDate.Text;
    TimeFormat := edTime.Text;
    DateTimeFormat := edDateTime.Text;
    CurrencyFormat := edCurrency.Text;
    BooleanTrue := edTrue.Text;
    BooleanFalse := edFalse.Text;
    NullString := edNull.Text;
  end;

end;

procedure TfmQExport4DocxEditor.FillStripStyles;
var
  i: Integer;
begin
  lvSStyles.Items.BeginUpdate;
  try
    lvSStyles.OnSelectItem := nil;
    lvSStyles.Items.Clear;
    for i := 0 to FStripStylesList.Count - 1 do
      with lvSStyles.Items.Add do
      begin
        Caption := 'Strip Style ' + IntToStr(i + 1);
        ImageIndex := 1;
        Data := Pointer(FStripStylesList[i].Options);
      end;
    if Assigned(lvSStyles.Items[0]) then
    begin
      lvSStyles.Items[0].Focused := True;
      lvSStyles.Items[0].Selected := True;
    end;
  finally
    lvSStyles.OnSelectItem := lvSStylesSelectItem;
    lvSStyles.Items.EndUpdate;
  end;
end;

procedure TfmQExport4DocxEditor.FillOptions;
const
  cOptions: array [0..3] of WideString = ('Header', 'Caption Row', 'Data', 'Footer');
var
  i: Integer;
begin
  lvOptions.Items.BeginUpdate;
  try
    lvOptions.OnSelectItem := nil;
    lvOptions.Items.Clear;
    for i := 0 to 3 do
      with lvOptions.Items.Add do
      begin
        Caption := cOptions[i];
        ImageIndex := 2;
        case i of
          0: Data := Pointer(FHeaderStyle);
          1: Data := Pointer(FCaptionRowStyle);
          2: Data := Pointer(FDataStyle);
          3: Data := Pointer(FFooterStyle);
        end;
      end;
  finally
    lvOptions.OnSelectItem := lvOptionsSelectItem;
    lvOptions.Items.EndUpdate;
  end;
end;

procedure TfmQExport4DocxEditor.FillOther;
begin
  FileName := FExportDocx.FileName;
  chkShow.Checked := FExportDocx.ShowFile;
  chkPrint.Checked := FExportDocx.PrintFile;
  chkAllowCaptions.Checked := FExportDocx.AllowCaptions;
  chkAutoCalcStrType.Checked := FExportDocx.AutoCalcStrType;
  chkVisibleFields.Checked := FExportDocx.OnlyVisibleFields;
  chkGoToFirsrRec.Checked := FExportDocx.GoToFirstRecord;
  edSkipRecCount.Text := IntToStr(FExportDocx.SkipRecCount);
  edCaptionRow.Text := IntToStr(FExportDocx.CaptionRow);
  if FExportDocx.ExportRecCount > 0 then
  begin
    rbExportOnly.Checked := True;
    edExportRecCount.Text := IntToStr(FExportDocx.ExportRecCount);
  end;
  meHeader.Text := FExportDocx.Header.Text;
  meFooter.Text := FExportDocx.Footer.Text;

  with FExportDocx.Formats do
  begin
    edInteger.Text := IntegerFormat;
    edFloat.Text := FloatFormat;
    edDate.Text := DateFormat;
    edTime.Text := TimeFormat;
    edDateTime.Text := DateTimeFormat;
    edCurrency.Text := CurrencyFormat;
    edTrue.Text := BooleanTrue;
    edFalse.Text := BooleanFalse;
    edNull.Text := NullString;
  end;

//  chkUseBorder.
  cbTextFont.Items.Assign(Screen.Fonts);
  rgStripStyle.ItemIndex := Integer(FExportDocx.DocxOptions.StripStyleType);
end;

procedure TfmQExport4DocxEditor.Default;
begin
  pcStyleEditor.ActivePage := tsOptions;
  pcCommonTextStyle.ActivePage := tsFont;
  pcOptions.ActivePage := tsCommon;
  cbHighlight.ItemIndex := 0;
  EnableFontAndBorder := False;
end;

procedure TfmQExport4DocxEditor.SetFocusedToSelected(Item: TListItem);
begin
  if Item.Focused then Item.Selected := True;
end;

procedure TfmQExport4DocxEditor.SetStripStylesNumber(Item: TListItem);
begin
  Item.Caption := 'Strip Style ' + IntToStr(Item.Index + 1);
end;

end.

⌨️ 快捷键说明

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