unit Unit1;
interface
uses
Classes, SysUtils, Contnrs, DB, JPEG;
type
TDbJpgRecord = class(TObject)
private
FId: Integer;
Fkks: string;
FFoto: TJPEGImage;
public
constructor Create;
destructor Destroy; override;
procedure LoadFromDataSet(ADataSet: TDataSet);
property Id: Integer read FId;
property kks: string read Fkks;
property Foto: TJPEGImage read FFoto;
end;
TDbJpgRecords = class(TObjectList)
private
function GetItem(Index: Integer): TDbJpgRecord;
public
function Add(ARecord: TDbJpgRecord): Integer;
function LoadFromDataSet(ADataSet: TDataSet): Integer;
property Items[Index: Integer]: TDbJpgRecord read GetItem;
end;
implementation
{ TDbJpgRecord }
constructor TDbJpgRecord.Create;
begin
inherited Create;
FFoto := TJPEGImage.Create;
end;
destructor TDbJpgRecord.Destroy;
begin
FFoto.Free;
inherited Destroy;
end;
procedure TDbJpgRecord.LoadFromDataSet(ADataSet: TDataSet);
var
Stream: TStream;
begin
FId := ADataSet.FieldByName('Id').AsInteger;
Fkks := ADataSet.FieldByName('kks').AsString;
Stream := ADataSet.CreateBlobStream(ADataSet.FieldByName('foto'), bmRead);
try
FFoto.LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
{ TDbJpgRecords }
function TDbJpgRecords.GetItem(Index: Integer): TDbJpgRecord;
begin
Result := TDbJpgRecord(inherited GetItem(Index));
end;
function TDbJpgRecords.Add(ARecord: TDbJpgRecord): Integer;
begin
Result := Inherited Add(ARecord);
end;
function TDbJpgRecords.LoadFromDataSet(ADataSet: TDataSet): Integer;
var
R: TDbJpgRecord;
begin
if Assigned(ADataSet) then
begin
Result := 0;
ADataSet.First;
while not ADataSet.Eof do
begin
R := TDbJpgRecord.Create;
try
R.LoadFromDataSet(ADataSet);
if Add(R) >= 0 then
Inc(Result);
except
FreeAndNil(R);
end;
ADataSet.Next;
end;
end
else
Result := -1;
end;
end.
Bookmarks