Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.27;
Скачать: CL | DM;

Вниз

При нажатии в Edit клавиши Enter раздается beep.   Найти похожие ветки 

 
R2D2   (2003-02-16 23:29) [0]

Как это можно убрать? И еще вопрос какой код у клавиши Tab? (или как можно сделать так, чтобы при нажатии на Enter фокус перескакивал на следующий элемент управления)


 
zolotov   (2003-02-16 23:45) [1]

Как убрать Beep не знаю.
Код у клавиши Tab:
Десятиричное число - 9 Шестнадцатиричное - $9 Символическое имя - VK_TAB

При нажатии на Enter:

Он в событии OnKeyDown пишешь
if Key=VK_Return then
Edit2.SteFocus;


 
R2D2   (2003-02-16 23:57) [2]

Спасибо, тем не менее видимо я вопрос задал не очень точно - есть ли способ организовать переход на следующий ( по TabOrder) элемент формы?


 
zolotov   (2003-02-17 00:02) [3]

А какая разница. Просто прописать вручную на какой элемент нужно поставить фокус да и все. Нужный(следующий элемент).SetFocus


 
777 ©   (2003-02-17 00:08) [4]

If Key=VK_Return then
SelectNext((Sender as TWinControl),true,false);


 
wicked ©   (2003-02-17 00:11) [5]

ужасть....

в событии формы OnKeyUp(имхо немного более подходит) пишем

case Key of
VK_RETURN: Perform(WM_NEXTDLGCTL, 0, 0);
end;

разумеется, что свойство формы KeyPreview должно быть true....


 
R2D2   (2003-02-17 00:11) [6]

Задача - создать "универсальную" процедуру (без привязки к имени)
Вот что пока наработал:

procedure TMain_Form.CheckKeyExecute(Sender: TObject; var Key: Char);
begin
//ограничители вводимой инфы
if not (Key in ["0".."9",".","-","+","E","e",#8,#13]) then
begin
beep;
key:=#0;
end;
//Если нажали Enter
if Key=#13 then
begin
тут нужно прописать либо нажатие Tab, либо переход на
следующий элемент(просто Editов тьма - для каждого писать свое
гиморно
end;
end;


 
R2D2   (2003-02-17 00:15) [7]

777>>> Курсор пропадает неизвестно куда (в следующем по TabOrder Edit"е курсор не появляется, хотя из первого пропадает):))


 
R2D2   (2003-02-17 00:22) [8]

Пасибо огромное:
SelectNext((Sender as TWinControl),true, true);

Единственное что огорчает - этот beep - хз - может из-за XP.
Кому не сложно - создайте форму с одним Edit"ом и нажмите в нем Enter - будет beep или нет?


 
MAN-In-RED ©   (2003-02-17 00:37) [9]

Нужно просто написать такой код:

if Key=#13 then
Key := 0;


И при нажатии на Enter "бипа" небудет...


 
R2D2   (2003-02-17 00:51) [10]

MAN-In-RED - пасиба, этой мелочи как раз и не хватало :)

Вот финал - может кому пригодится для создания своего MaskEdit"а так сказать (для занесения чисел):

procedure TMain_Form.CheckKeyExecute(Sender: TObject; var Key: Char);
begin
if not (Key in ["0".."9",".","-","+","E","e",#8,#13]) then
begin
beep; //обругиваем юзера бипом :)
Key:=#0;
end;
if Key=#13 then //переходим на следующий элемент
begin
Key:=#0;
SelectNext((Sender as TWinControl),true,true);
end;
end;

А вот проверочка на корректность введенного числа:

procedure TMain_Form.CheckInputExecute(Sender: TObject);
var
Chislo:double;
Code:integer;
begin
val((Sender as TEdit).Text,Chislo,Code);
if Code<>0 then
begin
beep;
ShowMessage("?????? ?????!");
(Sender as TEdit).SetFocus;
end;
end;


 
smok_er   (2003-02-17 10:19) [11]

попробуй занести что-нибудь в буфер и нажми ctrl + v


 
Roma ©   (2003-02-17 10:44) [12]

>R2D2 (17.02.03 00:51)

И вот это бы не помешало:

procedure TMain_Form.CheckInputExecute(Sender: TObject);
var
Chislo:double;
Code:integer;
begin
{$I-}
val((Sender as TEdit).Text,Chislo,Code);
{$I+}
if Code<>0 then
begin
beep;
ShowMessage("?????? ?????!");
(Sender as TEdit).SetFocus;
end;
end;




Страницы: 1 вся ветка

Текущий архив: 2003.02.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
14-87636
ev
2003-02-10 16:32
2003.02.27
kylix 3 и radhat 8


1-87431
Дима2003
2003-02-17 10:11
2003.02.27
iif ?


3-87320
bytebutcher
2003-02-10 16:59
2003.02.27
Как получить список доступных MS SQL серверов?


6-87605
kolerkow
2003-01-09 23:50
2003.02.27
e-mail


7-87718
AlexNord
2002-12-28 19:30
2003.02.27
TTimer.OnTimer