Есть Edit. В событии OnExit делается Edit.Visible:=False;
Проблема. Если я редактирую Edit и при этом нажимаю Button, то при этом не срабатывает OnClick на этом батоне.
Проверял на версиях 0.9.25. Может уже пофиксили, тогда прошу прощения. Не было возможности обновиться.
В C++Builder (и наверное в Делфи) такой проблемы нет.
Странная обработка событий
Модератор: Модераторы
Код в студию!
Добавлено спустя 2 часа 10 минут:
Проблема "передачи" фокуса есть. Я был вынужден, например, отказаться от отслеживания нажатия нецифровых клавиш по OnKeyPress, чтобы штатно работала клавиша <Tab> - перемещение между компонентами.
Типа if not key in (...) then key=#27
Полагаю, что в твоем случае обработка OnClick "натыкается" на OnExit (могу ошибаться). К слову, знаю точно, что с обработчиками TBitButton есть проблемы - если на панели две таких кнопки,
одна с Kind:=bkOk, другая с Kind:=bkCancel - их поведение непредсказуемо. Выкинул из проекта....
Сухой остаток - под Lazarus надо писать убойный код, чтобы работал - ни Delphi, ни Kylih здесь не помощники!
Добавлено спустя 2 часа 10 минут:
Проблема "передачи" фокуса есть. Я был вынужден, например, отказаться от отслеживания нажатия нецифровых клавиш по OnKeyPress, чтобы штатно работала клавиша <Tab> - перемещение между компонентами.
Типа if not key in (...) then key=#27
Полагаю, что в твоем случае обработка OnClick "натыкается" на OnExit (могу ошибаться). К слову, знаю точно, что с обработчиками TBitButton есть проблемы - если на панели две таких кнопки,
одна с Kind:=bkOk, другая с Kind:=bkCancel - их поведение непредсказуемо. Выкинул из проекта....
Сухой остаток - под Lazarus надо писать убойный код, чтобы работал - ни Delphi, ни Kylih здесь не помощники!
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Делаем пример:
На форму кидаем Edit1, Button1, Label1, Label2.
Еще один прикол. При создании формы срабатывает событие OnExit для Edit1.
На форму кидаем Edit1, Button1, Label1, Label2.
Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure Label1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.Edit1Exit(Sender: TObject);
begin
Label1.Caption:='11';
Edit1.Visible:=False;
end;
procedure TForm1.Label1Click(Sender: TObject);
begin
Edit1.Visible:=True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label2.Caption:='222';
end;
initialization
{$I Unit1.lrs}
end.
Еще один прикол. При создании формы срабатывает событие OnExit для Edit1.
У меня все нормально - при создании формы все спокойно, никаких OnExit не происходит.
Не очень понятно, где фокус при создании формы - я ставил и на кнопку, и на Edit - все штатно
Не очень понятно, где фокус при создании формы - я ставил и на кнопку, и на Edit - все штатно
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Владимир писал(а):У меня все нормально - при создании формы все спокойно, никаких OnExit не происходит.
Не очень понятно, где фокус при создании формы - я ставил и на кнопку, и на Edit - все штатно
Как проверяли?
