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