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

📄 fuqexport4odseditor.pas

📁 Advanced.Export.Component.v4.01.rar,delphi 第三方控件
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    end;
  end
  else
    with ExportField.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;
  FNeedResetFormats := false;
end;

procedure TfmQExport4ODSEditor.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to pcAllOptions.PageCount - 1 do
    pcAllOptions.Pages[i].Parent := paStylesEdit;
end;

procedure TfmQExport4ODSEditor.FormDestroy(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to pcAllOptions.PageCount - 1 do
    pcAllOptions.Pages[i].Parent := pcAllOptions;
end;

procedure TfmQExport4ODSEditor.bbRestoreInitialClick(Sender: TObject);
begin
  FNeedResetFormats := false;
  FillFormats;
end;

procedure TfmQExport4ODSEditor.bbResetDefaultClick(Sender: TObject);
begin
  FNeedResetFormats := true;
  FillFormats;
end;

function TfmQExport4ODSEditor.CurrentSheetMemo: TMemo;
begin
  if pcOptions.ActivePage = tsHeader then Result := mmHeader
  else if pcOptions.ActivePage = tsFooter then Result := mmFooter
  else Result := nil;
end;

procedure TfmQExport4ODSEditor.ClearMemos;
begin
  mmHeader.Lines.Clear;
  mmFooter.Lines.Clear;
end;

procedure TfmQExport4ODSEditor.AddMemos;
var
  i: Integer;
begin
  for i := 0 to ExportField.Header.Count - 1 do
    mmHeader.Lines.Add(ExportField.Header[i]);
  for i := 0 to ExportField.Footer.Count - 1 do
    mmFooter.Lines.Add(ExportField.Footer[i]);
end;

procedure TfmQExport4ODSEditor.miInsertTabClick(Sender: TObject);
var
  MM: TMemo;
  Point: TPoint;
  Str: string;
begin
  MM := CurrentSheetMemo;
  if Assigned(MM) then begin
    Point := GetMemoCaretPos(MM);
    Str := MM.Lines[Point.Y];
    Insert(Chr(9), Str, Point.X + 1);
    MM.Lines[Point.Y] := Str;
    MM.Perform(EM_SETSEL, Point.X + 1, Point.X + 1);
  end;
end;

procedure TfmQExport4ODSEditor.miClearClick(Sender: TObject);
var
  MM: TMemo;
begin
  MM := CurrentSheetMemo;
  if Assigned(MM) then MM.Lines.Clear;
end;

procedure TfmQExport4ODSEditor.rbExportAllClick(Sender: TObject);
begin
  TuneExportGroup;
  edExportRecCount.Text := '0';
end;

procedure TfmQExport4ODSEditor.TuneExportGroup;
begin
  edExportRecCount.Enabled := rbExportOnly.Checked;
  laExportRecCount_02.Enabled := rbExportOnly.Checked;
end;

procedure TfmQExport4ODSEditor.rbExportOnlyClick(Sender: TObject);
begin
  TuneExportGroup;
end;

procedure TfmQExport4ODSEditor.EnableSkipRecGroup(Value: Integer);
begin
  if (Value <> 0) then
  begin
    rbExportOnly.Checked := true;
    TuneExportGroup;
    edExportRecCount.Text := IntToStr(Value);
  end;
end;

procedure TfmQExport4ODSEditor.sbSaveClick(Sender: TObject);
begin
  sdFileName.FileName := edFileName.Text;
  if sdFileName.Execute then edFileName.Text := sdFileName.FileName;
end;

constructor TfmQExport4ODSEditor.Create(AOwner: TComponent);
begin
  inherited;
  cbODSFont.Items.Assign(Screen.Fonts);
  FormOptions;
end;

procedure TfmQExport4ODSEditor.FillStripType;
begin
  rgStripStyle.ItemIndex := Integer(ExportField.ODSOptions.StripStyle);
end;

procedure TfmQExport4ODSEditor.ReplaceHeaderFooter;
var
  I: Integer;
begin
  ExportField.Header.Clear;
  for I := 0 to mmHeader.Lines.Count - 1 do
    ExportField.Header.Add(mmHeader.Lines[I]);
  ExportField.Footer.Clear;
  for I := 0 to mmFooter.Lines.Count - 1 do
    ExportField.Footer.Add(mmFooter.Lines[I]);
end;

procedure TfmQExport4ODSEditor.TuneSStyleButtons;
begin
  if Assigned(lvSStyles.ItemFocused) then
  begin
    bRemove.Enabled := (lvSStyles.ItemFocused.Index >= 0);
    bMoveUp.Enabled := (lvSStyles.ItemFocused.Index > 0);
    bMoveDown.Enabled := (lvSStyles.ItemFocused.Index < lvSStyles.Items.Count - 1)
                         and (lvSStyles.ItemFocused.Index >= 0);
  end else
  begin
    bRemove.Enabled := (lvSStyles.Items.Count > 0);
    bMoveUp.Enabled := False;
    bMoveDown.Enabled := False;
  end;
end;

procedure TfmQExport4ODSEditor.bAddClick(Sender: TObject);
var
  Num: Integer;
begin
  SStylesList.Add;
  lvSStyles.Items.BeginUpdate;
  try
    Num := lvSStyles.Items.Count;
    with lvSStyles.Items.Add do
    begin
      Caption := {$IFDEF WIN32}QExportLoadStr(QED_ODS_StripStyle){$ENDIF}
        {$IFDEF LINUX}QED_ODS_StripStyle{$ENDIF} + IntToStr(Num + 1);
      ImageIndex := 1;
    end;
    lvSStyles.Items[lvSStyles.Items.Count - 1].Focused := true;
    lvSStyles.Items[lvSStyles.Items.Count - 1].Selected := true;
  finally
    lvSStyles.Items.EndUpdate;
  end;
end;

procedure TfmQExport4ODSEditor.lvSStylesChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  TuneSStyleButtons;
  GetCurrentStyle;
end;

procedure TfmQExport4ODSEditor.StyleRenumber(Item: TListItem);
begin
  Item.Caption := {$IFDEF WIN32}QExportLoadStr(QED_ODS_StripStyle){$ENDIF}
    {$IFDEF LINUX}QED_ODS_StripStyle{$ENDIF} + IntToStr(Item.Index + 1);
end;

procedure TfmQExport4ODSEditor.bRemoveClick(Sender: TObject);
begin
  if Assigned(lvSStyles.ItemFocused) then
  begin
    SStylesList.Items[lvSStyles.ItemFocused.Index].Free;
    lvSStyles.Items.BeginUpdate;
    try
      lvSStyles.Selected.Delete;
      ForAllListViewItems(lvSStyles, SetSelectedToFocused, false, true);
      ForAllListViewItems(lvSStyles, StyleRenumber, false, true);
    finally
      lvSStyles.Items.EndUpdate;
    end;
    TuneSStyleButtons;
    GetCurrentStyle;
  end;
end;

procedure TfmQExport4ODSEditor.SetSelectedToFocused(Item: TListItem);
begin
  if Item.Focused then
    Item.Selected := true;
end;

procedure TfmQExport4ODSEditor.FormOptions;
begin
  lvOptions.Items.BeginUpdate;
  try
    lvOptions.Items.Clear;
    AddListItem(lvOptions, {$IFDEF WIN32}QExportLoadStr(QED_ODS_Header){$ENDIF}
      {$IFDEF LINUX}QED_ODS_Header{$ENDIF}, 2);
    AddListItem(lvOptions, {$IFDEF WIN32}QExportLoadStr(QED_ODS_CaptionRow){$ENDIF}
      {$IFDEF LINUX}QED_ODS_CaptionRow{$ENDIF}, 2);
    AddListItem(lvOptions, {$IFDEF WIN32}QExportLoadStr(QED_ODS_Data){$ENDIF}
      {$IFDEF LINUX}QED_ODS_Data{$ENDIF}, 2);
    AddListItem(lvOptions, {$IFDEF WIN32}QExportLoadStr(QED_ODS_Footer){$ENDIF}
      {$IFDEF LINUX}QED_ODS_Footer{$ENDIF}, 2);
    lvOptions.Items[0].Focused := true;
    lvOptions.Items[0].Selected := true;
  finally
    lvOptions.Items.EndUpdate;
  end;
end;

procedure TfmQExport4ODSEditor.AddListItem(Dest: TListView;
  ItemName: string; ImageInd: Integer);
begin
  with Dest.Items.Add do
  begin
    Caption := ItemName;
    ImageIndex := ImageInd;
  end;
end;

procedure TfmQExport4ODSEditor.FillStripStyles;
var
  I: Integer;
begin
  lvSStyles.Items.Clear;
  lvSStyles.Items.BeginUpdate;
  try
    for I := 0 to SStylesList.Count - 1 do
      AddListItem(lvSStyles, {$IFDEF WIN32}QExportLoadStr(QED_ODS_StripStyle){$ENDIF}
        {$IFDEF LINUX}QED_ODS_StripStyle{$ENDIF} + IntToStr(I + 1), 1);
    if assigned(lvSStyles.Items[0]) then
    begin
      lvSStyles.Items[0].Focused := true;
      lvSStyles.Items[0].Selected := true;
    end;
  finally
    lvSStyles.Items.EndUpdate;
  end;
end;

procedure TfmQExport4ODSEditor.GetCurrentStyle;
begin
  FCurrStyle := nil;
  if pcStyleEditor.ActivePage = tsOptions then
  begin
    tsBorder.TabVisible := true;
    if (not Assigned(lvOptions.ItemFocused)) or
        (not Assigned(lvOptions.Items[lvOptions.ItemFocused.Index])) then
    begin
      SetCurrentStatus;
      Exit;
    end;
    if lvOptions.Items[lvOptions.ItemFocused.Index].Caption =
      {$IFDEF WIN32}QExportLoadStr(QED_ODS_Header){$ENDIF}
      {$IFDEF LINUX}QED_ODS_Header{$ENDIF} then
      FCurrStyle := HrStyle;
    if lvOptions.Items[lvOptions.ItemFocused.Index].Caption =
      {$IFDEF WIN32}QExportLoadStr(QED_ODS_Footer){$ENDIF}
      {$IFDEF LINUX}QED_ODS_Footer{$ENDIF} then
      FCurrStyle := FrStyle;
    if lvOptions.Items[lvOptions.ItemFocused.Index].Caption =
      {$IFDEF WIN32}QExportLoadStr(QED_ODS_CaptionRow){$ENDIF}
      {$IFDEF LINUX}QED_ODS_CaptionRow{$ENDIF} then
      FCurrStyle := CRStyle;
    if lvOptions.Items[lvOptions.ItemFocused.Index].Caption =
      {$IFDEF WIN32}QExportLoadStr(QED_ODS_Data){$ENDIF}
      {$IFDEF LINUX}QED_ODS_Data{$ENDIF} then
      FCurrStyle := DStyle;
  end;
  if pcStyleEditor.ActivePage = tsStripStyles then
  begin
    tsBorder.TabVisible := false;
    if (not Assigned(lvSStyles.ItemFocused)) or
        (not Assigned(lvSStyles.Items[lvSStyles.ItemFocused.Index])) then
    begin
      SetCurrentStatus;
      Exit;
    end;
    if lvSStyles.ItemFocused.Index < SStylesList.Count then
      FCurrStyle := SStylesList[lvSStyles.ItemFocused.Index];
  end;
  SetCurrentStatus;
end;

procedure TfmQExport4ODSEditor.SetCurrentStatus;
begin
  if assigned(FCurrStyle) then
  begin
    BlockUnBlock(true);
    TuneOptionsList;
  end
  else
  begin
    BlockUnBlock(false);
    pbSampleText.Repaint;
  end;
end;

procedure TfmQExport4ODSEditor.lvOptionsChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  GetCurrentStyle;
end;

procedure TfmQExport4ODSEditor.btnFontColorMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  IncLeftAndTop(pbFontColor);
end;

procedure TfmQExport4ODSEditor.btnFontColorMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  DecLeftAndTop(pbFontColor);
end;

procedure TfmQExport4ODSEditor.btnFontColorClick(Sender: TObject);
begin
  if not Assigned(FCurrStyle) then Exit;
  if ColorDialog.Execute then
    if ColorDialog.Color <> -1 then
        FCurrStyle.Font.Color := ColorDialog.Color
      else
        FCurrStyle.Font.Color := clBlack;
  pbFontColor.Repaint;
  pbSampleText.Repaint;
end;

procedure TfmQExport4ODSEditor.pbFontColorPaint(Sender: TObject);
begin
  if not Assigned(FCurrStyle) then Exit;
  PaintStandardColors(pbFontColor, FCurrStyle.Font.Color);
end;

procedure TfmQExport4ODSEditor.pcStyleEditorChange(Sender: TObject);
begin
  GetCurrentStyle;
end;

procedure TfmQExport4ODSEditor.BlockUnBlock(Condition: Boolean);
begin
  tsCommonCellStyle.Enabled := Condition;
  laODSFont.Enabled := Condition;
  cbODSFont.Enabled := Condition;
  laODSFontSize.Enabled := Condition;
  cbODSFontSize.Enabled := Condition;
  btnFontColor.Enabled := Condition;
  pbFontColor.Enabled := Condition;
  btnFontBold.Enabled := Condition;
  btnFontItalic.Enabled := Condition;
  btnFontStrikeOut.Enabled := Condition;
  btnUnderlineSingle.Enabled := Condition;
  btnHorizontalLeft.Enabled := Condition;
  btnHorizontalCenter.Enabled := Condition;
  btnHorizontalRight.Enabled := Condition;
  btnHorizontalJustify.Enabled := Condition;
  btnVerticalTop.Enabled := Condition;
  btnVerticalCenter.Enabled := Condition;
  btnVerticalBottom.Enabled := Condition;
  cbUseBorder.Enabled := Condition;
  laBorderColor.Enabled := Condition;
  btnBorderTopColor.Enabled := Condition;
  pbBorderTop.Enabled := Condition;

⌨️ 快捷键说明

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