problem z menu w trayu

0

używam komponentu CoolTray i mam problem z menu, które nie chowa się jeżeli klikne na inny element, lub coś w tym rodzaju. trudno jest je schować jak sie je już wywoła np. poprzez kliknięcie prawym przyciskiem myszy. co robic?

0

AFAIK to jest normalne w winXP...

0

Nie tylko w XP... ten temat był już poruszany w OT

0

jak może być normalne?! przecież tyle aplikacji nie ma z tym problemów!

0

Byc może te aplikacje nie korzystają z cooltray'a ?

// do postu ponizej: samemu oprogramować komunikaty, nie korzystać z cooltraya.

0

bardzo możliwe, nawet pewne, w takim razie jak to oprogramować by hulało?

może są jakieś komponenty typu menu trayowe?

da się oprogramować menu jakoś inaczej?

0

ja do tego zrobilem dodatkowy przycisk anuluj i podpialem go pod procedure ktora zmienia jakas tam wartosc (bo jakby nic nie roila to by ja delphi skasowal )

0

rozumiem, ze procedurka zmieniała, jakieś właściwości w PopupMenu, jakie?

0

rozumiem, ze procedurka zmieniała, jakieś właściwości w PopupMenu, jakie?

zle rozumiesz. procedura nie robic nic, tzn. robic cos, ale tylko po to aby nie robic nic. Wystarczy ze tym dodatkowym przyciskiem daje mozliwosc klikniecia. Po kliknieciu znika popup menu. Wiec jesli chcesz konieczie tak jak w innych aplikacjach, to moze symuluj jakies zdarzenie onclick na popup, po uplywie jakiegos czasu nieobecnosci myszy w rejonie popup menu ( chcoc nie wiem jak to zrobic :) )

0

dobry pomysł z tym czasem po którym ma schować się menu :-) albo trzeba zeby zamiast pokazywania menu pokazywala sie jakas forma i w tedy w OnDeactivate, czy coś takiego. dobrze mysle?

0

na pewno da sie to zrobić. W przykładowym programie dołączonym do komponentu działa to normalnie.

0
  1. Pokaż kod z przykładowego programu odpowiadający za wyświetlanie menu.
  2. Kiedy oprogramowywałem w WinAPI program, który za główne zadanie miał otwierać menu poprzez ikonę w zasobniku systemowym też miałem z tym problem. Rozwiązaniem dla mnie było umieszczenie dwóch funkcji SetForegroundWindow w taki oto sposób:
 SetForegroundWindow( h );
 if TrackPopupMenu( m[0], tpm_BottomAlign or tpm_RightAlign, pt.x, pt.y, 0, h, nil ) then SetForegroundWindow( h );
 DestroyMenu( m[0] );

1 użytkowników online, w tym zalogowanych: 0, gości: 1