Форум: "Основная";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];
ВнизOnKeyUP -события Найти похожие ветки
← →
KIE (2003-04-16 14:21) [0]Возникла одна проблемма:
Есть несколько форм , у которых значение KeyPreview установлено в TRUE. В одной форме при нажатии клавиши Enter должно происходить её закрытие и открытие второй формы - с этим все нормально, НО, когда открывается вторая форма, то код нажатой клавиши передается ей. Вроде все путем, так и должно, но есть одна трабла - за клавишей Enter во второй форме у меня забито совсем бругое действие и оно соответственно срабатывает автоматически после открытия формы второй формы. МНЕ ТАК НЕ НАДО.
Мне надо так, в первой Enter нажали она закрылась и открылась другая форма (вторая). Если во второй нажали Enter то выполнилось то, что обычно выполняется автоматически после открытия данной формы. Пробовал по закрытию формы обнулять параметр т.е.
Мне сказали что надо Key приравнять к нулю, ну .... вроде что-то, осталась другая проблемма.
Если есть форма в которой KeyPreview = FALSE и на ней есть кнопка, нажимаем на ней (ч/з клаву по Enter-у) тогода в открывшуюся форму, в которй KeyPreview = TRUE тоже передается значение клавиши, и соответственно срабаитывает то что за ней закреплено в обработчике, а мне опять так не надо!
Как сделать так, что бы не передовались коды клавишь от формы в форму (в от обработчика в обработчик)??????
← →
Shirson (2003-04-16 16:01) [1]Если ты работаешь именно с Enter, то можно попробовать такой вариант:
У всех форм KeyPreview в FALSE :)
На каждую форму ложишь кнопку. Обычную. Default у кнопки ставишь в true, TabStop в False. Кнопку убираешь за границы формы.
На обработчик этой кнопки вешаешь свой код.
Усё.
Попробуй, может поможет.
← →
KIE (2003-04-16 21:15) [2]В том то и проблемма, что не только с Enter-ом работаю, а ещё есть куча кнопок. И вот еще одна проблемма тогда сразу может возникнуть - алгоритм и код программы ГИГАНСКО БОЛЬШОЙ. Пусть писал его я, и в нем разбираюсь - исправлять придется очень много, естьвероятность появления подводного камня (ошибки), которую выцепить потом будет сложно.
Может проще как-то можно?
← →
default (2003-04-16 21:59) [3]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Caption := Name + " : " + IntToStr(Key);
Hide;
Form2.Show
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Caption := Name + " : " + IntToStr(Key);
Form1.Show;
Hide
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate
end;
end.
Не понимаю почему "НО, когда открывается вторая форма, то код нажатой клавиши передается ей." ?
Ничего не должно передаваться...
← →
Song (2003-04-17 10:07) [4]Key:=0
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c