Re: Вопрос про OnMouseUp
От: hun  
Дата: 26.10.05 14:53
Оценка:
Здравствуйте, Суслик, Вы писали:

С>Есть код.



С>
С>unit Unit3;

С>interface

С>uses
С> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
С> Dialogs, Grids, StdCtrls, ExtCtrls;

С>type
С> TForm3 = class(TForm)
С>   Memo1: TMemo;
С>   Edit1: TEdit;
С>   Edit2: TEdit;
С>   procedure Edit1Exit(Sender: TObject);
С>   procedure Edit2MouseDown(Sender: TObject; Button: TMouseButton;
С>     Shift: TShiftState; X, Y: Integer);
С>   procedure Edit2MouseUp(Sender: TObject; Button: TMouseButton;
С>     Shift: TShiftState; X, Y: Integer);
С> end;

С>var
С> Form3: TForm3;

С>implementation

С>{$R *.dfm}

С>procedure TForm3.Edit1Exit(Sender: TObject);
С>begin
С>  try
С>     raise exception.create('1');
С>  except
С>     application.HandleException(self);
С>  end;
С>end;

С>procedure TForm3.Edit2MouseDown(Sender: TObject; Button: TMouseButton;
С> Shift: TShiftState; X, Y: Integer);
С>begin
С>  memo1.lines.add('down');
С>end;

С>procedure TForm3.Edit2MouseUp(Sender: TObject; Button: TMouseButton;
С> Shift: TShiftState; X, Y: Integer);
С>begin
С>  memo1.lines.add('up');
С>end;

С>end.
С>


С>Ситуация:

С>1. Фокус ввода находится на Edit1.
С>2. Я нажимаю и ОТПУСКАЮ мышь на Edit2.

С>В результате в memo1 оказывается строка down.


С>ВОПРОСЫ: 1. Почему не срабатывает событие Edit2MouseUp

С>2. Как сделать так, чтобы факт отпускания мыши стал известен Edit2.

Это происходит потому, что после MouseDown вызывается Exception (и диалоговое окно) из Edit1Exit, соответственно фокус теряется и все мышиные сообщения идут не на Edit2. Собственно надо в Edit1Exit например ничего не делать....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.