Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Переход к следующему элементу формы из SpinEdit через Enter / 16 сообщений из 16, страница 1 из 1
12.10.2009, 15:34
    #36245897
Kansky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход к следующему элементу формы из SpinEdit через Enter
на форме для перехода на следующий элемент формы используется такая процедурка:
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
12.10.2009, 15:48
    #36245948
Barmaley57
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход к следующему элементу формы из SpinEdit через Enter
Kansky, не работает KeyPress - используй KeyUp/Down
...
Рейтинг: 0 / 0
12.10.2009, 15:59
    #36245985
Kansky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход к следующему элементу формы из SpinEdit через Enter
Barmaley57Kansky, не работает KeyPress - используй KeyUp/Down

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

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

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

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

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

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

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

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

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

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

ок)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
25.11.2018, 08:34
    #39738119
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход к следующему элементу формы из SpinEdit через Enter
нюанс этот в Д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
27.11.2018, 05:45
    #39738887
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход к следующему элементу формы из SpinEdit через Enter
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
27.11.2018, 10:49
    #39738975
vitku
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход к следующему элементу формы из SpinEdit через Enter
Kansky,
я уже больше года пользуюсь модулем ZFunctions.pas для последовательного перехода между контролами на форме по нажатию клавиши Enter (по сути - это имитация нажатия клавиши Tab). Очень удобно. Но есть условие: последовательность перехода должна быть предварительно установлена с помощью пункта меню "Tab Order". Модуль не мой. Не помню уж где его качнул и автора не помню. Думаю, что здесь на форуме, только по поиску не смог найти. Главное - автор выложил и разрешил пользоваться. Модуль хорошо закомментирован. Там написано как пользоваться.
Модуль прилагаю
...
Рейтинг: 0 / 0
27.11.2018, 12:06
    #39739035
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход к следующему элементу формы из SpinEdit через Enter
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
27.11.2018, 13:57
    #39739126
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переход к следующему элементу формы из SpinEdit через Enter
DarkMaster,

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


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