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

📄 fuqimport3formatseditor.pas

📁 Advanced Data Import Component Suite for Borland Delphi and C++ Builder allows you to import your da
💻 PAS
📖 第 1 页 / 共 2 页
字号:
procedure TfmQImport3FormatsEditor.cbCharSetChange(Sender: TObject);
begin
  if Assigned(lstFields.Selected) and not FLoadingFormatItem then begin
    TQImportFieldFormat(lstFields.Selected.Data).CharSet := CharSet;
    SetEnabledControls;
  end;
end;

procedure TfmQImport3FormatsEditor.FillFieldsList;
var
  i, j: integer;
  n: string;
  FF: TQImportFieldFormat;
  WasInActive: boolean;
begin
  WasInActive := false;
  lstFields.Items.BeginUpdate;
  try
    if lstFields.Items.Count > 0 then lstFields.Items.Clear;
    if not Assigned(DataSet) then Exit;
    WasInActive :=  not Dataset.Active;
    if WasInActive then
    try
      Dataset.Open;
    except
      Exit;
    end;
    for i := 0 to DataSet.FieldCount - 1 do
    begin
      n := DataSet.Fields[i].FieldName;
      FF := TQImportFieldFormat.Create(nil);
      FF.FieldName := n;
      with lstFields.Items.Add do
      begin
        Caption := n;
        Data := FF;
        ImageIndex := 0;
      end;
      j := FieldFormats.IndexByName(n);
      if j = -1 then Continue;
      FF.GeneratorValue := FieldFormats[j].GeneratorValue;
      FF.GeneratorStep := FieldFormats[j].GeneratorStep;
      FF.ConstantValue := FieldFormats[j].ConstantValue;
      FF.NullValue := FieldFormats[j].NullValue;
      FF.DefaultValue := FieldFormats[j].DefaultValue;
      FF.QuoteAction := FieldFormats[j].QuoteAction;
      FF.LeftQuote := FieldFormats[j].LeftQuote;
      FF.RightQuote := FieldFormats[j].RightQuote;
      FF.CharCase := FieldFormats[j].CharCase;
      FF.CharSet := FieldFormats[j].CharSet;
    end; 
    if lstFields.Items.Count > 0 then lstFields.Selected := lstFields.Items[0];
  finally
    lstFields.Items.EndUpdate;
    if WasInActive then
    try
      Dataset.Close;
    except
    end;
  end;

  if lstFields.Items.Count > 0 then
  begin
    lstFields.Items[0].Focused := true;
    lstFields.Items[0].Selected := true;
    ShowFormatItem(lstFields.Items[0]);
  end;
end;

procedure TfmQImport3FormatsEditor.ApplyChanges;
var
  i, j: integer;
begin
  if lstFields.Items.Count = 0 then Exit;
  for i := 0 to lstFields.Items.Count - 1 do begin
    j := FieldFormats.IndexByName(lstFields.Items[i].Caption);
    if j > -1 then
      FieldFormats[j].Assign(TQImportFieldFormat(lstFields.Items[i].Data))
    else begin
      if not TQImportFieldFormat(lstFields.Items[i].Data).IsDefaultValues then
        with FieldFormats.Add do begin
          Assign(TQImportFieldFormat(lstFields.Items[i].Data));
        end;
    end;
  end;
end;

function TfmQImport3FormatsEditor.DataByName(const AName: string): TQImportFieldFormat;
var
  i: integer;
begin
  Result := nil;
  for i := 0 to lstFields.Items.Count - 1 do begin
    if Assigned(lstFields.Items[i].Data) then
      if AnsiCompareText(TQImportFieldFormat(lstFields.Items[i].Data).FieldName, AName) = 0 then
        Result := TQImportFieldFormat(lstFields.Items[i].Data);
  end;
end;

procedure TfmQImport3FormatsEditor.SetEnabledControls;
var
  MainCondition: boolean;
begin
  MainCondition := lstFields.Items.Count > 0;

  // generator
  edGeneratorValue.Enabled := MainCondition and
    (ConstantValue = EmptyStr) and (NullValue = EmptyStr) and
    (DefaultValue = EmptyStr) and (LeftQuote = EmptyStr) and
    (RightQuote = EmptyStr) and (QuoteAction = qaNone) and
    (CharCase = iccNone) and (CharSet = icsNone);
  laGeneratorValue.Enabled := edGeneratorValue.Enabled;
  edGeneratorStep.Enabled := edGeneratorValue.Enabled;
  laGeneratorStep.Enabled := edGeneratorValue.Enabled;
  //constant
  edConstantValue.Enabled := MainCondition and
    (GeneratorStep = 0) and (NullValue = EmptyStr) and
    (DefaultValue = EmptyStr);
  laConstantValue.Enabled := edConstantValue.Enabled;
  // default
  edNullValue.Enabled := MainCondition and
    (GeneratorStep = 0) and (ConstantValue = EmptyStr);
  laNullValue.Enabled := edNullValue.Enabled;
  edDefaultValue.Enabled := edNullValue.Enabled;
  laDefaultValue.Enabled := edNullValue.Enabled;
  // quote
  edLeftQuote.Enabled := MainCondition and (GeneratorStep = 0);
  laLeftQuote.Enabled := edLeftQuote.Enabled;
  laRightQuote.Enabled := edLeftQuote.Enabled;
  laQuoteAction.Enabled := edLeftQuote.Enabled;
  cbQuoteAction.Enabled := edLeftQuote.Enabled;
  // string coversion
  cbCharCase.Enabled := MainCondition and (GeneratorStep = 0);
  laCharCase.Enabled := cbCharCase.Enabled;
  cbCharSet.Enabled := cbCharCase.Enabled;
  laCharSet.Enabled := cbCharCase.Enabled;
  // replacements
  lvReplacements.Enabled := MainCondition;
  tbReplacements.Enabled := MainCondition;
