powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Переход к следующему элементу формы из SpinEdit через Enter
16 сообщений из 16, страница 1 из 1
Переход к следующему элементу формы из SpinEdit через Enter
    #36245897
Kansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на форме для перехода на следующий элемент формы используется такая процедурка:
procedure TMainForm.Key(var Msg: TWMKey);
begin
if not (ActiveControl is TButton) then
if Msg.Charcode = 13 then Msg.Charcode := 9;
inherited;
end;

Так вот при нажатии на Enter в любом элементе, кроме Spinedit переход на следующий элемент осуществляются успешно, но когда курсор попадает на Spinedit выполнение даже не передается в эту процедуру((
более того выполнение не поступает и в SpinEdit..KeyPress

с любым из значений MainForm.KeyPreView таже история(

куда глядеть подскажите..
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #36245948
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kansky, не работает KeyPress - используй KeyUp/Down
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #36245985
Kansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barmaley57Kansky, не работает KeyPress - используй KeyUp/Down

это SpinEdit при нажатии стрелок вверх/вниз числовое значение в нем увеличивается/уменьшается
и эту функция должна остаться)
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #36246021
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KanskyBarmaley57Kansky, не работает KeyPress - используй KeyUp/Down

это SpinEdit при нажатии стрелок вверх/вниз числовое значение в нем увеличивается/уменьшается
и эту функция должна остаться)

И ?
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #36246024
Leo Pevzner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KanskyBarmaley57Kansky, не работает KeyPress - используй KeyUp/Down

это SpinEdit при нажатии стрелок вверх/вниз числовое значение в нем увеличивается/уменьшается
и эту функция должна остаться)

спасибо. поржал.

видимо Up/Down имелось в виду движение не в плоскости клавиатуры, а в плоскости, перпендикулярной плоскости клавиатуры. т.е. события нажатия и отпускания кнопки.
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #36246035
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kansky,
вот это
Код: plaintext
1.
 procedure  TMainForm.Key( var  Msg: TWMKey);
на какое сообщение вешаешь?
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #36246056
Kansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barmaley57,

спасибо)
это ньюанс SpinEditов?
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #36246066
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KanskyBarmaley57,

спасибо)
это ньюанс SpinEditов?

Никогда не сталкивался :)
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #36246073
Kansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leo Pevzner,

не за что)
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #36246074
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. кстати, нюанс пишется без мягкого знака :)
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #36246110
Kansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barmaley57,

ок)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Переход к следующему элементу формы из SpinEdit через Enter
    #39738119
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нюанс этот в Д7 из-за обработчика в самом TSpinEdit

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure TSpinEdit.KeyPress(var Key: Char);
begin
  if not IsValidChar(Key) then
  begin
    Key := #0;
    MessageBeep(0)
  end;
  if Key <> #0 then inherited KeyPress(Key);
end;

function TSpinEdit.IsValidChar(Key: Char): Boolean;
begin
  Result := (Key in [DecimalSeparator, '+', '-', '0'..'9']) or
    ((Key < #32) and (Key <> Chr(VK_RETURN)));
  if not FEditorEnabled and Result and ((Key >= #32) or
      (Key = Char(VK_BACK)) or (Key = Char(VK_DELETE))) then
    Result := False;
end;

VK_RETURN не считается валидным чаром - (Key <> Chr(VK_RETURN)
Но простое закомментаривание этого кода (Key <> Chr(VK_RETURN) приводит к тому, что по нажатию Enter просто чистится значение в поле SpinEdit
почему - не нашел
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #39738887
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpinEdit блокирует стандартное поведение enter и escape в диалоговых формах в Д7
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
program Project2;

uses
  Forms,
  spin,
  StdCtrls, Buttons,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
var
  Form  : TForm;
  edit  : TEdit;
  BitBtn1: TBitBtn;
  BitBtn2: TBitBtn;
  SpinEdit: TSpinEdit;


begin

  Form  := TForm.Create(Application);
  with form do
  begin
    BorderStyle := bsDialog;
    Left := 200;
    Top := 150;
    Width := 300;
    Height := 100;
  end;

  SpinEdit := TSpinEdit.Create(Form);
  Edit := TEdit.Create(Form);
  BitBtn1 := TBitBtn.Create(Form);
  BitBtn2 := TBitBtn.Create(Form);

  with SpinEdit do
  begin
    Parent := form;
    Left := 12;
    Top := 12;
    Width := 121;
    Height := 22;
    TabOrder := 0;
  end;

  with edit do
  begin
    Parent := form;
    Left := 140;
    Top := 12;
    Width := 121;
    Height := 21;
    TabOrder := 1;
    Text := 'Edit1';
  end;

  with BitBtn1 do
  begin
    Parent := form;
    Left := 12;
    Top := 44;
    Width := 75;
    Height := 25;
    TabOrder := 2;
    Kind := bkOK;
    default := true;
  end;
  with BitBtn2 do
  begin
    Parent := form;
    Left := 92;
    Top := 44;
    Width := 75;
    Height := 25;
    TabOrder := 3;
    Kind := bkCancel;
  end;


  Form.ShowModal;
end.

в примере нажатие enter и escape не производит никаких действий, когда фокус ввода на SpinEdit, и нормально работает, когда ввода на Edit
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #39738975
vitku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kansky,
я уже больше года пользуюсь модулем ZFunctions.pas для последовательного перехода между контролами на форме по нажатию клавиши Enter (по сути - это имитация нажатия клавиши Tab). Очень удобно. Но есть условие: последовательность перехода должна быть предварительно установлена с помощью пункта меню "Tab Order". Модуль не мой. Не помню уж где его качнул и автора не помню. Думаю, что здесь на форуме, только по поиску не смог найти. Главное - автор выложил и разрешил пользоваться. Модуль хорошо закомментирован. Там написано как пользоваться.
Модуль прилагаю
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #39739035
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

Так не пробовал?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
procedure TMySpinEdit.KeyPress(var Key: Char);
begin
  if not IsValidChar(Key) then
  begin
    Key := #0;
    MessageBeep(0)
  end;
  if Key <> #0 
     begin
        if Key=Chr(VK_RETURN) then 
           inherited KeyPress(Chr(VK_TAB))
        else
           inheried KeyPress(Key);
     end
end;

function TMySpinEdit.IsValidChar(Key: Char): Boolean;
begin
  if (Key = Chr(VK_RETURN) ) then
      Result:=True
  else 
      Result:=inherited IsValidChar(Key);
end;
...
Рейтинг: 0 / 0
Переход к следующему элементу формы из SpinEdit через Enter
    #39739126
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

спасибо, пресскей я знаю
хотел понять, какого хрена :)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Переход к следующему элементу формы из SpinEdit через Enter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]