📄 qimport2wizard.pas
字号:
procedure TQImport2WizardF.ImportError(Sender: TObject);
begin
if Assigned(FProgress) then
begin
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_ERROR, 1);
Application.ProcessMessages;
end;
if Assigned(Wizard.OnImportRecord) then
Wizard.OnImportRecord(Wizard);
if Assigned(Wizard.OnImportError) then
Wizard.OnImportError(Wizard);
end;
procedure TQImport2WizardF.ImportErrorAdv(Sender: TObject);
begin
if Assigned(FProgress) then
begin
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_ERROR_ADV, 1);
Application.ProcessMessages;
end;
if Assigned(Wizard.OnImportErrorAdv) then
Wizard.OnImportErrorAdv(Wizard);
end;
procedure TQImport2WizardF.NeedCommit(Sender: TObject);
begin
if Assigned(FProgress) then begin
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_COMMIT, 0);
Application.ProcessMessages;
end;
if Assigned(Wizard.OnNeedCommit) then Wizard.OnNeedCommit(Self);
end;
procedure TQImport2WizardF.ImportCancel(Sender: TObject; var Continue: Boolean);
begin
if Assigned(FProgress) then begin
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_STATE, 4);
Application.ProcessMessages;
end;
Continue := Application.MessageBox(PChar({$IFDEF WIN32}QImportLoadStr(QIW_NeedCancel){$ENDIF}
{$IFDEF LINUX}QIW_NeedCancel{$ENDIF}),
PChar({$IFDEF WIN32}QImportLoadStr(QIW_NeedCancelCaption){$ENDIF}
{$IFDEF LINUX}QIW_NeedCancelCaption{$ENDIF}),
MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) = ID_NO;
if Assigned(Wizard.OnImportCancel) then Wizard.OnImportCancel(Wizard, Continue);
if Assigned(FProgress) then begin
if Continue then
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_STATE, 5)
else PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_STATE, 2);
Application.ProcessMessages;
end;
end;
procedure TQImport2WizardF.BeforePost(Sender: TObject;
Row: TQImportRow; var Accept: Boolean);
begin
if Assigned(Wizard.OnBeforePost) then
Wizard.OnBeforePost(Sender, Row, Accept);
end;
procedure TQImport2WizardF.DestinationLocate(Sender: TObject;
KeyColumns: TStrings; Row: TQImportRow; var KeyFields: String;
var KeyValues: Variant);
begin
if Assigned(Wizard.OnDestinationLocate) then
Wizard.OnDestinationLocate(Sender, KeyColumns, Row, KeyFields, KeyValues);
end;
procedure TQImport2WizardF.FormCreate(Sender: TObject);
var
i: integer;
begin
pgImport.ActivePage := tsImportType;
for i := 0 to pgImport.PageCount - 1 do
pgImport.Pages[i].Parent := Self;
vwTXT := TQImport2TXTViewer.Create(Self);
with vwTXT do begin
Parent := pgImport.Pages[1];
Height := 281;
Left := 191;
Top := 90;
Width := 372;
OnChangeSelection := TXTViewerChangeSelection;
OnDeleteArrow := TXTViewerDeleteArrow;
OnMoveArrow := TXTViewerMoveArrow;
OnIntersectArrows := TXTViewerIntersectArrows;
end;
paTip := TInfoPanel.Create(Self);
paTip.AutoSize := false;
paTip.WordWrap := true;
bHelp.Enabled := Wizard.ShowHelpButton;
bHelp.Visible := Wizard.ShowHelpButton;
btnLoadTemplate.Enabled := Wizard.ShowSaveLoadButtons;
btnLoadTemplate.Visible := Wizard.ShowSaveLoadButtons;
btnSaveTemplate.Enabled := Wizard.ShowSaveLoadButtons;
btnSaveTemplate.Visible := Wizard.ShowSaveLoadButtons;
laTemplateFileNameTag.Visible :=
not Wizard.ShowSaveLoadButtons and Wizard.AutoLoadTemplate;
FileName := Wizard.FileName;
GoToLastPage := Wizard.GoToLastPage;
AutoSaveTemplate := Wizard.AutoSaveTemplate;
FieldFormats := Wizard.FieldFormats;
DataSet := Wizard.DataSet;
DBGrid := Wizard.DBGrid;
ListView := Wizard.ListView;
StringGrid := Wizard.StringGrid;
FillCombosAndLists;
TuneOpenDialog;
ChangeExtension;
TuneCSVControls;
rbtXLS.Enabled := aiXLS in Wizard.AllowedImports;
rbtDBF.Enabled := aiDBF in Wizard.AllowedImports;
rbtXML.Enabled := aiXML in Wizard.AllowedImports;
rbtTXT.Enabled := aiTXT in Wizard.AllowedImports;
rbtCSV.Enabled := aiCSV in Wizard.AllowedImports;
if rbtXLS.Enabled then rbtXLS.Checked := true
else if rbtDBF.Enabled then rbtDBF.Checked := true
else if rbtXML.Enabled then rbtXML.Checked := true
else if rbtTXT.Enabled then rbtTXT.Checked := true
else if rbtCSV.Enabled then rbtCSV.Checked := true;
FXLSFile := TxlsFile.Create;
XLSSkipCols := 0;
XLSSkipRows := 0;
DBFSkipDeleted := true;
TXTSkipLines := 0;
FTXTClearing := false;
CSVSkipLines := 0;
XMLWriteOnFly := false;
DecimalSeparator := Wizard.Formats.DecimalSeparator;
ThousandSeparator := Wizard.Formats.ThousandSeparator;
ShortDateFormat := Wizard.Formats.ShortDateFormat;
LongDateFormat := Wizard.Formats.LongDateFormat;
DateSeparator := Wizard.Formats.DateSeparator;
ShortTimeFormat := Wizard.Formats.ShortTimeFormat;
LongTimeFormat := Wizard.Formats.LongTimeFormat;
TimeSeparator := Wizard.Formats.TimeSeparator;
CommitAfterDone := Wizard.CommitAfterDone;
CommitRecCount := Wizard.CommitRecCount;
ImportRecCount := Wizard.ImportRecCount;
CloseAfterImport := Wizard.CloseAfterImport;
EnableErrorLog := Wizard.ErrorLog;
ErrorLogFileName := Wizard.ErrorLogFileName;
RewriteErrorLogFile := Wizard.RewriteErrorLogFile;
ShowErrorLog := Wizard.ShowErrorLog;
chEnableErrorLogClick(nil);
AddType := Wizard.AddType;
ImportMode := Wizard.ImportMode;
Step := 0;
FTXTItemIndex := -1;
FCSVItemIndex := -1;
FNeedLoadFile := true;
FFormatItem := nil;
FLoadingFormatItem := false;
if AutoLoadTemplate then
begin
if Assigned(Wizard.OnLoadTemplate) then
Wizard.OnLoadTemplate(Wizard, TemplateFileName);
LoadTemplateFromFile(TemplateFileName);
end;
if Assigned(Wizard.Picture.Graphic) and not Wizard.Picture.Graphic.Empty then
Image.Picture := Wizard.Picture;
FXLSIsEditingGrid := false;
FXLSGridSelection := TMapRow.Create(nil);
FXLSDefinedRanges := TMapRow.Create(nil);
end;
procedure TQImport2WizardF.FormDestroy(Sender: TObject);
var
i: integer;
begin
FXLSDefinedRanges.Free;
FXLSGridSelection.Free;
FXLSFile.Free;
XLSClearFieldList;
TXTClearCombo;
CSVClearCombo;
DBFClearList;
DBFClearTableList;
XMLClearList;
XMLClearTableList;
FormatsClearList;
for i := 0 to pgImport.PageCount - 1 do
pgImport.Pages[i].Parent := pgImport;
end;
procedure TQImport2WizardF.FormShow(Sender: TObject);
begin
SetCaptions;
SetTitle;
end;
procedure TQImport2WizardF.rbtClick(Sender: TObject);
var
Rbt: TRadioButton;
begin
if not (Sender is TRadioButton) then Exit;
Rbt := (Sender as TRadioButton);
if Rbt.Name = 'rbtXLS' then ImportType := aiXLS
else if Rbt.Name = 'rbtDBF' then ImportType := aiDBF
else if Rbt.Name = 'rbtXML' then ImportType := aiXML
else if Rbt.Name = 'rbtTXT' then ImportType := aiTXT
else if Rbt.Name = 'rbtCSV' then ImportType := aiCSV;
end;
procedure TQImport2WizardF.cbCommaExit(Sender: TObject);
begin
if AnsiCompareText(cbComma.Text, 'TAB') = 0 then
Comma := Chr(VK_TAB)
else if AnsiCompareText(cbComma.Text, 'SPACE') = 0 then
Comma := Chr(VK_SPACE)
else Comma := Str2Char(cbComma.Text, Comma);
end;
procedure TQImport2WizardF.cbQuoteExit(Sender: TObject);
begin
Quote := Str2Char(cbQuote.Text, Quote);
end;
procedure TQImport2WizardF.edtFileNameChange(Sender: TObject);
begin
FileName := edtFileName.Text
end;
procedure TQImport2WizardF.chGoToLastPageClick(Sender: TObject);
begin
GoToLastPage := chGoToLastPage.Checked;
Wizard.GoToLastPage := GoToLastPage;
end;
procedure TQImport2WizardF.chAutoSaveTemplateClick(Sender: TObject);
begin
AutoSaveTemplate := chAutoSaveTemplate.Checked;
Wizard.AutoSaveTemplate := AutoSaveTemplate;
end;
procedure TQImport2WizardF.spbBrowseClick(Sender: TObject);
begin
if opnDialog.Execute then edtFileName.Text := opnDialog.FileName;
end;
procedure TQImport2WizardF.SetImportType(const Value: TAllowedImport);
begin
if FImportType <> Value then
begin
if not (Value in Wizard.AllowedImports) then
raise EQImportError.Create({$IFDEF WIN32}QImportLoadStr(QIE_UnknownImportSource){$ENDIF}
{$IFDEF LINUX}QIE_UnknownImportSource{$ENDIF});
FImportType := Value;
//----
rbtXLS.Checked := FImportType = aiXLS;
rbtDBF.Checked := FImportType = aiDBF;
rbtXML.Checked := FImportType = aiXML;
rbtTXT.Checked := FImportType = aiTXT;
rbtCSV.Checked := FImportType = aiCSV;
//----
TuneOpenDialog;
ChangeExtension;
TuneCSVControls;
if FImportType = aiCSV then
begin
if AnsiCompareText(cbComma.Text, 'TAB') = 0 then
Comma := Chr(VK_TAB)
else if AnsiCompareText(cbComma.Text, 'SPACE') = 0 then
Comma := Chr(VK_SPACE)
else
Comma := Str2Char(cbComma.Text, Comma);
Quote := Str2Char(cbQuote.Text, Quote);
end;
TuneButtons;
end;
end;
procedure TQImport2WizardF.SetFileName(const Value: string);
var
i: integer;
begin
if AnsiCompareText(FFileName, Trim(Value)) <> 0 then begin
FFileName := Trim(Value);
edtFileName.Text := FFileName;
//----
case ImportType of
aiXLS: begin
lvXLSRanges.Items.Clear;
for i := 0 to lvXLSFields.Items.Count - 1 do
TMapRow(lvXLSFields.Items[i].Data).AsString := EmptyStr;
XLSClearDataSheets;
XLSSkipCols := 0;
XLSSkipRows := 0;
end;
end;
//----
TuneButtons;
SetTitle;
FNeedLoadFile := true;
end;
end;
procedure TQImport2WizardF.SetGoToLastPage(Value: boolean);
begin
if FGoToLastPage <> Value then begin
FGoToLastPage := Value;
chGoToLastPage.Checked := FGoToLastPage;
end;
end;
procedure TQImport2WizardF.SetAutoSaveTemplate(Value: boolean);
begin
if FAutoSaveTemplate <> Value then begin
FAutoSaveTemplate := Value;
chAutoSaveTemplate.Checked := FAutoSaveTemplate;
end;
end;
procedure TQImport2WizardF.SetComma(const Value: char);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -