![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определить открыто ли popup меню [D7]
гость2 © (2005-12-14 20:07:00)Сабж?
<code> (2005-12-18 00:33:00) [1]
//работает только если меню открылось над формой
function IsPopUpMenuOpen(h:HWnd):Boolean;
var p:TWindowPlacement;
begin
p.Length:=SizeOf(TWindowPlacement); //это нужно только что бы win95 не падала
GetWindowPlacement(h,@p);
if (Pbyte(@p.showCmd)^=SW_SHOWNOACTIVATE) then result:=true else result:=false;
end;
begin...end (2005-12-17 20:36:00) [2]> гость2
var
R: TRect;
begin
GetMenuItemRect(0, PopupMenu.Handle, 0, R);
if not IsRectEmpty(R) then
// открыто
end
Возможно, чушь написал -- тогда прошу прощения. Немного не в себе.
гость2 (2005-12-17 19:34:00) [3]
> function IsPopUpMenuOpen(h:HWnd):Boolean;
> var p:TWindowPlacement;
> begin
> p.Length:=SizeOf(TWindowPlacement); //это нужно только
> что бы win95 не падала
> GetWindowPlacement(h,@p);
> if (byte(@p.showCmd)shr 7)=1 then result:=false else result:
> =true;
> end;
>
>
Всегда возвращает false :(
wal (2005-12-16 15:30:00) [4]
> if (byte(@p.showCmd)shr 7)=1 then result:=false else result:=true;
Круто :)
<code> (2005-12-16 15:29:00) [5]
function IsPopUpMenuOpen(h:HWnd):Boolean;
var p:TWindowPlacement;
begin
p.Length:=SizeOf(TWindowPlacement); //это нужно только что бы win95 не падала
GetWindowPlacement(h,@p);
if (byte(@p.showCmd)shr 7)=1 then result:=false else result:=true;
end;
if IsPopUpMenuOpen(PopupMenu1.Handle) then beep;
Button1Click (2005-12-14 23:18:00) [6]
procedure TForm1.Button1Click(Sender: TObject);
begin
caption := 'PopupMenu открыто';
PopupMenu1.Popup(left+100,top+ 100);
Caption := 'PopupMenu закрыто';
end;