📄 fuqexport4xlsxeditor.pas
字号:
ClearListViewData(lvOptions);
FHeaderStyle.Free;
FCaptionRowStyle.Free;
FDataStyle.Free;
FFooterStyle.Free;
ClearListViewData(lvSStyles);
FStripStylesList.Free;
if Assigned(FExportXlsx) then
FExportXlsx := nil;
end;
procedure TfmQExport4XlsxEditor.cbXlsxFontChange(Sender: TObject);
begin
FSelectedOptions.Font.Name := cbXlsxFont.Text;
end;
procedure TfmQExport4XlsxEditor.cbXlsxFontSizeChange(Sender: TObject);
begin
FSelectedOptions.Font.Size := StrToIntDef(cbXlsxFontSize.Text, 11);
end;
procedure TfmQExport4XlsxEditor.SetFileName(const Value: WideString);
begin
if FFileName <> Value then
begin
FFileName := Value;
edFileName.Text := Value;
end;
end;
procedure TfmQExport4XlsxEditor.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 TfmQExport4XlsxEditor.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 TfmQExport4XlsxEditor.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 TfmQExport4XlsxEditor.buMoveUpClick(Sender: TObject);
var
TempStyle: TXlsxCellStyle;
begin
TempStyle := TXlsxCellStyle.Create;
try
TempStyle.Assign(TXlsxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index].Data));
TXlsxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index].Data).Assign(TXlsxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index - 1].Data));
TXlsxCellStyle(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 TfmQExport4XlsxEditor.buMoveDownClick(Sender: TObject);
var
TempStyle: TXlsxCellStyle;
begin
TempStyle := TXlsxCellStyle.Create;
try
TempStyle.Assign(TXlsxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index].Data));
TXlsxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index].Data).Assign(TXlsxCellStyle(lvSStyles.Items[lvSStyles.ItemFocused.Index + 1].Data));
TXlsxCellStyle(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 TfmQExport4XlsxEditor.btnHorizontalLeftClick(Sender: TObject);
begin
FSelectedOptions.Alignment := caLeft;
end;
procedure TfmQExport4XlsxEditor.btnHorizontalCenterClick(Sender: TObject);
begin
FSelectedOptions.Alignment := caCenter;
end;
procedure TfmQExport4XlsxEditor.btnHorizontalRightClick(Sender: TObject);
begin
FSelectedOptions.Alignment := caRight;
end;
procedure TfmQExport4XlsxEditor.btnVerticalTopClick(Sender: TObject);
begin
FSelectedOptions.VerticalAligment := cvaTop;
end;
procedure TfmQExport4XlsxEditor.btnVerticalCenterClick(Sender: TObject);
begin
FSelectedOptions.VerticalAligment := cvaMiddle;
end;
procedure TfmQExport4XlsxEditor.btnVerticalBottomClick(Sender: TObject);
begin
FSelectedOptions.VerticalAligment := cvaBottom;
end;
procedure TfmQExport4XlsxEditor.btnWrapTextClick(Sender: TObject);
begin
FSelectedOptions.WrapText := btnWrapText.Down;
end;
procedure TfmQExport4XlsxEditor.btnBorderColorClick(Sender: TObject);
begin
if ColorDialog.Execute then
begin
if ColorDialog.Color = -1 then
ColorDialog.Color := clBlack;
FSelectedOptions.Border.Color := ColorDialog.Color;
pbBorder.Repaint;
end;
end;
procedure TfmQExport4XlsxEditor.btnBorderColorMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
IncLeftAndTop(pbBorder);
end;
procedure TfmQExport4XlsxEditor.btnBorderColorMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
DecLeftAndTop(pbBorder);
end;
procedure TfmQExport4XlsxEditor.pbBorderPaint(Sender: TObject);
begin
if Assigned(FSelectedOptions) then
PaintStandardColors(pbBorder, FSelectedOptions.Border.Color);
end;
procedure TfmQExport4XlsxEditor.cbBorderStyleChange(Sender: TObject);
begin
FSelectedOptions.Border.Style := TXlsxBorderStyle(cbBorderStyle.ItemIndex);
end;
//******************************************************************************
procedure TfmQExport4XlsxEditor.SetSheetName(const Value: WideString);
begin
if Value <> '' then
begin
FSheetName := Value;
edSheetName.Text := Value;
end;
end;
procedure TfmQExport4XlsxEditor.SetExportXlsx(const Value: TQExport4Xlsx);
begin
FExportXlsx := Value;
FHeaderStyle.Assign(FExportXlsx.XlsxOptions.HeaderStyle);
FCaptionRowStyle.Assign(FExportXlsx.XlsxOptions.CaptionRowStyle);
FDataStyle.Assign(FExportXlsx.XlsxOptions.DataStyle);
FFooterStyle.Assign(FExportXlsx.XlsxOptions.FooterStyle);
FStripStylesList.Assign(FExportXlsx.XlsxOptions.StripStylesList);
end;
procedure TfmQExport4XlsxEditor.SetSelectedOptions(
const Value: TXlsxCellStyle);
begin
FSelectedOptions := Value;
SetFontAndBorder(FSelectedOptions);
EnableFontAndBorder := Assigned(Value);
end;
procedure TfmQExport4XlsxEditor.SetFontAndBorder(Source: TXlsxCellStyle);
begin
if Assigned(Source) then
with Source do
begin
cbXlsxFont.ItemIndex := cbXlsxFont.Items.IndexOf(Font.Name);
cbXlsxFontSize.Text := IntToStr(Font.Size);
btnFontBold.Down := fsBold in Font.Style;
btnFontItalic.Down := fsItalic in Font.Style;
btnUnderlineSingle.Down := fsUnderline in Font.Style;
pbFontColor.Repaint;
case Alignment of
caLeft:
btnHorizontalLeft.Down := True;
caRight:
btnHorizontalRight.Down := True;
caCenter:
btnHorizontalCenter.Down := True;
end;
case VerticalAligment of
cvaTop:
btnVerticalTop.Down := True;
cvaMiddle:
btnVerticalCenter.Down := True;
cvaBottom:
btnVerticalBottom.Down := True;
end;
btnWrapText.Down := WrapText;
chkUseBackground.Checked := UseBackground;
chkUseBackground.OnClick(chkUseBackground);
pbBackColor.Repaint;
chkUseBorder.Checked := UseBorder;
chkUseBorder.OnClick(chkUseBorder);
cbBorderStyle.ItemIndex := Integer(Border.Style);
pbBorder.Repaint;
end;
end;
procedure TfmQExport4XlsxEditor.ApplyChanges;
begin
FExportXlsx.XlsxOptions.HeaderStyle.Assign(FHeaderStyle);
FExportXlsx.XlsxOptions.CaptionRowStyle.Assign(FCaptionRowStyle);
FExportXlsx.XlsxOptions.DataStyle.Assign(FDataStyle);
FExportXlsx.XlsxOptions.FooterStyle.Assign(FFooterStyle);
FExportXlsx.XlsxOptions.StripStylesList.Assign(FStripStylesList);
FExportXlsx.FileName := FileName;
FExportXlsx.ShowFile := chkShow.Checked;
FExportXlsx.PrintFile := chkPrint.Checked;
FExportXlsx.SheetName := SheetName;
FExportXlsx.AllowCaptions := chkAllowCaptions.Checked;
FExportXlsx.AutoCalcStrType := chkAutoCalcStrType.Checked;
FExportXlsx.OnlyVisibleFields := chkVisibleFields.Checked;
FExportXlsx.GoToFirstRecord := chkGoToFirsrRec.Checked;
FExportXlsx.SkipRecCount := StrToIntDef(edSkipRecCount.Text, 0);
FExportXlsx.CaptionRow := StrToIntDef(edCaptionRow.Text, -1);
if rbExportOnly.Checked then
FExportXlsx.ExportRecCount := StrToIntDef(edExportRecCount.Text, 0);
FExportXlsx.Header.Text := meHeader.Text;
FExportXlsx.Footer.Text := meFooter.Text;
FExportXlsx.XlsxOptions.StripStyleType := TMSStripStyleType(rgStripStyle.ItemIndex);
with FExportXlsx.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 TfmQExport4XlsxEditor.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 TfmQExport4XlsxEditor.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 TfmQExport4XlsxEditor.FillOther;
begin
FileName := FExportXlsx.FileName;
chkShow.Checked := FExportXlsx.ShowFile;
chkPrint.Checked := FExportXlsx.PrintFile;
SheetName := FExportXlsx.SheetName;
chkAllowCaptions.Checked := FExportXlsx.AllowCaptions;
chkAutoCalcStrType.Checked := FExportXlsx.AutoCalcStrType;
chkVisibleFields.Checked := FExportXlsx.OnlyVisibleFields;
chkGoToFirsrRec.Checked := FExportXlsx.GoToFirstRecord;
edSkipRecCount.Text := IntToStr(FExportXlsx.SkipRecCount);
edCaptionRow.Text := IntToStr(FExportXlsx.CaptionRow);
if FExportXlsx.ExportRecCount > 0 then
begin
rbExportOnly.Checked := True;
edExportRecCount.Text := IntToStr(FExportXlsx.ExportRecCount);
end;
meHeader.Text := FExportXlsx.Header.Text;
meFooter.Text := FExportXlsx.Footer.Text;
with FExportXlsx.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;
cbXlsxFont.Items.Assign(Screen.Fonts);
rgStripStyle.ItemIndex := Integer(FExportXlsx.XlsxOptions.StripStyleType);
end;
procedure TfmQExport4XlsxEditor.Default;
begin
pcStyleEditor.ActivePage := tsOptions;
pcCommonCellStyle.ActivePage := tsFont;
pcOptions.ActivePage := tsCommon;
EnableFontAndBorder := False;
end;
procedure TfmQExport4XlsxEditor.SetEnableFontAndBorder(
const Value: Boolean);
begin
if FEnableFontAndBorder <> Value then
begin
FEnableFontAndBorder := Value;
laXlsxFont.Enabled := Value;
cbXlsxFont.Enabled := Value;
laXlsxFontSize.Enabled := Value;
cbXlsxFontSize.Enabled := Value;
btnFontColor.Enabled := Value;
btnFontBold.Enabled := Value;
btnFontItalic.Enabled := Value;
btnUnderlineSingle.Enabled := Value;
btnHorizontalLeft.Enabled := Value;
btnHorizontalCenter.Enabled := Value;
btnHorizontalRight.Enabled := Value;
btnVerticalTop.Enabled := Value;
btnVerticalCenter.Enabled := Value;
btnVerticalBottom.Enabled := Value;
btnWrapText.Enabled := Value;
chkUseBorder.Enabled := Value;
chkUseBorder.OnClick(chkUseBorder);
chkUseBackground.Enabled := Value;
chkUseBackground.OnClick(chkUseBackground);
end;
end;
procedure TfmQExport4XlsxEditor.SetFocusedToSelected(Item: TListItem);
begin
if Item.Focused then Item.Selected := True;
end;
procedure TfmQExport4XlsxEditor.SetStripStylesNumber(Item: TListItem);
begin
Item.Caption := 'Strip Style ' + IntToStr(Item.Index + 1);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -