| Цитата(Snowy @ 17.2.2009, 13:32) | Если меню всплывает автоматом, то, пока оно не закроется, тред будет занят. А раз тред занят, то Application.OnIdle вызываться не будет. Значит первый же вызов OnIdle, после OnPopup и будет моментом пропадания меню.
| Код | type TForm1 = class(TForm) PopupMenu1: TPopupMenu; ApplicationEvents1: TApplicationEvents; procedure PopupMenu1Popup(Sender: TObject); procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.PopupMenu1Popup(Sender: TObject); begin PopupMenu1.Tag := 1; end;
procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); begin if PopupMenu1.Tag = 1 then begin PopupMenu1.Tag := 0; ShowMessage('Меню исчезло'); end; end; |
Ну а, если вызываем меню вручную, то тут еще проще - пока меню не исчезнет, код дальше вызова не идёт. То есть | Код | PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y); ShowMessage('Меню исчезло'); |
|
Сенq, помог. |