Thanks Greg
that's just what I wanted.
Mark

Greg Nixon wrote:

> Take out your else contition. The control will hit the KeyDown first but if
> you take out the else condition you will get the showmessage('Control
> Enter') as you are pressing two keys - (Two keydown events)
>
> -----Original Message-----
> From: Mark Howard <[EMAIL PROTECTED]>
> To: Multiple recipients of list delphi <[EMAIL PROTECTED]>
> Date: Monday, 29 March 1999 22:00
> Subject: Re: [DUG]: Trapping and using a CTRL-ENTER
>
> Thanks to those who responded to this question.  I have tried those that
> APPEAR
> to be the most straightforward.
>
> Greg I have tried the following code, based on your suggestion.
>
> procedure TMainForm.DocEntryTrMesEditKeyDown(Sender: TObject;
>   var Key: Word; Shift: TShiftState);
> begin
> if ssCtrl in Shift then
>       begin
>        if key = vk_return then showmessage('Control Enter')
>        else
>        ShowMessage('No Go')
>        end;
> end;
>
> What I get, though, is a No Go as soon as the Control key is pressed, before
> I
> press Enter.
> What have I missed please.
>
> Mark
>
> Greg Nixon wrote:
>
> > // The Datasource is the controls datasource //
> > ShortCutCheckKeyDown(Key, Shift, Datasource);
> >
> > // Add this procedure to a unit in your library //
> >
> > Procedure ShortCutCheckKeyDown(var Key: Word;
> >   var Shift: TShiftState; DbLink: TDatasource);
> > begin
> >    {If not connected to a database don't try anything
> >     or you will get an AV}
> >    If DbLink = nil then exit;
> >    If ssctrl in Shift then begin
> >       If (dblink.state in [dsInsert, dsedit]) then begin
> >           If key = vk_return then begin
> >             dblink.dataset.post;
> >              Key := 0;
> >              Shift := [];
> >           end;
> >       end;
> >    end;
> > end;
> >
> > -----Original Message-----
> > From: Mark Howard <[EMAIL PROTECTED]>
> > To: Multiple recipients of list delphi <[EMAIL PROTECTED]>
> > Date: Sunday, 28 March 1999 20:00
> > Subject: [DUG]: Trapping and using a CTRL-ENTER
> >
> > Hi guys
> > A simple question.
> >
> > In variety of controls (StringGrid, ComboBox, EditBox) I want to be able
> > to detect if the user has pressed a CTRL-ENTER combination.
> > If he has, I want to invoke the Save procedure. If  CTRL-ENTER is NOT
> > pressed, the control should just handle the key-press as it usually
> > does.
> > This is to save the user having to hunt for the mouse and the SAVE
> > button, if they prefer.
> >
> > Can someone please give me a short example of how you would detect and
> > use this, I can't find any examples of the use of OnKeyDown in the
> > documentation.
> > eg (in pseudo code) an OnKeyDown event:
> > if (Key = Chr(13) and ShiftState  = ssCtrl) then SaveStuff
> >
> > In a similar vein - is it possible to detect the pressing of TAB before
> > it does what it does, ie moves focus to the next control?
> >
> > --------------------------------------------------------------------------
> -
> >     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> >                   Website: http://www.delphi.org.nz
> >
> > --------------------------------------------------------------------------
> -
> >     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> >                   Website: http://www.delphi.org.nz
>
> ---------------------------------------------------------------------------
>     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz
>
> ---------------------------------------------------------------------------
>     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz



---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz

Reply via email to