⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qimport3wizard.pas

📁 Advanced Data Import Component Suite for Borland Delphi and C++ Builder allows you to import your da
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  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 + -