BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Multi/MViewStyles/Main.pas

532 lines
18 KiB
Plaintext

unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ieview, iexFolderMView, iemview,
StdCtrls, ExtCtrls, iemio, imageenview, ComCtrls, ShlObj, Menus, ActnList, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers,
iexRulers;
type
TForm1 = class(TForm)
pnlRight: TPanel;
tmrUpdatePreview: TTimer;
Splitter1: TSplitter;
grpFolder: TGroupBox;
edtFolder: TEdit;
grpThumbSettings: TGroupBox;
lblThumbnailClipping: TLabel;
lblPercent: TLabel;
btnSetLayout: TButton;
lblFileTypes: TLabel;
cmbFileTypes: TComboBox;
grpPreview: TGroupBox;
lblThumbSize: TLabel;
lblX: TLabel;
btnSelectFolder: TButton;
grpDisplayStyle: TGroupBox;
pnlPreview: TPanel;
chkPreview: TCheckBox;
ImageEnView1: TImageEnView;
edtThumbWidth: TEdit;
updThumbWidth: TUpDown;
edtThumbHeight: TEdit;
updThumbHeight: TUpDown;
edtClipping: TEdit;
updClipping: TUpDown;
btnOpenParent: TButton;
rdbShowThumbs: TRadioButton;
rdbShowDetails: TRadioButton;
rdbShowColumns: TRadioButton;
lblThumbZoom: TLabel;
edtThumbZoom: TEdit;
updThumbZoom: TUpDown;
lblBottomGap: TLabel;
edtBottomGap: TEdit;
updBottomGap: TUpDown;
lblUpperGap: TLabel;
edtUpperGap: TEdit;
updUpperGap: TUpDown;
lblSideGap: TLabel;
edtSideGap: TEdit;
updSideGap: TUpDown;
lblTextMargin: TLabel;
edtTextMargin: TEdit;
updTextMargin: TUpDown;
lblVertBorder: TLabel;
edtVertBorder: TEdit;
updVertBorder: TUpDown;
lblHorizBorder: TLabel;
edtHorizBorder: TEdit;
updHorizBorder: TUpDown;
Label1: TLabel;
grpOtherSettings: TGroupBox;
lblTopText: TLabel;
lblInfoText: TLabel;
lblBottomText: TLabel;
chkSoftShadow: TCheckBox;
cmbTopText: TComboBox;
cmbInfoText: TComboBox;
cmbBottomText: TComboBox;
chkCenterThumbs: TCheckBox;
chkThumbnailBorder: TCheckBox;
edtTopWidth: TEdit;
updTopWidth: TUpDown;
edtInfoWidth: TEdit;
updInfoWidth: TUpDown;
edtBottomWidth: TEdit;
updBottomWidth: TUpDown;
lblTopWidth: TLabel;
lblInfoWidth: TLabel;
lblBottomWidth: TLabel;
lblWidthAuto: TLabel;
lblTextWidthAuto: TLabel;
lblTextWidth: TLabel;
edtTextWidth: TEdit;
updTextWidth: TUpDown;
ImageEnMView1: TImageEnFolderMView;
rdbShowLargeThumbs: TRadioButton;
rdbShowFileList: TRadioButton;
chkIconsOnly: TCheckBox;
chkExplorerThumbs: TCheckBox;
procedure btnOpenParentClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnSelectFolderClick(Sender: TObject);
procedure btnSetLayoutClick(Sender: TObject);
procedure chkPreviewClick(Sender: TObject);
procedure chkCenterThumbsClick(Sender: TObject);
procedure chkExplorerThumbsClick(Sender: TObject);
procedure chkIconsOnlyClick(Sender: TObject);
procedure chkSoftShadowClick(Sender: TObject);
procedure chkThumbnailBorderClick(Sender: TObject);
procedure cmbBottomTextChange(Sender: TObject);
procedure cmbFileTypesChange(Sender: TObject);
procedure cmbInfoTextChange(Sender: TObject);
procedure cmbTopTextChange(Sender: TObject);
procedure edtBottomWidthChange(Sender: TObject);
procedure edtInfoWidthChange(Sender: TObject);
procedure edtTopWidthChange(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ImageEnMView1FolderChanged(Sender: TObject);
procedure ImageEnMView1ImageSelect(Sender: TObject; idx: Integer);
procedure rdbShowColumnsClick(Sender: TObject);
procedure rdbShowDetailsClick(Sender: TObject);
procedure rdbShowFileListClick(Sender: TObject);
procedure rdbShowLargeThumbsClick(Sender: TObject);
procedure rdbShowThumbsClick(Sender: TObject);
procedure spnClippingChange(Sender: TObject);
procedure tmrUpdatePreviewTimer(Sender: TObject);
private
procedure UpdateSelection;
procedure InitializeControls;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R WindowsTheme.res}
procedure TForm1.btnOpenParentClick(Sender: TObject);
begin
ImageEnMView1.OpenParentFolder;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// NOTE: This demo uses a TImageEnFolderMView, but the style functionality is the same in TImageEnMView
// The folder that will be shown on start up
ImageEnMView1.DefaultFolder := iedfMyPictures;
// Quality of displayed thumbnails
ImageEnMView1.ThumbnailResampleFilter := rfNone;
ImageEnMView1.ThumbnailDisplayFilter := rfFastLinear;
// Size of thumbnail
ImageEnMView1.ThumbWidth := 130;
ImageEnMView1.ThumbHeight := 130;
// Gives best quality when loading files on demand
ImageEnMView1.StoreType := ietFastThumb;
// EXIF thumbnails can be faster, but quality cannot be guaranteed
ImageEnMView1.EnableLoadEXIFThumbnails := False;
// Always get Params so text columns can display file dimensions even if we are loading icons/Explorer thumbnails
ImageEnMView1.IOOptionsEx := ImageEnMView1.IOOptionsEx + [ ieixWantParams ];
// Initialize styles
rdbShowThumbs.checked := True;
end;
procedure TForm1.btnSelectFolderClick(Sender: TObject);
begin
ImageEnMView1.PromptForFolder;
end;
procedure TForm1.btnSetLayoutClick(Sender: TObject);
begin
ImageEnMView1.LockUpdate;
try
ImageEnMView1.Zoom := StrToIntDef(edtThumbZoom.Text , Trunc( ImageEnMView1.Zoom ));
ImageEnMView1.ThumbnailClipping := StrToIntDef(edtClipping.Text , ImageEnMView1.ThumbnailClipping );
ImageEnMView1.BottomGap := StrToIntDef(edtBottomGap.Text , ImageEnMView1.BottomGap );
ImageEnMView1.UpperGap := StrToIntDef(edtUpperGap.Text , ImageEnMView1.UpperGap );
ImageEnMView1.SideGap := StrToIntDef(edtSideGap.Text , ImageEnMView1.SideGap );
ImageEnMView1.TextMargin := StrToIntDef(edtTextMargin.Text , ImageEnMView1.TextMargin );
ImageEnMView1.VertBorder := StrToIntDef(edtVertBorder.Text , ImageEnMView1.VertBorder );
ImageEnMView1.HorizBorder := StrToIntDef(edtHorizBorder.Text , ImageEnMView1.HorizBorder );
ImageEnMView1.TextBlockWidth := StrToIntDef(edtTextWidth.Text , -1 );
ImageEnMView1.ThumbWidth := Trunc( StrToIntDef(edtThumbWidth.Text , ImageEnMView1.ThumbWidth ));
ImageEnMView1.ThumbHeight := Trunc( StrToIntDef(edtThumbHeight.Text , ImageEnMView1.ThumbHeight ));
btnSetLayout.Enabled := False;
finally
ImageEnMView1.UnlockUpdate;
end;
end;
procedure TForm1.chkPreviewClick(Sender: TObject);
begin
if chkPreview.checked then
ImageEnMView1.FolderInteract := ImageEnMView1.FolderInteract - [ieboLaunchImagesOnDblClick]
else
ImageEnMView1.FolderInteract := ImageEnMView1.FolderInteract + [ieboLaunchImagesOnDblClick];
UpdateSelection;
end;
procedure TForm1.chkCenterThumbsClick(Sender: TObject);
begin
if chkCenterThumbs.checked then
ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx - [ ietxCenterThumbnailColumn ]
else
ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx + [ ietxCenterThumbnailColumn ];
end;
procedure TForm1.chkExplorerThumbsClick(Sender: TObject);
begin
ImageEnMView1.EnableLoadExplorerThumbnails := chkExplorerThumbs.Checked;
ImageEnMView1.Update;
end;
procedure TForm1.chkIconsOnlyClick(Sender: TObject);
begin
if chkIconsOnly.Checked then
ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx + [ ietxOnlyShowIcons ]
else
ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx - [ ietxOnlyShowIcons ];
ImageEnMView1.Update;
end;
procedure TForm1.chkSoftShadowClick(Sender: TObject);
begin
ImageEnMView1.SoftShadow.Enabled := chkSoftShadow.checked;
ImageEnMView1.RefreshFileList;
end;
procedure TForm1.chkThumbnailBorderClick(Sender: TObject);
begin
if chkThumbnailBorder.Checked then
ImageEnMView1.ThumbnailsBorderWidth := 1
else
ImageEnMView1.ThumbnailsBorderWidth := 0;
end;
procedure TForm1.cmbBottomTextChange(Sender: TObject);
begin
ImageEnMView1.DefaultBottomText := TIEImageEnMViewDefaultText(cmbBottomText.ItemIndex);
end;
procedure TForm1.cmbFileTypesChange(Sender: TObject);
begin
ImageEnMView1.FileTypes := TIEFolderFileTypes(cmbFileTypes.ItemIndex);
end;
procedure TForm1.cmbInfoTextChange(Sender: TObject);
begin
ImageEnMView1.DefaultInfoText := TIEImageEnMViewDefaultText(cmbInfoText.ItemIndex);
end;
procedure TForm1.cmbTopTextChange(Sender: TObject);
begin
ImageEnMView1.DefaultTopText := TIEImageEnMViewDefaultText(cmbTopText.ItemIndex);
end;
procedure TForm1.edtBottomWidthChange(Sender: TObject);
begin
ImageEnMView1.TextColumnWidths[ iemtpBottom ] := StrToIntDef( edtBottomWidth.Text, -1 );
end;
procedure TForm1.edtInfoWidthChange(Sender: TObject);
begin
ImageEnMView1.TextColumnWidths[ iemtpInfo ] := StrToIntDef( edtInfoWidth.Text, -1 );
end;
procedure TForm1.edtTopWidthChange(Sender: TObject);
begin
ImageEnMView1.TextColumnWidths[ iemtpTop ] := StrToIntDef( edtTopWidth.Text, -1 );
end;
procedure TForm1.FormShow(Sender: TObject);
begin
InitializeControls;
end;
procedure TForm1.ImageEnMView1FolderChanged(Sender: TObject);
begin
edtFolder.Text := ImageEnMView1.Folder;
btnOpenParent.Enabled := ImageEnMView1.CanOpenParentFolder;
end;
procedure TForm1.ImageEnMView1ImageSelect(Sender: TObject; idx: Integer);
begin
UpdateSelection;
end;
procedure TForm1.InitializeControls;
var
bTextIsSeparated, bTextInOwnColumns: Boolean;
begin
ImageEnMView1.SortOrder := iesbFilenameWithoutPath;
cmbBottomText.ItemIndex := Ord( ImageEnMView1.DefaultBottomText );
cmbInfoText.ItemIndex := Ord( ImageEnMView1.DefaultInfoText );
cmbTopText.ItemIndex := Ord( ImageEnMView1.DefaultTopText );
cmbFileTypes.ItemIndex := Ord( ImageEnMView1.FileTypes );
edtThumbWidth.Text := IntToStr( Trunc( ImageEnMView1.ThumbWidth ));
edtThumbHeight.Text := IntToStr( Trunc( ImageEnMView1.ThumbHeight ));
edtThumbZoom.Text := IntToStr( Trunc( ImageEnMView1.Zoom ));
edtBottomGap.Text := IntToStr( ImageEnMView1.BottomGap );
edtUpperGap.Text := IntToStr( ImageEnMView1.UpperGap );
edtSideGap.Text := IntToStr( ImageEnMView1.SideGap );
edtTextMargin.Text := IntToStr( ImageEnMView1.TextMargin );
edtVertBorder.Text := IntToStr( ImageEnMView1.VertBorder );
edtHorizBorder.Text := IntToStr( ImageEnMView1.HorizBorder );
edtClipping.Text := IntToStr(ImageEnMView1.ThumbnailClipping);
chkCenterThumbs.checked := ietxCenterThumbnailColumn in ImageEnMView1.ThumbnailOptionsEx;
chkThumbnailBorder.Checked := ImageEnMView1.ThumbnailsBorderWidth > 0;
chkIconsOnly.Checked := ietxOnlyShowIcons in ImageEnMView1.ThumbnailOptionsEx;
bTextIsSeparated := ImageEnMView1.Style in [ iemsFlatAndWide, iemsColumns ];
lblTextWidth .Enabled := bTextIsSeparated;
edtTextWidth .Enabled := bTextIsSeparated;
updTextWidth .Enabled := bTextIsSeparated;
lblTextWidthAuto .Enabled := bTextIsSeparated;
edtTextWidth.Text := IntToStr( ImageEnMView1.TextBlockWidth );
bTextInOwnColumns := ImageEnMView1.Style in [ iemsColumns ];
lblTopWidth .Enabled := bTextInOwnColumns;
edtTopWidth .Enabled := bTextInOwnColumns;
updTopWidth .Enabled := bTextInOwnColumns;
lblInfoWidth .Enabled := bTextInOwnColumns;
edtInfoWidth .Enabled := bTextInOwnColumns;
updInfoWidth .Enabled := bTextInOwnColumns;
lblBottomWidth .Enabled := bTextInOwnColumns;
edtBottomWidth .Enabled := bTextInOwnColumns;
updBottomWidth .Enabled := bTextInOwnColumns;
lblWidthAuto .Enabled := bTextInOwnColumns;
edtTopWidth.Text := IntToStr( ImageEnMView1.TextColumnWidths[ iemtpTop ] );
edtInfoWidth.Text := IntToStr( ImageEnMView1.TextColumnWidths[ iemtpInfo ] );
edtBottomWidth.Text := IntToStr( ImageEnMView1.TextColumnWidths[ iemtpBottom ] );
btnSetLayout.Enabled := False;
end;
procedure TForm1.rdbShowThumbsClick(Sender: TObject);
begin
{
Note: A quick way to do all of this is:
ImageEnMView1.SetStyleEx( iemsFlat, iedtNone, iedtNone, iedtFileName );
}
ImageEnMView1.LockUpdate;
try
ImageEnMView1.Style := iemsFlat;
ImageEnMView1.Zoom := 100;
ImageEnMView1.TextMargin := 4;
ImageEnMView1.TopTextFont.Style := [];
ImageEnMView1.DefaultTopText := iedtNone;
ImageEnMView1.DefaultInfoText := iedtNone;
ImageEnMView1.DefaultBottomText := iedtFileName;
ImageEnMView1.ThumbnailsBorderWidth := 1;
ImageEnMView1.VertBorder := 8;
ImageEnMView1.HorizBorder := 8;
ImageEnMView1.BottomGap := 4;
ImageEnMView1.UpperGap := 4;
ImageEnMView1.SideGap := 4;
ImageEnMView1.GridWidth := -1;
ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx - [ ietxOnlyShowIcons ];
finally
ImageEnMView1.UnlockUpdate;
InitializeControls;
end;
end;
procedure TForm1.rdbShowDetailsClick(Sender: TObject);
begin
{
Note: A quick way to do all of this is:
ImageEnMView1.SetStyleEx( iemsFlatAndWide, iedtFileName, iedtFilePath, iedtImageDimAndSize );
}
ImageEnMView1.LockUpdate;
try
ImageEnMView1.Style := iemsFlatAndWide;
ImageEnMView1.Zoom := 50;
ImageEnMView1.TextMargin := 4;
ImageEnMView1.TextBlockWidth := 300;
ImageEnMView1.TopTextFont.Style := [ fsBold ];
ImageEnMView1.DefaultTopText := iedtFileName;
ImageEnMView1.DefaultInfoText := iedtFilePath;
ImageEnMView1.DefaultBottomText := iedtImageDimAndSize;
ImageEnMView1.ThumbnailsBorderWidth := 1;
ImageEnMView1.VertBorder := 8;
ImageEnMView1.HorizBorder := 8;
ImageEnMView1.BottomGap := 4;
ImageEnMView1.UpperGap := 4;
ImageEnMView1.SideGap := 4;
ImageEnMView1.GridWidth := -1;
ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx - [ ietxOnlyShowIcons ];
finally
ImageEnMView1.UnlockUpdate;
InitializeControls;
end;
end;
procedure TForm1.rdbShowColumnsClick(Sender: TObject);
begin
{
Note: A quick way to do all of this is:
ImageEnMView1.SetStyleEx( iemsColumns, iedtFileName, iedtImageDimAndSize, iedtFileCreateDate );
}
ImageEnMView1.LockUpdate;
try
ImageEnMView1.Style := iemsColumns;
ImageEnMView1.Zoom := 17;
ImageEnMView1.TextMargin := 6;
ImageEnMView1.TextBlockWidth := -1;
ImageEnMView1.TopTextFont.Style := [];
ImageEnMView1.DefaultTopText := iedtFileName;
ImageEnMView1.DefaultInfoText := iedtImageDimAndSize;
ImageEnMView1.DefaultBottomText := iedtFileCreateDate;
ImageEnMView1.ThumbnailsBorderWidth := 0;
ImageEnMView1.VertBorder := 0;
ImageEnMView1.HorizBorder := 0;
ImageEnMView1.BottomGap := 2;
ImageEnMView1.UpperGap := 2;
ImageEnMView1.SideGap := 2;
ImageEnMView1.GridWidth := -1;
ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx + [ ietxOnlyShowIcons ];
finally
ImageEnMView1.UnlockUpdate;
InitializeControls;
end;
end;
procedure TForm1.rdbShowFileListClick(Sender: TObject);
begin
{
Note: A quick way to do all of this is:
ImageEnMView1.GridWidth := 1
ImageEnMView1.SetStyleEx( iemsFlatAndWide, iedtNone, iedtNone, iedtFileName, -24 );
}
ImageEnMView1.LockUpdate;
try
ImageEnMView1.Style := iemsFlatAndWide;
ImageEnMView1.Zoom := 17;
ImageEnMView1.TextMargin := 4;
ImageEnMView1.TextBlockWidth := 300;
ImageEnMView1.TopTextFont.Style := [ fsBold ];
ImageEnMView1.DefaultTopText := iedtNone;
ImageEnMView1.DefaultInfoText := iedtNone;
ImageEnMView1.DefaultBottomText := iedtFileName;
ImageEnMView1.ThumbnailsBorderWidth := 0;
ImageEnMView1.VertBorder := 0;
ImageEnMView1.HorizBorder := 0;
ImageEnMView1.BottomGap := 2;
ImageEnMView1.UpperGap := 2;
ImageEnMView1.SideGap := 2;
ImageEnMView1.GridWidth := 1;
ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx + [ ietxOnlyShowIcons ];
finally
ImageEnMView1.UnlockUpdate;
InitializeControls;
end;
end;
procedure TForm1.rdbShowLargeThumbsClick(Sender: TObject);
begin
{
Note: A quick way to do all of this is:
ImageEnMView1.SetStyleEx( iemsFlat, iedtNone, iedtNone, iedtFileName, 200 );
}
ImageEnMView1.LockUpdate;
try
ImageEnMView1.Style := iemsFlat;
ImageEnMView1.Zoom := 200;
ImageEnMView1.TextMargin := 4;
ImageEnMView1.TopTextFont.Style := [];
ImageEnMView1.DefaultTopText := iedtNone;
ImageEnMView1.DefaultInfoText := iedtNone;
ImageEnMView1.DefaultBottomText := iedtFileName;
ImageEnMView1.ThumbnailsBorderWidth := 1;
ImageEnMView1.VertBorder := 8;
ImageEnMView1.HorizBorder := 8;
ImageEnMView1.BottomGap := 4;
ImageEnMView1.UpperGap := 4;
ImageEnMView1.SideGap := 4;
ImageEnMView1.GridWidth := -1;
ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx - [ ietxOnlyShowIcons ];
finally
ImageEnMView1.UnlockUpdate;
InitializeControls;
end;
end;
procedure TForm1.spnClippingChange(Sender: TObject);
begin
btnSetLayout.Enabled := True;
end;
procedure TForm1.tmrUpdatePreviewTimer(Sender: TObject);
begin
tmrUpdatePreview.Enabled := False;
if chkPreview.checked = False then
ImageEnView1.Blank
else
if ImageEnView1.IO.Params.Filename <> ImageEnMView1.SelectedFilename then
begin
if ImageEnMView1.SelectedFilename = '' then
ImageEnView1.Blank
else
ImageEnView1.IO.LoadFromFile(ImageEnMView1.SelectedFilename);
end;
end;
procedure TForm1.UpdateSelection;
begin
tmrUpdatePreview.Enabled := False;
tmrUpdatePreview.Enabled := True;
end;
end.