end;

procedure TfmQImport3FormatsEditor.FormKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var
  i: integer;
  LI: TListItem;
begin
  if (ActiveControl = lstFields) and (Shift = []) then
    case Key of
      VK_INSERT: begin
        i := lstFields.Items.Count + 1;
        while Assigned(DataByName('NewItem_' + IntToStr(i))) do Inc(i);
        LI := lstFields.Items.Add;
        LI.Caption := 'NewItem_' + IntToStr(i);
        LI.Data := TQImportFieldFormat.Create(nil);
        lstFields.Selected := LI;
        LI.EditCaption;
      end;
      VK_DELETE: begin
        LI := lstFields.Selected;
        if Assigned(LI) then
        begin
          if Assigned(LI.Data) then
            TQImportFieldFormat(LI.Data).Free;
          lstFields.Items.Delete(LI.Index);
        end;
      end;
    end;
end;

procedure TfmQImport3FormatsEditor.lstFieldsEdited(Sender: TObject;
  Item: TListItem; var S: String);
begin
  S := AnsiUpperCase(S);
  TQImportFieldFormat(Item.Data).FieldName := S;
end;

function TfmQImport3FormatsEditor.GetQImportFieldFormats: TQImportFieldFormats;
var
  PropInfo: PPropInfo;
begin
  Result := nil;
  try
    PropInfo := GetPropInfo(FComponent.ClassInfo, 'FieldFormats');
    if Assigned(PropInfo) then
      Result := TQImportFieldFormats(GetOrdProp(FComponent, PropInfo));
  except
  end;
end;

function TfmQImport3FormatsEditor.GetDataSet: TDataSet;
var
  PropInfo: PPropInfo;
begin
  Result := nil;
  try
    PropInfo := GetPropInfo(FComponent.ClassInfo, 'DataSet');
    if Assigned(PropInfo) then
      Result := TDataSet(GetOrdProp(FComponent, PropInfo));
  except
  end;
end;

procedure TfmQImport3FormatsEditor.lstFieldsChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  if Change <> ctState then Exit;
  if not Assigned(Item.Data) then Exit;
  if not FIsNecessaryListChange then Exit;
  

  GeneratorValue := TQImportFieldFormat(Item.Data).GeneratorValue;
  GeneratorStep := TQImportFieldFormat(Item.Data).GeneratorStep;
  ConstantValue := TQImportFieldFormat(Item.Data).ConstantValue;
  NullValue := TQImportFieldFormat(Item.Data).NullValue;
  DefaultValue := TQImportFieldFormat(Item.Data).DefaultValue;
  LeftQuote := TQImportFieldFormat(Item.Data).LeftQuote;
  RightQuote := TQImportFieldFormat(Item.Data).RightQuote;
  QuoteAction := TQImportFieldFormat(Item.Data).QuoteAction;
  CharCase := TQImportFieldFormat(Item.Data).CharCase;
  CharSet := TQImportFieldFormat(Item.Data).CharSet;
  SetEnabledControls;
  TuneButtons;
end;

procedure TfmQImport3FormatsEditor.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  while lstFields.Items.Count > 0 do
    if Assigned(lstFields.Items[0].Data) then
    begin
      FIsNecessaryListChange := False;
      TQImportFieldFormat(lstFields.Items[0].Data).Free;
      lstFields.Items[0].Delete;
    end;
end;

procedure TfmQImport3FormatsEditor.FormCreate(Sender: TObject);
begin
  FIsNecessaryListChange := True;
  FLoadingFormatItem := False;
  FFormatItem := nil;
  TuneButtons;
end;

procedure TfmQImport3FormatsEditor.ShowFormatItem(Item: TListItem);
var
  FieldFormat: TQImportFieldFormat;
  i: integer;
begin
  FLoadingFormatItem := true;
  try
    FieldFormat := TQImportFieldFormat(Item.Data);
    edGeneratorValue.Text := IntToStr(FieldFormat.GeneratorValue);
    edGeneratorStep.Text := IntToStr(FieldFormat.GeneratorStep);
    edConstantValue.Text := FieldFormat.ConstantValue;
    edNullValue.Text := FieldFormat.NullValue;
    edDefaultValue.Text := FieldFormat.DefaultValue;
    edLeftQuote.Text := FieldFormat.LeftQuote;
    edRightQuote.Text := FieldFormat.RightQuote;
    cbQuoteAction.ItemIndex := Integer(FieldFormat.QuoteAction);
    cbCharCase.ItemIndex := Integer(FieldFormat.CharCase);
    cbCharSet.ItemIndex := Integer(FieldFormat.CharSet);

    lvReplacements.Items.BeginUpdate;
    try
      lvReplacements.Items.Clear;
      for i := 0 to FieldFormat.Replacements.Count - 1 do
        with lvReplacements.Items.Add do begin
          Caption := FieldFormat.Replacements[i].TextToFind;
          SubItems.Add(FieldFormat.Replacements[i].ReplaceWith);
          if FieldFormat.Replacements[i].IgnoreCase
            then SubItems.Add(QImportLoadStr(QIWDF_IgnoreCase_Yes))
            else SubItems.Add(QImportLoadStr(QIWDF_IgnoreCase_No));
          ImageIndex := 3;
          Data := FieldFormat.Replacements[i];
        end;
      if lvReplacements.Items.Count > 0 then begin
        lvReplacements.Items[0].Focused := true;
        lvReplacements.Items[0].Selected := true;
      end;
    finally
      lvReplacements.Items.EndUpdate;
    end;

    SetEnabledControls;
  finally
    FLoadingFormatItem := false;
  end;
end;

procedure TfmQImport3FormatsEditor.lvReplacementsChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  TuneButtons;
end;

procedure TfmQImport3FormatsEditor.lvReplacementsDblClick(Sender: TObject);
begin
  if tbtEditReplacement.Enabled then
    tbtEditReplacement.Click;
end;

procedure TfmQImport3FormatsEditor.tbtAddReplacementClick(Sender: TObject);
var
  TextToFind, ReplaceWith: string;
  IgnoreCase: boolean;
  R: TQImportReplacement;
begin
  TextToFind := EmptyStr;
  ReplaceWith := EmptyStr;
  IgnoreCase := false;
  if ReplacementEdit(TextToFind, ReplaceWith, IgnoreCase) then begin
    R := TQImportFieldFormat(lstFields.ItemFocused.Data).Replacements.Add;
    R.TextToFind := TextToFind;
    R.ReplaceWith := ReplaceWith;
    R.IgnoreCase := IgnoreCase;
    with lvReplacements.Items.Add do begin
      Caption := R.TextToFind;
      SubItems.Add(R.ReplaceWith);
      if R.IgnoreCase
        then SubItems.Add(QImportLoadStr(QIWDF_IgnoreCase_Yes))
        else SubItems.Add(QImportLoadStr(QIWDF_IgnoreCase_No));
      ImageIndex := 1;
      Data := R;
      Focused := true;
      Selected := true;
    end;
  end;
  TuneButtons;
end;

procedure TfmQImport3FormatsEditor.tbtEditReplacementClick(Sender: TObject);
var
  TextToFind, ReplaceWith: string;
  IgnoreCase: boolean;
  R: TQImportReplacement;
begin
  R := TQImportReplacement(lvReplacements.ItemFocused.Data);
  TextToFind := R.TextToFind;
  ReplaceWith := R.ReplaceWith;
  IgnoreCase := R.IgnoreCase;
  if ReplacementEdit(TextToFind, ReplaceWith, IgnoreCase) then begin
    R.TextToFind := TextToFind;
    R.ReplaceWith := ReplaceWith;
    R.IgnoreCase := IgnoreCase;
    with lvReplacements.ItemFocused do begin
      Caption := R.TextToFind;
      SubItems[0] := R.ReplaceWith;
      if R.IgnoreCase
        then SubItems[1] := QImportLoadStr(QIWDF_IgnoreCase_Yes)
        else SubItems[1] := QImportLoadStr(QIWDF_IgnoreCase_No);
    end;
  end;
  TuneButtons;
end;

procedure TfmQImport3FormatsEditor.tbtDelReplacementClick(Sender: TObject);
begin
  TQImportReplacement(lvReplacements.ItemFocused.Data).Free;
  lvReplacements.ItemFocused.Delete;
  TuneButtons;
end;

procedure TfmQImport3FormatsEditor.TuneButtons;
begin
  tbtAddReplacement.Enabled := Assigned(lstFields.ItemFocused);
  tbtEditReplacement.Enabled := Assigned(lstFields.ItemFocused) and
                                Assigned(lvReplacements.ItemFocused);
  tbtDelReplacement.Enabled := Assigned(lstFields.ItemFocused) and
                               Assigned(lvReplacements.ItemFocused);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -