152 lines
4.0 KiB
Plaintext
152 lines
4.0 KiB
Plaintext
unit umain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ieview, iemview,
|
|
Db, Grids, DBGrids, DBTables, hyieutils, imageenview, ImageEnIO, StdCtrls, ExtCtrls, ComCtrls,
|
|
ieopensavedlg, iexBitmaps, hyiedefs, iesettings, iexDBBitmaps, DBCtrls;
|
|
|
|
type
|
|
TMainForm = class(TForm)
|
|
Table1: TTable;
|
|
DataSource1: TDataSource;
|
|
ImageEnMView1: TImageEnMView;
|
|
Panel1: TPanel;
|
|
Label1: TLabel;
|
|
Edit1: TEdit;
|
|
btnAppend: TButton;
|
|
btnDelete: TButton;
|
|
btnRotate: TButton;
|
|
btnEffects: TButton;
|
|
dlgOpenImage: TOpenImageEnDialog;
|
|
Splitter1: TSplitter;
|
|
ImageEnView1: TImageEnView;
|
|
procedure btnAppendClick(Sender: TObject);
|
|
procedure btnDeleteClick(Sender: TObject);
|
|
procedure btnEffectsClick(Sender: TObject);
|
|
procedure btnRotateClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure Edit1Change(Sender: TObject);
|
|
procedure Table1AfterScroll(DataSet: TDataSet);
|
|
private
|
|
{ Private declarations }
|
|
fDBBitmap : TIEDBBitmap;
|
|
fDBMultiBitmap : TIEDBMultiBitmap;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
MainForm: TMainForm;
|
|
|
|
implementation
|
|
|
|
uses
|
|
imageenproc;
|
|
|
|
{$R *.DFM}
|
|
{$R WindowsTheme.res}
|
|
|
|
|
|
procedure TMainForm.btnAppendClick(Sender: TObject);
|
|
begin
|
|
if dlgOpenImage.Execute then
|
|
fDBMultiBitmap.AppendImage( dlgOpenImage.Filename );
|
|
end;
|
|
|
|
procedure TMainForm.btnDeleteClick(Sender: TObject);
|
|
var
|
|
idx: Integer;
|
|
begin
|
|
idx := ImageEnMView1.SelectedImage;
|
|
if idx < 0 then
|
|
exit;
|
|
|
|
fDBMultiBitmap.DeleteImage( ImageEnMView1.SelectedImage );
|
|
ImageEnMView1.SelectedImage := idx - 1;
|
|
end;
|
|
|
|
procedure TMainForm.btnEffectsClick(Sender: TObject);
|
|
var
|
|
bmp: TIEBitmap;
|
|
proc: TImageEnProc;
|
|
bChanged: Boolean;
|
|
begin
|
|
if ImageEnMView1.SelectedImage < 0 then
|
|
exit;
|
|
|
|
bmp := fDBMultiBitmap.GetTIEBitmap( ImageEnMView1.SelectedImage );
|
|
proc := TImageEnProc.CreateFromBitmap( bmp );
|
|
proc.PreviewsParams := proc.PreviewsParams + [ prppDefaultLockPreview ];
|
|
bChanged := proc.DoPreviews();
|
|
fDBMultiBitmap.ReleaseBitmap( ImageEnMView1.SelectedImage, bChanged );
|
|
FreeAndNil( proc );
|
|
end;
|
|
|
|
procedure TMainForm.btnRotateClick(Sender: TObject);
|
|
begin
|
|
if ImageEnMView1.SelectedImage >= 0 then
|
|
fDBMultiBitmap.Rotate( ImageEnMView1.SelectedImage, -90 );
|
|
end;
|
|
|
|
procedure TMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
ImageEnMView1.SetModernStyling;
|
|
ImageEnMView1.DefaultBottomText := iedtFilename;
|
|
|
|
// Open our database table
|
|
Table1.DatabaseName := ExtractFilePath(application.exename);
|
|
Table1.Open;
|
|
Edit1Change(self);
|
|
|
|
// Create our DB Multi-Bitmap and point to our table which contains display name and image blob fields
|
|
fDBMultiBitmap := TIEDBMultiBitmap.create( DataSource1, 'Photo', 'Name' );
|
|
|
|
{
|
|
Note: If the table actually pointed to local files we might call like this:
|
|
|
|
fDBMultiBitmap := TIEDBMultiBitmap.create( DataSource1, '', 'Filename' );
|
|
fDBMultiBitmap.ImagePath := 'C:\My Image Folder\';
|
|
}
|
|
|
|
// Now make our ImageEnMView1 use our DB Multi-Bitmap as its image container
|
|
ImageEnMView1.SetExternalMBitmap( fDBMultiBitmap );
|
|
|
|
// Make ImageEnMView1 follow cursor movement
|
|
fDBMultiBitmap.FollowDBCursor := True;
|
|
|
|
|
|
// Create our DB Bitmap and point to our table which contains display name and image blob fields
|
|
fDBBitmap := TIEDBBitmap.create( DataSource1, 'Photo', 'Name' );
|
|
// Now make our ImageEnView1 use our DB Bitmap as its image container
|
|
ImageEnView1.SetExternalBitmap( fDBBitmap );
|
|
end;
|
|
|
|
procedure TMainForm.FormDestroy(Sender: TObject);
|
|
begin
|
|
FreeAndNil( fDBBitmap );
|
|
FreeAndNil( fDBMultiBitmap );
|
|
end;
|
|
|
|
procedure TMainForm.Edit1Change(Sender: TObject);
|
|
begin
|
|
if Edit1.Text <> '' then
|
|
begin
|
|
Table1.FilterOptions := [ foCaseInsensitive ];
|
|
Table1.Filter := 'Name=''' + Edit1.text + '*''';
|
|
Table1.Filtered := true;
|
|
end
|
|
else
|
|
Table1.Filtered := false;
|
|
end;
|
|
|
|
|
|
procedure TMainForm.Table1AfterScroll(DataSet: TDataSet);
|
|
begin
|
|
Caption := 'TIEDBMultiBitmap Demo - www.ImageEn.com' + '-' + Table1.FieldByName( 'Name' ).AsString;
|
|
end;
|
|
|
|
end.
|