ImageEn, unit iesettings

TIEGlobalSettings.OnToolbarButtonExecute

TIEGlobalSettings.OnToolbarButtonExecute


Declaration

property OnToolbarButtonExecute: TIEActionEvent;


Description

Occurs whenever the user clicks a button of an in-built toolbar or popup menu. The default behaviour can be overriden by setting Handled to true.
It also handles the clicking of custom buttons and popup menu items.

Parameter Description
Sender The affected action or clicked control. See details below
ButtonID The ID of the clicked button
Handled When False the default execute behaviour occurs. Set to true to apply your own execution code

The Sender type will be one of the following:
- TToolButton for custom buttons
- TMenuItem for custom popup menu items
- TComboBox showing a shape (IELayerShapeBox_Button_ID)
- TPaintBox for colors, fonts, sizes, etc (IELayerFontColorSelect_Button_ID, IELayerFontBox_Button_ID, IELayerFillBox_Button_ID, IELayerBorderSizeBox_Button_ID, IELayerBorderColorBox_Button_ID, IEViewToolBrushSizeBox_Button_ID, IEViewToolColor_Button_ID, IEViewZoomBox_Button_ID, IERichEditFontColor_Button_ID, IERichEditFontBox_Button_ID)
- TAction from the ImageEn Actions Classes (all other types)

Note: Ensure you reset this event before destroying your form, e.g. IEGlobalSettings().OnAddToolbarButtonExecute := nil;


Example

IEGlobalSettings().OnToolbarButtonExecute   := Form1CustomButtonExecute;
IEGlobalSettings().OnToolbarButtonUpdate    := Form1CustomButtonUpdate;
IEGlobalSettings().OnAddCustomToolbarButton := Form1AddCustomToolbarButton;

// Add a custom open button, and two other buttons to the right side of the toolbar
const
  MY_HOME_BUTTON_ID       = IECustom_Button_ID + 1;
  MY_IMAGEINFO_BUTTON_ID  = IECustom_Button_ID + 2;
  MY_LOADRECENT_BUTTON_ID = IECustom_Button_ID + 3;

procedure TMainForm.Form1CustomButtonExecute(Sender: TObject; ButtonID: Integer; var Handled: Boolean);
begin
  // Button Clicked
  case ButtonID of
    MY_HOME_BUTTON_ID       : ShellExecute(Handle, nil, PChar('http://www.imageen.com'), nil,  nil, SW_SHOWNORMAL);
    MY_IMAGEINFO_BUTTON_ID  : ShowMessage( Format( 'Image Size: %d x %d', [ ImageEnView1.IEBitmap.Width, ImageEnView1.IEBitmap.Height ]));
    MY_LOADRECENT_BUTTON_ID : ImageEnView1.IO.LoadFromFile( fLastUsedFile );
  end;
end;

procedure TMainForm.Form1CustomButtonUpdate(Sender: TObject; ButtonID:
    Integer; var Handled: Boolean);
begin
  // Set status of button
  case ButtonID of
    MY_IMAGEINFO_BUTTON_ID  : TControl( Sender ).Enabled := not ImageEnView1.IsEmpty;
    MY_LOADRECENT_BUTTON_ID : TControl( Sender ).Enabled := fLastUsedFile <> '';
  end;
end;

procedure TMainForm.Form1AddCustomToolbarButton(Sender: TObject;
    BeforeButtonID: Integer; var AddButton: Boolean; var BtnID: Integer; var
    BtnCaption, BtnHint: string; var BtnImgID: Integer);
begin
  if BeforeButtonID = -1 then  // Right-side of toolbar
  begin
    AddButton := True;

    BtnID      := MY_HOME_BUTTON_ID;
    BtnCaption := 'Home';       // Not usually used
    BtnHint    := 'Visit www.imageEn.com';
    BtnImgID   := ITBRES_HOMEOUTLINE_24;
  end
  else
  if BeforeButtonID = MY_HOME_BUTTON_ID then  // To Left of MY_HOME_BUTTON_ID
  begin
    AddButton := True;

    BtnID      := MY_IMAGEINFO_BUTTON_ID;
    BtnCaption := 'About';       // Not usually used
    BtnHint    := 'About this Image';
    BtnImgID   := ITBRES_INFORMATIONOUTLINE_24;
  end
  else
  if BeforeButtonID = IEViewSave_Button_ID then  // To Left of "Save" button  (after open)
  begin
    AddButton := True;

    BtnID      := MY_LOADRECENT_BUTTON_ID;
    BtnCaption := 'Open Last File';       // Not usually used
    BtnHint    := 'Open Last File';
    BtnImgID   := ITBRES_FOLDERIMAGE_24;
  end;
end;


See Also

- OnToolbarButtonUpdate
- OnActionExecute