2 Stimmen

Kopieren von Teilen eines tdbgrid in die Zwischenablage?

Gibt es eine Möglichkeit, eine Auswahl von Zeilen aus einem TDBGrid in Delphi 2007 leicht in die Zwischenablage zu kopieren?

5voto

KevinRF Punkte 592

Diese Methode stammt aus unserer internen Bibliothekseinheit

procedure BuildListFromDBGrid(DBGrid: TDBGrid; const FieldName: String; Strings :TStrings);
var
  i: Integer;
begin
  Strings.Clear();
  with DBGrid do
     begin
        Strings.BeginUpdate(); // If assocated with a UI control (Listbox, etc), this will prevent any flickering
        DataSource.DataSet.DisableControls();
        try
          for i := 0 to (SelectedRows.Count - 1) do
             begin
               Datasource.DataSet.GotoBookmark(Pointer(SelectedRows[i]));
               Strings.Add(DataSource.DataSet.FieldByName(FieldName).AsString);
             end;
        finally
           DataSource.DataSet.EnableControls();
           Strings.EndUpdate();
        end;
     end;
end;

Um die Liste der ausgewählten Elemente in der Zwischenablage zu erhalten, fügen Sie Clipbrd zu Ihrer uses-Klausel hinzu und rufen die Prozedur

var
  SelectedItems :TStringList;
begin
  SelectedItems := TStringList.Create();
  try
    BuildListFromDBGrid(MyDBGrid, 'InvoiceID', SelectedItems);
    Clipboard.AsText := SelectedItems.Text;
  finally
    SelectedItems.Free();
  end;
end;

Natürlich können Sie die obige Methode abändern oder eine neue Methode erstellen, die die ausgewählten Elemente direkt in die Zwischenablage einfügt (z. B. mehrere Felder, in einem speziellen Format usw.)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X