Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определить открыто ли 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо