Solved

Handling key presses on a TEdit

Posted on 2008-10-25
5
216 Views
Last Modified: 2013-11-23
Hi all,

Just a question I can't figure out.

I've got a TEdit which must handle the - and + of the numeric keypad, but not the - and + of the alphanumeri part of the keyboard.
When I put a break point on the OnKeyDown event I see that it makes a difference on the numeric and alphanumeric part of the - sign (#189 and #109).

But how can I code that when the subtract key is pressed on the numeric keypad that it will not put the - in the TEdit box and will do when the alphanumeric - is pressed?

Thanks in advance,

JeePeeTee
0
Comment
Question by:JeePeeTee
  • 3
  • 2
5 Comments
 
LVL 28

Accepted Solution

by:
2266180 earned 250 total points
ID: 22802915
something like this?
unit Unit1;
 

interface
 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;
 

type

  TForm1 = class(TForm)

    Edit1: TEdit;

    procedure Edit1KeyPress(Sender: TObject; var Key: Char);

    procedure Edit1KeyDown(Sender: TObject; var Key: Word;

      Shift: TShiftState);

  private

    { Private declarations }

    pressed:word;

  public

    { Public declarations }

  end;
 

var

  Form1: TForm1;
 

implementation
 

{$R *.dfm}
 

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

  if (key='-') and (pressed=109) then

    key:=#0;

end;
 

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;

  Shift: TShiftState);

begin

  pressed:=key;

end;
 

end.

Open in new window

0
 
LVL 4

Author Comment

by:JeePeeTee
ID: 22803034
Thanks,

Kinda weird that you can't do it without declaring a pricate symbol.
But ah, well, it works!

0
 
LVL 4

Author Closing Comment

by:JeePeeTee
ID: 31509932
It works, though it's weird that it must be done with a private symbol.
0
 
LVL 28

Expert Comment

by:2266180
ID: 22803073
Why a B grade? see grading tips here: http://www.experts-exchange.com/help.jsp#hi403
0
 
LVL 4

Author Comment

by:JeePeeTee
ID: 22812682
It's a B-grade because the solution is good, but not excellent. Like I mentioned, the solution works, but I think it's kinda weird that I need a private symbol to pass trhough two seprate OnKey events.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Run video youtube webbrowse 10 57
how to send memory stream from ics Client To ics server ? 11 79
control image tags in a string ? 12 110
Convert MS Word document to a PDF file 9 60
The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

914 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now