Форум: "Основная";
Текущий архив: 2003.02.27;
Скачать: [xml.tar.bz2];
ВнизПри нажатии в 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c