📄 ado_qimport3wizard.pas
字号:
begin
FPicture.Assign(Value);
end;
{ TADO_QImportWizardF }
const
FileExts: array[0..5] of string[4] = ('.xls', '.dbf', '.xml', '.txt', '.csv',
'.mdb');
procedure TADO_QImport3WizardF.BeforeImport(Sender: TObject);
begin
FTotalRecCount := (Sender as TQImport3).TotalRecCount;
if Assigned(FProgress) then begin
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_STATE, 1);
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_ROWCOUNT, FTotalRecCount);
Application.ProcessMessages;
end;
if Assigned(Wizard.OnBeforeImport) then Wizard.OnBeforeImport(Wizard);
end;
procedure TADO_QImport3WizardF.AfterImport(Sender: TObject);
begin
if Assigned(FProgress) then begin
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_FINISH, Integer(ShowErrorLog));
if not Import.Canceled then
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_STATE, 3);
Application.ProcessMessages;
end;
if Assigned(Wizard.OnAfterImport) then Wizard.OnAfterImport(Wizard);
end;
procedure TADO_QImport3WizardF.ImportRecord(Sender: TObject);
begin
if Assigned(FProgress) then
begin
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_IMPORT,
Integer(Import.LastAction));
Application.ProcessMessages;
end;
if Assigned(Wizard.OnImportRecord) then
Wizard.OnImportRecord(Wizard);
end;
procedure TADO_QImport3WizardF.ImportError(Sender: TObject);
begin
if Assigned(FProgress) then
begin
PostMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_ERROR, 1);
Application.ProcessMessages;
end;
if Assigned(Wizard.OnImportError) then
Wizard.OnImportError(Wizard);
end;
procedure TADO_QImport3WizardF.ImportErrorAdv(Sender: TObject);
begin
if Assigned(FProgress) then
begin
SendMessage(FProgress.Handle, WM_QIMPORT_PROGRESS, QIP_ERROR_ADV, 1);
Application.ProcessMessages;
end;
if Assigned(Wizard.OnImportErrorAdv) then
Wizard.OnImportErrorAdv(Wizard);
end;
procedure TADO_QImport3WizardF.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 TADO_QImport3WizardF.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 TADO_QImport3WizardF.BeforePost(Sender: TObject;
Row: TQImportRow; var Accept: Boolean);
begin
if Assigned(Wizard.OnBeforePost) then
Wizard.OnBeforePost(Sender, Row, Accept);
end;
procedure TADO_QImport3WizardF.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 TADO_QImport3WizardF.FormCreate(Sender: TObject);
var
i: integer;
begin
pgImport.ActivePage := tsImportType;
for i := 0 to pgImport.PageCount - 1 do
pgImport.Pages[i].Parent := Self;
vwTXT := TQImport3TXTViewer.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;
TuneAccessControls;
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;
rbtAccess.Enabled := aiAccess 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
else if rbtAccess.Enabled then rbtAccess.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;
FNeedLoadFields := 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 TADO_QImport3WizardF.FormDestroy(Sender: TObject);
var
i: integer;
begin
FXLSDefinedRanges.Free;
FXLSGridSelection.Free;
FXLSFile.Free;
XLSClearFieldList;
TXTClearCombo;
CSVClearCombo;
DBFClearList;
DBFClearTableList;
XMLClearList;
XMLClearTableList;
AccessClearList;
FormatsClearList;
for i := 0 to pgImport.PageCount - 1 do
pgImport.Pages[i].Parent := pgImport;
end;
procedure TADO_QImport3WizardF.FormShow(Sender: TObject);
begin
SetCaptions;
SetTitle;
end;
procedure TADO_QImport3WizardF.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
else if Rbt.Name = 'rbtAccess' then ImportType := aiAccess
end;
procedure TADO_QImport3WizardF.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 TADO_QImport3WizardF.cbQuoteExit(Sender: TObject);
begin
Quote := Str2Char(cbQuote.Text, Quote);
end;
procedure TADO_QImport3WizardF.edtFileNameChange(Sender: TObject);
begin
FileName := edtFileName.Text
end;
procedure TADO_QImport3WizardF.chGoToLastPageClick(Sender: TObject);
begin
GoToLastPage := chGoToLastPage.Checked;
Wizard.GoToLastPage := GoToLastPage;
end;
procedure TADO_QImport3WizardF.chAutoSaveTemplateClick(Sender: TObject);
begin
AutoSaveTemplate := chAutoSaveTemplate.Checked;
Wizard.AutoSaveTemplate := AutoSaveTemplate;
end;
procedure TADO_QImport3WizardF.spbBrowseClick(Sender: TObject);
begin
if opnDialog.Execute then edtFileName.Text := opnDialog.FileName;
end;
procedure TADO_QImport3WizardF.SetImportType(const Value: TAllowedImport);
begin
if FImportType <> Value then
begin
if not (Value in Wizard.AllowedImports) then
raise EQImportError.Create(QImportLoadStr(QIE_UnknownImportSource));
FImportType := Value;
//----
rbtXLS.Checked := FImportType = aiXLS;
rbtDBF.Checked := FImportType = aiDBF;
rbtXML.Checked := FImportType = aiXML;
rbtTXT.Checked := FImportType = aiTXT;
rbtCSV.Checked := FImportType = aiCSV;
rbtAccess.Checked := FImportType = aiAccess;
//----
TuneOpenDialog;
ChangeExtension;
TuneAccessControls;
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 TADO_QImport3WizardF.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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -