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

📄 fuqexport4odteditor.pas

📁 Advanced.Export.Component.v4.01.rar,delphi 第三方控件
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  //Commit changes for Caption Row property
  if (StrToIntDef(edCaptionRow.Text, -1) <> ExportField.CaptionRow) then
    ExportField.CaptionRow := StrToIntDef(edCaptionRow.Text, -1);
  //Commit changes for Show File property
  ExportField.ShowFile := cbShow.Checked;
  //Commit changes for Print File property
  ExportField.PrintFile := cbPrint.Checked;
  //Fill Skip Rec Count
  if ExportField.ExportRecCount <> StrToIntDef(edExportRecCount.Text, 0) then
    ExportField.ExportRecCount := StrToIntDef(edExportRecCount.Text, 0);
  //Fill Current Style
  case rgStripStyle.ItemIndex of
    0: ExportField.ODTOptions.StripStyle := sstNone;
    1: ExportField.ODTOptions.StripStyle := sstColumn;
    2: ExportField.ODTOptions.StripStyle := sstRow;
  end;
  //Commit current formats
  with ExportField.Formats do
  begin
    if IntegerFormat <> edInteger.Text then
      IntegerFormat := edInteger.Text;
    if FloatFormat <> edFloat.Text then
      FloatFormat := edFloat.Text;
    if DateFormat <> edDate.Text then
      DateFormat := edDate.Text;
    if TimeFormat <> edTime.Text then
      TimeFormat := edTime.Text;
    if DateTimeFormat <> edDateTime.Text then
      DateTimeFormat := edDateTime.Text;
    if CurrencyFormat <> edCurrency.Text then
      CurrencyFormat := edCurrency.Text;
    if BooleanTrue <> edTrue.Text then
      BooleanTrue := edTrue.Text;
    if BooleanFalse <> edFalse.Text then
      BooleanFalse := edFalse.Text;
    if NullString <> edNull.Text then
      NullString := edNull.Text;
  end;
end;

procedure TfmQExport4ODTEditor.FillCommonFields;
begin
  edCaptionRow.Text := IntToStr(ExportField.CaptionRow);
  edSkipRecCount.Text := IntToStr(ExportField.SkipRecCount);
  edFileName.Text := ExportField.FileName;
  edTableName.Text := ExportField.TableName;
  cbAllowCaptions.Checked := ExportField.AllowCaptions;
  cbAutoCalcStrType.Checked := ExportField.AutoCalcStrType;
  cbVisibleFields.Checked := ExportField.OnlyVisibleFields;
  cbGoToFirsrRec.Checked := ExportField.GoToFirstRecord;
  cbShow.Checked := ExportField.ShowFile;
  cbPrint.Checked := ExportField.PrintFile;
  TuneBorderControls;
end;

procedure TfmQExport4ODTEditor.FillFormats;
begin
  if FNeedResetFormats then
  begin
    try
      FCurrFormats := TQExportFormats.Create;
      with FCurrFormats 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;
    finally
      FCurrFormats.Free;
    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 TfmQExport4ODTEditor.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  FNeedResetFormats := false;
  for i := 0 to pcAllOptions.PageCount - 1 do
    pcAllOptions.Pages[i].Parent := paStylesEdit;
end;

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

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

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

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

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

procedure TfmQExport4ODTEditor.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 TfmQExport4ODTEditor.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 TfmQExport4ODTEditor.miClearClick(Sender: TObject);
var
  MM: TMemo;
begin
  MM := CurrentSheetMemo;
  if Assigned(MM) then MM.Lines.Clear;
end;

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

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

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

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

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

constructor TfmQExport4ODTEditor.Create(AOwner: TComponent);
begin
  inherited;
  cbCellFont.Items.Assign(Screen.Fonts);
  cbTextFont.Items.Assign(Screen.Fonts);
  FormOptions;
end;

procedure TfmQExport4ODTEditor.FillStripType;
begin
  rgStripStyle.ItemIndex := Integer(ExportField.ODTOptions.StripStyle);
end;

procedure TfmQExport4ODTEditor.pbBorderTopPaint(Sender: TObject);
begin
  if not Assigned(Border) then Exit;
  if Border.BorderStyle = bsODFNone then Exit;
  PaintStandardColors(pbBorderTop, Border.BorderColor);
end;

procedure TfmQExport4ODTEditor.btnBorderTopColorMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  IncLeftAndTop(pbBorderTop);
end;

procedure TfmQExport4ODTEditor.btnBorderTopColorMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  DecLeftAndTop(pbBorderTop);
end;

procedure TfmQExport4ODTEditor.btnBorderTopColorClick(Sender: TObject);
begin
  if not Assigned(Border) then Exit;
  if ColorDialog.Execute then
    if ColorDialog.Color <> -1 then
      Border.BorderColor := ColorDialog.Color
    else
      Border.BorderColor := clBlack;
  pbBorderTop.Repaint;
end;

procedure TfmQExport4ODTEditor.cbUseBorderClick(Sender: TObject);
begin
  if not Assigned(Border) then Exit;
  if cbUseBorder.Checked then
    Border.BorderStyle := bsODFSolid
  else
    Border.BorderStyle := bsODFNone;
  TuneBorderControls;
end;


procedure TfmQExport4ODTEditor.edBorderWidthChange(Sender: TObject);
begin
  if not Assigned(Border) then Exit;
  if StrToIntDef(edBorderWidth.Text, 0) <> Border.BorderWidth then
    Border.BorderWidth := StrToIntDef(edBorderWidth.Text, 0);
end;

procedure TfmQExport4ODTEditor.edBorderWidthEnter(Sender: TObject);
begin
  if not Assigned(Border) then Exit;
  if StrToIntDef(edBorderWidth.Text, 0) <> Border.BorderWidth then
    edBorderWidth.Text := IntToStr(Border.BorderWidth)
end;

procedure TfmQExport4ODTEditor.edBorderWidthExit(Sender: TObject);
begin
  if not Assigned(Border) then Exit;
  if StrToIntDef(edBorderWidth.Text, 0) <> Border.BorderWidth then
    edBorderWidth.Text := IntToStr(Border.BorderWidth)
end;

procedure TfmQExport4ODTEditor.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 TfmQExport4ODTEditor.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 TfmQExport4ODTEditor.bAddClick(Sender: TObject);
var
  Num: Integer;
begin
  SStylesList.Add;
  try
    Num := lvSStyles.Items.Count;
    with lvSStyles.Items.Add do
    begin
      Caption := {$IFDEF WIN32}QExportLoadStr(QED_ODT_StripStyle){$ENDIF}
        {$IFDEF LINUX}QED_ODT_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 TfmQExport4ODTEditor.lvSStylesChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  GetCurrentStyle;
  TuneSStyleButtons;
end;

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

procedure TfmQExport4ODTEditor.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;
  end;
end;

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

procedure TfmQExport4ODTEditor.FormOptions;
begin
  lvOptions.Items.BeginUpdate;
  try
    lvOptions.Items.Clear;
    AddListItem(lvOptions, {$IFDEF WIN32}QExportLoadStr(QED_ODT_Header){$ENDIF}
      {$IFDEF LINUX}QED_ODT_Header{$ENDIF}, 2);
    AddListItem(lvOptions, {$IFDEF WIN32}QExportLoadStr(QED_ODT_CaptionRow){$ENDIF}
      {$IFDEF LINUX}QED_ODT_CaptionRow{$ENDIF}, 2);
    AddListItem(lvOptions, {$IFDEF WIN32}QExportLoadStr(QED_ODT_Data){$ENDIF}
      {$IFDEF LINUX}QED_ODT_Data{$ENDIF}, 2);
    AddListItem(lvOptions, {$IFDEF WIN32}QExportLoadStr(QED_ODT_Footer){$ENDIF}
      {$IFDEF LINUX}QED_ODT_Footer{$ENDIF}, 2);
    lvOptions.Items[0].Focused := true;
    lvOptions.Items[0].Selected := true;
  finally
    lvOptions.Items.EndUpdate;
  end;
end;

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

procedure TfmQExport4ODTEditor.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_ODT_StripStyle){$ENDIF}
        {$IFDEF LINUX}QED_ODT_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;

⌨️ 快捷键说明

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