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

📄 ado_qimport3wizard.pas

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