ImageEn, unit imageenview |
|
TImageEnView.ShowButtons
Declaration
property ShowButtons: TIEVButtons;
Description
Display Previous and/or Next buttons on the sides of the control (white chevrons).
Hovering over the left/right of the image will show a hint. Clicking will call
OnButtonClick or perform a standard function.
Note:
◼The hover/clickable button area is the full height of the control, but the width of the
button and
offset◼Use
OnButtonState to specify an enabled/disabled state
◼You can use
OnButtonClick to handle the click. If
OnButtonClick is not specified, a default action will occur depending on the
button type◼Specify the button color and size using
ImageEnView1.ButtonParams◼To show buttons only when hovering over the click area, enable
ImageEnView1.ButtonParams.OnlyOnHover◼Hover hints can be disabled using
EnableInteractionHints◼iebtZoomIn and iebtZoomOut do not display at the same time. If both are specified, current zoom will determine which is shown
Default: [] (No buttons)
Keyboard Shortcuts
If
KeyboardShortcuts is enabled, the following shortcuts are supported:
Shortcut | Description |
PageUp | Same effect as clicking iebtPrevious |
PageDown | Same effect as clicking iebtNext |
Home | Same effect as clicking iebtPrevious holding the Shift key |
End | Same effect as clicking iebtNext holding the Shift key |
| Demos\Multi\MViewPreview\MViewPreview.dpr |
| Demos\Multi\MView_AttachedViewer\MViewPreview.dpr |
| Demos\InputOutput\IEViewMulti\IEViewMulti.dpr |
// EXAMPLE 1: Show either Zoom In or Zoom Out depending on which is most relevant
ImageEnView1.ShowButtons := [ iebtZoomIn, iebtZoomOut ];
// EXAMPLE 2: Attach a TImageEnView to a TImageEnFolderMView and allow navigation by buttons on the TImageEnView and spinning the mouse wheel
IEFolderMView1.AttachedImageEnView := ImageEnView1;
ImageEnView1.ShowButtons := [ iebtPrevious, iebtNext ];
ImageEnMView1.MouseWheelParams.Action := iemwNavigate;
ImageEnView1.MouseWheelParams.Action := iemwNavigate;
// EXAMPLE 3: Using buttons to navigate images in a TImageEnMView
// Select event of our TImageEnMView
procedure TForm1.ImageEnMView1ImageSelect(Sender: TObject; idx: Integer);
begin
ImageEnView1.LockUpdate();
// Show either Zoom In or Zoom Out depending on which is most relevant
ImageEnView1.ShowButtons := [ iebtZoomIn, iebtZoomOut ];
// Allow navigation
ImageEnView1.ShowButtons := ImageEnView1.ShowButtons + [ iebtPrevious, iebtNext ];
// Load Image
if ImageEnMView1.SelectedFilename <> '' then
ImageEnView1.IO.LoadFromFile( ImageEnMView1.SelectedFilename )
else
ImageEnView1.Blank;
ImageEnView1.Fit( False );
ImageEnView1.UnlockUpdate();
end;
// OnButtonClick event of our TImageEnView
procedure TForm1.ImageEnView1ButtonClick(Sender: TObject; Button: TIEVButton;
MouseButton: TMouseButton; Shift: TShiftState; var Handled: Boolean);
begin
case Button of
iebtPrevious : begin
if ssShift in Shift then
ImageEnMView1.Seek( ieioSeekFirst )
else
ImageEnMView1.Seek( ieioSeekPrior );
ImageEnMView1ImageSelect(nil, 0); // Update preview and buttons
end;
iebtNext : begin
if ssShift in Shift then
ImageEnMView1.Seek( ieioSeekLast )
else
ImageEnMView1.Seek( ieioSeekNext );
ImageEnMView1ImageSelect(nil, 0); // Update preview and buttons
end;
iebtZoomIn : begin
if ImageEnView1.Zoom < ImageEnView1.GetIdealZoom() then
ImageEnView1.Zoom := ImageEnView1.GetIdealZoom()
else
if ImageEnView1.Zoom < 100 then
ImageEnView1.Zoom := 100;
end;
iebtZoomOut : begin
if ImageEnView1.Zoom > ImageEnView1.GetIdealZoom() then
ImageEnView1.Zoom := ImageEnView1.GetIdealZoom()
else
if ImageEnView1.Zoom > 100 then
ImageEnView1.Zoom := 100;
end;
end;
end;
// OnButtonState event of our TImageEnView
procedure TImageEnMView.ImageEnView1ButtonState(Sender: TObject; Button: TIEVButton;
var Visible: Boolean;
var Enabled: Boolean);
begin
case Button of
iebtPrevious : Enabled := ImageEnMView1.SelectedImage > 0;
iebtNext : Enabled := ImageEnMView1.SelectedImage < ImageEnMView1.ImageCount - 1;
end;
end;
// EXAMPLE 3: Using buttons to navigate pages of a multi-frame image, such as TIFF or GIF
procedure TMainForm.btnLoadClick(Sender: TObject);
begin
if OpenImageEnDialog1.Execute then
begin
ImageEnView1.IO.Params.ImageIndex := 0;
ImageEnView1.IO.LoadFromFile( OpenImageEnDialog1.FileName );
UpdateStatus();
end;
end;
procedure TMainForm.UpdateStatus();
var
havePrev, haveNext: Boolean;
begin
ImageEnView1.ButtonParams.Color := clSilver;
ImageEnView1.ButtonParams.Size := 30;
havePrev := ( ImageEnView1.IO.Params.Filename <> '' ) and ( ImageEnView1.IO.Params.ImageIndex > 0 );
haveNext := ( ImageEnView1.IO.Params.Filename <> '' ) and ( ImageEnView1.IO.Params.ImageIndex < ImageEnView1.IO.Params.ImageCount - 1 );
if havePrev and haveNext then
ImageEnView1.ShowButtons := [ iebtPrevious, iebtNext ]
else
if havePrev then
ImageEnView1.ShowButtons := [ iebtPrevious ]
else
if haveNext then
ImageEnView1.ShowButtons := [ iebtNext ]
else
ImageEnView1.ShowButtons := [];
end;
procedure TMainForm.ImageEnView1ButtonClick(Sender: TObject; Button: TIEVButton;
MouseButton: TMouseButton; Shift: TShiftState; var Handled: Boolean);
begin
Handled := False; // Let ImageEnView handle the navigation and zooming
UpdateStatus();
end;