[Lazarus] Platform dependent modifier for common shortcut-keys?

Hans-Peter Diettrich DrDiettrich1 at aol.com
Sat Oct 8 19:14:58 CEST 2011


Bart schrieb:

> This is a chunk form a proposed patch for TMaskEdit:
> 
>  procedure TCustomMaskEdit.KeyDown(var Key: Word; Shift: TShiftState);
> +const
> +  ssModifier = {$if defined(darwin) or defined(macos)} ssMeta {$else}
> ssCtrl {$endif};
>  begin
>    Inherited KeyDown(Key, Shift);
>    // Not masked -> old procedure
> @@ -1662,7 +1664,7 @@
>        begin//Cut
>          CutToClipBoard;
>        end
> -      else if (Shift = [ssCtrl]) then
> +      else if (Shift = [ssModifier]) then
>        begin//Clear
>          DeleteSelected;
>        end
> 
> This is the way I would see it being helpful for cross platform code
> for built-in key shortcuts.

You can do it this way, ignoring any platform standards. But this is not 
what I expect from a cross-platform library or component.


> StandardActions then could benefit from such a ssModifier constant as well.
> 
> Another approach might be to have a widgetset function like:
> 
> function KeyCombo_IsCut(const Key: Word; const Shift: TShiftState): Boolean
> 
> or something like:
> 
> type
>   TCommonShortCut = (tcsUnknown,tcsCut, tcsPaste, tcsCopy, tcsBof, tcsEof);
> 
> function KeyComboToCommonShortcut(const Key: Word; const Shift:
> TShiftState): TCommonShortCut;
> begin
>   //default to tcsUnKnown;
>   Result := tcsUnKnown;
>   ...
> end;

This comes much closer to my expectations :-)

DoDi





More information about the Lazarus mailing list