📄 fuqexport4odteditor.pas
字号:
//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 + -