TImageEnView 10.2.0:
MouseInteractGeneral.miSelect and MouseInteractLayers.mlMoveLayers are still MUTUALLY EXCLUSIVE at run-time! (In previous versions they were mutually exclusive even at design-time, i.e. they erased each other at design-time).
This is annoying, as it forces the user to manually switch between modes where he has to explicitly select a mode to EITHER make a selection with the mouse OR to move a selected layer with the mouse.
To make this process of mode-switching somewhat automatic, I have implemented this workaround in my app:
procedure TformMain.imgMainLayerNotify(Sender: TObject; layer: Integer; event: TIELayerEvent);
begin
if event = ielLeftClicked then
begin
if layer = 0 then // user has left-clicked the image-background
begin
imgMain.MouseInteractGeneral := [miSelect];
end
else // user has left-clicked a layer
begin
imgMain.MouseInteractGeneral := [];
imgMain.MouseInteractLayers := [mlMoveLayers,mlResizeLayers,mlRotateLayers];
end;
end;
end;
But since the LayerNotify event of ielLeftClicked is not instantaneous (it occurs at mouse-button-UP), this is a MULTI-STEP process: The user has to first click either the image-background or a layer, then release the mouse button, and only then he can make a selection or move the layer respectively. It would be better if this mode-switching would occur internally and automatically inside TImageEnView.
What do you think?