📄 qimport3wizard.pas
字号:
if (Operation = opRemove) and (AComponent = FDataSet)
then FDataSet := nil;
if (Operation = opRemove) and (AComponent = FDBGrid)
then FDBGrid := nil;
if (Operation = opRemove) and (AComponent = FListView)
then FListView := nil;
if (Operation = opRemove) and (AComponent = FStringGrid)
then FStringGrid := nil;
end;
function TQImport3Wizard.IsFileName: Boolean;
begin
Result := FFileName <> EmptyStr;
end;
procedure TQImport3Wizard.SetFormats(const Value: TQImportFormats);
begin
FFormats.Assign(Value);
end;
procedure TQImport3Wizard.SetFieldFormats(const Value: TQImportFieldFormats);
begin
FFieldFormats.Assign(Value);
end;
procedure TQImport3Wizard.SetKeyColumns(const Value: TStrings);
begin
FKeyColumns.Assign(Value);
end;
procedure TQImport3Wizard.SetPicture(const Value: TPicture);
begin
FPicture.Assign(Value);
end;
{ TQImportWizardF }
const
FileExts: array[0..11] of string = ('.xls', '.dbf', '.xml', '.txt', '.csv', '.mdb', '.html', '.xml', '.xlsx', '.docx', '.ods', '.odt');
procedure TQImport3WizardF.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 TQImport3WizardF.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 TQImport3WizardF.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 TQImport3WizardF.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 TQImport3WizardF.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 TQImport3WizardF.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 TQImport3WizardF.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(QImportLoadStr(QIW_NeedCancel)),
PChar(QImportLoadStr(QIW_NeedCancelCaption)),
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 TQImport3WizardF.BeforePost(Sender: TObject;
Row: TQImportRow; var Accept: Boolean);
begin
if Assigned(Wizard.OnBeforePost) then
Wizard.OnBeforePost(Sender, Row, Accept);
end;
procedure TQImport3WizardF.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 TQImport3WizardF.FormCreate(Sender: TObject);
var
i: Integer;
begin
pgImport.ActivePage := tsImportType;
for i := 0 to pgImport.PageCount - 1 do
pgImport.Pages[i].Parent := Self;
TuneVisible;
{$IFDEF ADO}
ImpAccess := TADO_QImport3Access.Create(Self);
ImpAccess.AddType := qatInsert;
ImpAccess.OnBeforeImport := BeforeImport;
ImpAccess.OnAfterImport := AfterImport;
ImpAccess.OnImportRecord := ImportRecord;
ImpAccess.OnImportError := ImportError;
ImpAccess.OnImportErrorAdv := ImportErrorAdv;
ImpAccess.OnNeedCommit := NeedCommit;
ImpAccess.OnImportCancel := ImportCancel;
ImpAccess.OnBeforePost := BeforePost;
ImpAccess.OnDestinationLocate := DestinationLocate;
rbtAccessTable.OnClick := rbtAccessTableClick;
lbAccessTables.OnClick := lbAccessTablesClick;
rbtAccessSQL.OnClick := rbtAccessSQLClick;
tbtAccessSQLLoad.OnClick := sbtAccessSQLLoadClick;
tbtAccessSQLSave.OnClick := sbtAccessSQLSaveClick;
memAccessSQL.OnChange := memAccessSQLChange;
lstAccessDataSet.OnChange := lstAccessDataSetChange;
lstAccess.OnChange := lstAccessChange;
lstAccessMap.OnChange := lstAccessMapChange;
bAccessAdd.OnClick := bAccessAddClick;
bAccessAdd.OnMouseDown := bAccessAddMouseDown;
bAccessAdd.OnMouseUp := bAccessAddMouseUp;
bAccessAutoFill.OnClick := bAccessAutoFillClick;
bAccessAutoFill.OnMouseDown := bAccessAutoFillMouseDown;
bAccessAutoFill.OnMouseUp := bAccessAutoFillMouseUp;
bAccessRemove.OnClick := bAccessRemoveClick;
bAccessRemove.OnMouseDown := bAccessRemoveMouseDown;
bAccessRemove.OnMouseUp := bAccessRemoveMouseUp;
bAccessClear.OnClick := bAccessClearClick;
bAccessClear.OnMouseDown := bAccessClearMouseDown;
bAccessClear.OnMouseUp := bAccessClearMouseUp;
pbAccessAdd.OnPaint := pbAccessAddPaint;
pbAccessAutoFill.OnPaint := pbAccessAutoFillPaint;
pbAccessRemove.OnPaint := pbAccessRemovePaint;
pbAccessClear.OnPaint := pbAccessClearPaint;
edAccessPassword.OnChange := edAccessPasswordChange;
{$ENDIF}
{$IFDEF HTML}
{$IFDEF VCL6}
impHTML := TQImport3HTML.Create(Self);
impHTML.AddType := qatInsert;
impHTML.OnBeforeImport := BeforeImport;
impHTML.OnAfterImport := AfterImport;
impHTML.OnImportRecord := ImportRecord;
impHTML.OnImportError := ImportError;
impHTML.OnImportErrorAdv := ImportErrorAdv;
impHTML.OnNeedCommit := NeedCommit;
impHTML.OnImportCancel := ImportCancel;
impHTML.OnBeforePost := BeforePost;
impHTML.OnDestinationLocate := DestinationLocate;
sgrHTML := TqiStringGrid.Create(Self);
sgrHTML.Parent := tsHTMLOptions;
sgrHTML.Left := 163;
sgrHTML.Top := 88;
sgrHTML.Width := 402;
sgrHTML.Height := 274;
sgrHTML.ColCount := 1;
sgrHTML.DefaultRowHeight := 16;
sgrHTML.FixedCols := 0;
sgrHTML.RowCount := 1;
sgrHTML.FixedRows := 0;
sgrHTML.Font.Charset := DEFAULT_CHARSET;
sgrHTML.Font.Color := clWindowText;
sgrHTML.Font.Height := -11;
sgrHTML.Font.Name := 'Courier New';
sgrHTML.Font.Style := [];
sgrHTML.Options := [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine];
sgrHTML.ParentFont := False;
sgrHTML.TabOrder := 5;
sgrHTML.OnDrawCell := sgrHTMLDrawCell;
sgrHTML.OnMouseDown := sgrHTMLMouseDown;
lvHTMLFields.OnChange := lvHTMLFieldsChange;
tbtHTMLAutoFill.OnClick := tbtHTMLAutoFillClick;
tbtHTMLClear.OnClick := tbtHTMLClearClick;
cbHTMLTableNumber.OnChange := cbHTMLTableNumberChange;
cbHTMLColNumber.OnChange := cbHTMLColNumberChange;
edtHTMLSkipLines.OnChange := edtHTMLSkipLinesChange;
FHTMLFile := THTMLFile.Create;
HTMLSkipLines := 0;
{$ENDIF}
{$ENDIF}
{$IFDEF XLSX}
{$IFDEF VCL6}
impXlsx := TQImport3Xlsx.Create(Self);
impXlsx.AddType := qatInsert;
impXlsx.OnBeforeImport := BeforeImport;
impXlsx.OnAfterImport := AfterImport;
impXlsx.OnImportRecord := ImportRecord;
impXlsx.OnImportError := ImportError;
impXlsx.OnImportErrorAdv := ImportErrorAdv;
impXlsx.OnNeedCommit := NeedCommit;
impXlsx.OnImportCancel := ImportCancel;
impXlsx.OnBeforePost := BeforePost;
impXlsx.OnDestinationLocate := DestinationLocate;
lvXlsxFields.OnChange := lvXlsxFieldsChange;
{ sgrHTML.OnDrawCell := sgrHTMLDrawCell;
sgrHTML.OnMouseDown := sgrHTMLMouseDown;}
tlbXlsxAutoFill.OnClick := tlbXlsxAutoFillClick;
tlbXlsxClear.OnClick := tlbXlsxClearClick;
edXlsxSkipRows.OnChange := edXlsxSkipRowsChange;
pcXlsxFile.OnChange := pcXlsxFileChange;
XlsxSkipLines := 0;
XlsxSheetName := '';
{$ENDIF}
{$ENDIF}
{$IFDEF DOCX}
{$IFDEF VCL6}
impDocx := TQImport3Docx.Create(Self);
impDocx.AddType := qatInsert;
impDocx.OnBeforeImport := BeforeImport;
impDocx.OnAfterImport := AfterImport;
impDocx.OnImportRecord := ImportRecord;
impDocx.OnImportError := ImportError;
impDocx.OnImportErrorAdv := ImportErrorAdv;
impDocx.OnNeedCommit := NeedCommit;
impDocx.OnImportCancel := ImportCancel;
impDocx.OnBeforePost := BeforePost;
impDocx.OnDestinationLocate := DestinationLocate;
lvDocxFields.OnChange := lvDocxFieldsChange;
{ sgrDocx.OnDrawCell := sgrDocxDrawCell;
sgrDocx.OnMouseDown := sgrDocxMouseDown;}
tlbDocxAutoFill.OnClick := tlbDocxAutoFillClick;
tlbDocxClear.OnClick := tlbDocxClearClick;
edDocxSkipRows.OnChange := edDocxSkipRowsChange;
pcDocxFile.OnChange := pcDocxFileChange;
DocxSkipLines := 0;
DocxTableNumber := 0;
{$ENDIF}
{$ENDIF}
{$IFDEF ODS}
{$IFDEF VCL6}
impODS := TQImport3ODS.Create(Self);
impODS.AddType := qatInsert;
impODS.OnBeforeImport := BeforeImport;
impODS.OnAfterImport := AfterImport;
impODS.OnImportRecord := ImportRecord;
impODS.OnImportError := ImportError;
impODS.OnImportErrorAdv := ImportErrorAdv;
impODS.OnNeedCommit := NeedCommit;
impODS.OnImportCancel := ImportCancel;
impODS.OnBeforePost := BeforePost;
impODS.OnDestinationLocate := DestinationLocate;
lvODSFields.OnChange := lvODSFieldsChange;
tlbODSAutoFill.OnClick := tlbODSAutoFillClick;
tlbODSClear.OnClick := tlbODSClearClick;
edODSSkipRows.OnChange := edODSSkipRowsChange;
pcODSFile.OnChange := pcODSFileChange;
ODSSkipLines := 0;
ODSSheetName := '';
{$ENDIF}
{$ENDIF}
{$IFDEF ODT}
{$IFDEF VCL6}
impODT := TQImport3ODT.Create(Self);
impODT.AddType := qatInsert;
impODT.OnBeforeImport := BeforeImport;
impODT.OnAfterImport := AfterImport;
impODT.OnImportRecord := ImportRecord;
impODT.OnImportError := ImportError;
impODT.OnImportErrorAdv := ImportErrorAdv;
impODT.OnNeedCommit := NeedCommit;
impODT.OnImportCancel := ImportCancel;
impODT.OnBeforePost := BeforePost;
impODT.OnDestinationLocate := DestinationLocate;
lvODTFields.OnChange := lvODTFieldsChange;
tlbODTAutoFill.OnClick := tlbODTAutoFillClick;
tlbODTClear.OnClick := tlbODTClearClick;
edODTSkipRows.OnChange := edODTSkipRowsChange;
pcODTFile.OnChange := pcODTFileChange;
cbODTUseHeader.OnClick := cbODTUseHeaderClick;
ODTSkipLines := 0;
ODTSheetName := '';
ODTUseHeader := false;
{$ENDIF}
{$ENDIF}
{$IFDEF XMLDOC}
{$IFDEF VCL6}
impXMLDoc := TQImport3XMLDoc.Create(Self);
impXMLDoc.AddType := qatInsert;
impXMLDoc.OnBeforeImport := BeforeImport;
impXMLDoc.OnAfterImport := AfterImport;
impXMLDoc.OnImportRecord := ImportRecord;
impXMLDoc.OnImportError := ImportError;
impXMLDoc.OnImportErrorAdv := ImportErrorAdv;
impXMLDoc.OnNeedCommit := NeedCommit;
impXMLDoc.OnImportCancel := ImportCancel;
impXMLDoc.OnBeforePost := BeforePost;
impXMLDoc.OnDestinationLocate := DestinationLocate;
sgrXMLDoc := TqiStringGrid.Create(Self);
sgrXMLDoc.Parent := tsXMLDocOptions;
sgrXMLDoc.Left := 200;
sgrXMLDoc.Top := 155;
sgrXMLDoc.Width := 360;
sgrXMLDoc.Height := 214;
sgrXMLDoc.ColCount := 2;
sgrXMLDoc.DefaultColWidth := 82;
sgrXMLDoc.DefaultRowHeight := 16;
sgrXMLDoc.RowCount := 2;
sgrXMLDoc.Font.Charset := DEFAULT_CHARSET;
sgrXMLDoc.Font.Color := clWindowText;
sgrXMLDoc.Font.Height := -11;
sgrXMLDoc.Font.Name := 'Courier New';
sgrXMLDoc.Font.Style := [];
sgrXMLDoc.Options := [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine];
sgrXMLDoc.ParentFont := False;
sgrXMLDoc.TabOrder := 1;
sgrXMLDoc.OnDrawCell := sgrXMLDocDrawCell;
sgrXMLDoc.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -