unit MailInfo;
interface
uses
Contnrs,
// <- TObjectList
Grids;
// <- TStringGrid
type
TMailInfo =
class
private
FAddress :
string;
FSubject :
string;
FBody :
string;
FDate : TDateTime;
FName :
string;
public
property Address :
string read FAddress
write FAddress;
property Subject :
string read FSubject
write FSubject;
property Body :
string read FBody
write FBody;
property Date : TDateTime
read FDate
write FDate;
property Name :
string read FName
write FName;
end;
procedure ShowListInStringGrid( AMailInfoList : TObjectList; AStringGrid : TStringGrid );
implementation
procedure ShowListInStringGrid( AMailInfoList : TObjectList; AStringGrid : TStringGrid );
var
LItem : TMailInfo;
LIdx : Integer;
LRow : Integer;
LCol : Integer;
LValue :
string;
begin
// StringGrid anpassen
with AStringGrid
do
begin
FixedRows := 0;
// keine festen Zeilen
FixedCols := 0;
// keine festen Spalten
// Die Anzahl der Zeilen wird bestimmt durch die Summe der
// - festen Zeilen
// - Anzahl der Datenzeilen
RowCount := FixedRows + AMailInfoList.Count;
// Wir wollen 5 Spalten haben
ColCount := FixedCols + 5;
end;
// Jetzt die Daten in das Grid schreiben
for LIdx := 0
to Pred( AMailInfoList.Count )
do
begin
// Das MailItem aus der Liste casten und merken
LItem := AMailInfoList[LIdx]
as TMailInfo;
// In welche Zeile werden wir schreiben?
LRow := AStringGrid.FixedRows + LIdx;
// Jetzt durch alle Spalten laufen
for LCol := 0
to Pred( AStringGrid.ColCount )
do
begin
case LCol
of
0 : LValue := LItem.Address;
1 : LValue := LItem.Subject;
2 : LValue := LItem.Body;
3 : LValue := DateToStr( LItem.Date );
4 : LValue := LItem.
Name;
else
LValue := '
';
end;
// Mit dieser Abfrage verhindern wir ein unnötiges Neuzeichnen des Grids
if AStringGrid.Cells[LCol,LRow] <> LValue
then
AStringGrid.Cells[LCol,LRow] := LValue;
end;
end;
end;