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