Registriert seit: 26. Dez 2002
Ort: Berlin
140 Beiträge
Delphi 5 Standard
|
Re: StringGrid
20. Jun 2009, 20:31
ich habe hier mal ein auszug
Delphi-Quellcode:
nit Artikelverwaltung;
interface
uses classes, grids;
// Datenstruktur für die Speicherung auf Festplatte
// deshalb SHORTSTRING
type TArtikelerfassungRec = packed record
Datensatz:ShortString;
AbteilungName:ShortString;
AbteilungNr:ShortString;
Artikel:ShortString;
ArtikelAnzahl:ShortString;
ArtikelWert:ShortString;
ArtikelGesamtpreis:ShortString;
ArtikelVerbleib:ShortString;
Fremdobjekt:ShortString;
end;
// Pointer auf die Struktur, notwendig für TList
type pArtikelerfassungRec = ^TArtikelerfassungRec;
type
CArtikelerfassung = class(Tobject)
private
Liste:TList; // privates Liste
protected
public
constructor Create;
destructor Destroy; override;
function Count:integer;
procedure add(rec:TArtikelerfassungRec);
procedure clear;
procedure Delete(Nr:integer);
procedure Save(szDatei:string);
procedure Load(szDatei:string);
function getItem(Nr:integer):TArtikelerfassungRec;
procedure setItem(Nr:integer; Rec:TArtikelerfassungRec);
procedure Show(ArtikelGrid:TStringGrid);
published
end;
procedure InitArtikelerfassungRec(var Rec:TArtikelerfassungRec);
implementation
uses SysUtils;
constructor CArtikelerfassung.Create;
begin
// Erzeugung der Liste
Liste := TList.create;
end;
destructor CArtikelerfassung.Destroy;
begin
inherited Destroy;
// Freigeben des Speichers
clear;
Liste.free;
end;
// gibt die Anzahl der Einträge aus
function CArtikelerfassung.Count:integer;
begin
result := Liste.count;
end;
// fügt einen Datensatz in die Liste
// eventuell Umstellung auf Pointer Parameter
procedure CArtikelerfassung.add(rec:TArtikelerfassungRec);
var pRec:pArtikelerfassungRec;
begin
new(pRec);
pRec^:= rec;
Liste.add(pRec);
end;
// Ausgabe des Nr Elementes
// Achtung: Nr zählt von 0 bis N-1
function CArtikelerfassung.getItem(Nr:integer):TArtikelerfassungRec;
var pRec:pArtikelerfassungRec;
begin
pRec := Liste.Items[Nr];
result := pRec^;
end;
// Setzt ein Elementes neu
// Achtung: Nr zählt von 0 bis N-1
procedure CArtikelerfassung.setItem(Nr:integer; Rec:TArtikelerfassungRec);
var pRec:pArtikelerfassungRec;
begin
pRec := Liste.Items[Nr];
pRec^ := Rec;
end;
// löscht alle Datenätze
procedure CArtikelerfassung.clear;
var i:integer;
var pRec:pArtikelerfassungRec;
begin
for i:=0 to Liste.Count-1 do
begin
pRec := Liste.Items[i];
dispose(pRec);
end;
Liste.clear;
end;
// Löscht ein Elementes
// Achtung: Nr zählt von 0 bis N-1
procedure CArtikelerfassung.Delete(Nr:integer);
var pRec:pArtikelerfassungRec;
begin
pRec := Liste.Items[Nr];
dispose(pRec);
Liste.delete(Nr);
end;
// Sichert die Datensätz ein der angegeben Datei
// Keine Sicherheitsabfrage, ob Überschrieben J/N
procedure CArtikelerfassung.Save(szDatei:string);
var kanal:file of TArtikelerfassungRec;
var pRec:PArtikelerfassungRec;
i:integer;
begin
assign(kanal,szDatei);
rewrite(kanal);
for i:=0 to Liste.Count-1 do
begin
pRec := Liste.Items[i];
write(kanal,pRec^);
end;
closefile(kanal);
end;
// Lädt die Datensätz
procedure CArtikelerfassung.Load(szDatei:string);
var kanal:file of TArtikelerfassungRec;
var Rec:TArtikelerfassungRec;
begin
clear; // Die Daten werden auf jedenfall gelöscht
if FileExists(szDatei) then
begin
assign(kanal,szDatei);
reset(kanal);
while not eof(kanal) do
begin
read(kanal,Rec);
add(Rec);
end;
closefile(kanal);
end
else
begin
// Meldung('Fehler','Die angegebene Datei ist nicht vorhanden'+NL+szdatei);
end;
end;
// Zeigt die Datensätze in einem externen Grid für das Objekt(Tabelle) an
procedure CArtikelerfassung.Show(ArtikelGrid:TStringGrid);
var i:integer;
pRec:pArtikelerfassungRec;
begin
if Liste.Count = 0 then
begin
ArtikelGrid.RowCount := 2;
ArtikelGrid.cells[0,1] := '-';
ArtikelGrid.cells[1,1] := '-';
ArtikelGrid.cells[2,1] := '-';
ArtikelGrid.cells[3,1] := '-';
ArtikelGrid.cells[4,1] := '-';
end
else
begin
ArtikelGrid.RowCount := Liste.Count+1;
for i:=0 to Liste.Count-1 do
begin
pRec := Liste.Items[i];
ArtikelGrid.cells[0,i+1] := IntToStr(i+1);
ArtikelGrid.cells[1,i+1] := pRec.AbteilungName;
ArtikelGrid.cells[2,i+1] := pRec.AbteilungNr;
ArtikelGrid.cells[3,i+1] := pRec.Artikel;
ArtikelGrid.cells[4,i+1] := pRec.ArtikelWert;
end;
end;
end;
// Procedure dient zur Initialisierung
procedure InitArtikelerfassungRec(var Rec:TArtikelerfassungRec); // ohne
begin
with Rec do
begin
AbteilungName:='';
AbteilungNr:='';
Artikel:='';
ArtikelWert:='';
end;
end;
end.
|
|
Zitat
|