Gibt es eine Möglichkeit, eine Auswahl von Zeilen aus einem TDBGrid in Delphi 2007 leicht in die Zwischenablage zu kopieren?
Antwort
Zu viele Anzeigen?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.)