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:

Aktuelles Bitdefender Angebot


WebSite X5WebSite X5 Winterangebot mit 35% Rabatt

Professionelle Homepages ohne Programmierung erstellen mit WebSite X5 und dabei bis Ende Januar 35% sparen:

WebSite X5 Evo jetzt bereits für 58,46 Euro statt 89,95 Euro mit dem Gutscheincode SOFTWAREWINTER

WebSite X5 Pro jetzt bereits für 129,96 Euro statt 199,95 Euro mit dem Gutscheincode SOFTWAREWINTER

In den Links sind die 35% Rabatt bereits berücksichtigt!



Verwandte Themen: