скрыть компонент по нажатии enter

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

скрыть компонент по нажатии enter

Сообщение NewUser » 26.06.2007 15:10:34

ввожу в поле текст, под Edit показывается DBGrid. нужно, чтобы по нажатии на enter DBGrid стал невидимым

использую код

Код: Выделить всё
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  {Unit1.pas(44,13) Error: Incompatible types: got "Char" expected "LongWord"}
  if Key <> #13 then
  begin
    DBGrid1.Visible := true;
  end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
  if Key = #13 then
  begin
    DBGrid1.Visible := false;
  end;
end;


но получается, что сначала KeyPress скрывает, а потом KeyUp показывает DBGrid

пытаюсь не реагировать на Enter в KeyUp
Код: Выделить всё
if Key <> #13 then

но вываливается ошибка {Unit1.pas(44,13) Error: Incompatible types: got "Char" expected "LongWord"}

подскажите как решить данную ситуацию
NewUser
новенький
 
Сообщения: 97
Зарегистрирован: 08.05.2007 13:28:40

Сообщение m_guest » 26.06.2007 15:30:44

Конечно будет ругаться.
В KeyUp параметр Key типа Word, а ты ему даешь #13
Нужно использовать вместо #13 константу VK_RETURN из модуля JwaWinUser.

А вообще, лучше использовать событие OnKeyDown у формы (не забыть у ней же поставить KeyPreview в True)
Примерно так:

Код: Выделить всё
//подключаем JwaWinUser для VK_RETURN

implementation
uses
  JwaWinUser;
//......................

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
  );
begin
  if Key=VK_RETURN then
     DBGrid1.Visible:=False;
end;
m_guest
постоялец
 
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Сообщение NewUser » 26.06.2007 16:19:56

тоже и происходит если использовать в форме

KeyDown скрывает, а KeyUp показывает.

сделал так

Код: Выделить всё
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_RETURN then
  begin
    DBGrid1.Visible := false;
  end
else
begin
    DBGrid1.Visible := true;
end;
end;


а где можно взять все значения констант для клавиш?
NewUser
новенький
 
Сообщения: 97
Зарегистрирован: 08.05.2007 13:28:40

Сообщение Attid » 26.06.2007 16:35:35

зажать контл и кликнуть по VK_RETURN
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение NewUser » 11.10.2007 00:00:42

NewUser
новенький
 
Сообщения: 97
Зарегистрирован: 08.05.2007 13:28:40

Сообщение SAK » 11.10.2007 16:57:59

NewUser писал(а):тоже и происходит если использовать в форме

KeyDown скрывает, а KeyUp показывает.

сделал так
................

Что-то здесь не так. Для чего надо реагировать на отпускание клавишь? Если для включения DBGrid при вводе в данных, то мне кажется логичнее перехватывать событие onChange, ведь текст может быть не только введён с клавиатуры, но и вставлен мышью из буфера.
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 11

Рейтинг@Mail.ru