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:

Notebook & PC Weihnachtsangebote


sevdesk Online-Buchhaltung sevdesk Angebot – 50% auf Alles

Bei sevdesk kann man aktuell 50% sparen, sowohl bei Wahl von 12 Monaten als auch bei der Wahl von 24 Monaten. Der Rabatt gilt für alle sevdesk Tarife von sevdesk Rechnung bis sevdesk Buchhaltung Pro



Verwandte Themen: