Delphi: Tabellendaten in die Zwischenablage kopieren

Nicht immer kann man alle Wünsche eines Anwenders vorhersehen, und dies bei der Präsentation der Daten im jeweiligen Programm berücksichtigen, ob bei den verwendeten Charts, Reports oder auch bei weiterführenden Auswertungen wie Summensalden. Hier ist es sinnvoll, um ein Programm nicht übermäßig aufzublähen, in dem man versucht jeden Einzelwunsch zu erfüllen, einfach entsprechende Routinen einzubauen, mit denen man die Daten einer Tabelle, welche oft mithilfe eines Grids oder einer entsprechenden Liste, präsentiert werden, einfach in die Zwischenablage kopieren kann.

Von hier aus kann der Anwender die Daten dann leicht in ein Drittprogramm einfügen, wo er die Daten etwa für eine Präsentation aufbereiten kann oder mithilfe eines Tabellenkalkulationsprogramms nach Herzenslust nach seinen Wünschen bearbeiten kann.

3 Beispielroutinen (Delphi) zeigen, wie einfach dies möglich ist, am Beispiel eines NextGrids (Bergsoft) oder einer AdvOutlookList (TMS) – ein Anpassen an eingebaute oder andere Grids oder Listen sollte aber für niemanden ein Problem darstellen.

uses …, clipbrd;

procedure CopyToClipBoard(const xGrid: TNextGrid); overload;
procedure CopyToClipBoard(const xGrid: TAdvOutlookList); overload;

procedure copyToClipBoard(const xGrid: TAdvOutlookList); overload;
var
s: string;
g, x,i: Integer;
Inhalt: TStrings;
begin
if xGrid.GroupCount=0 then exit;
s := “;
for x := 0 to xGrid.Columns.Count – 1 do
s := s+xGrid.Columns[x].Caption + #9;
s := s + #13#10;
for g := 0 to xGrid.GroupCount – 1 do
begin
if xGrid.Groups[g].ChildCount>0 then
begin
for x := 0 to xGrid.Groups[g].ChildCount – 1 do
begin
Inhalt:=xGrid.Groups[g].ChildItem[x];
for I := 0 to Inhalt.Count-1 do
s:=s+Inhalt[i]+#9;
s:=s+#13#10;
end;
end;
end;
clipboard.AsText:=s;
end;

procedure copyToClipBoard(const xGrid: TNextGrid);
var
s: string;
r, c: Integer;
begin

if xGrid.RowCount > 0 then
begin
s := “;
for r := 0 to xgrid.Columns.Count – 1 do
s := s + Trim(xGrid.Columns[r].Header.Caption) + #9;
s := s + #13;
for r := 0 to xgrid.RowCount – 1 do
begin
for c := 0 to xGrid.Columns.Count – 1 do
s := s + Trim(xGrid.Cell[c, r].AsString) + #9;
s := s + #13;
end;
Clipboard.AsText := s;
end;
end;

Natürlich lässt sich das Ganze noch individueller gestalten, zum Beispiel könnte man über einen Parameter festlegen, ob die Spaltenüberschriften ausgegeben werden sollen oder nicht, oder man könnte nur bestimmte Abschnitte, etwa die aktuell markierte Zeile exportieren usw.

Werbung & Infos:

HP Frühlingsangebote 2024

Aktuelles Bitdefender Angebot


Verwandte Themen: