Popup menu - pozycja wyświetlania oraz ramka

problemy z funkcjonowaniem bibliotek, komponentów itp.

Popup menu - pozycja wyświetlania oraz ramka

Nowy postprzez Koziol » wtorek, 16 lutego 2010, 18:57

Witam,
mam pytanie czy istnieje możliwość w jakiś sposób ustawienia pozycji wyświetlania obiektu popupmenu względem lewego dolnego rogu?

W ustawieniach ów obiektu w BCB6 można wybrać prawą środek i lewą stronę w poziomie oraz tylko górę oraz środek względem wysokości, a dolnej części nie da się wybrać.

W jaki sposób zmienić kolorystykę ramki otaczającej ów popupmenu.

Z góry dziękuje za pomoc.
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    Windows XPFirefox

Re: Popup menu - pozycja wyświetlania oraz ramka

Nowy postprzez Cyfrowy Baron » środa, 17 lutego 2010, 11:25

Możesz wywołać ręcznie wyświetlanie PopupMenu. Ustawiasz jego właściwość AutoPopup na false, a potem wywołujesz gdzieś podając jego położenie względem kursora myszy, np:

Kod: Zaznacz cały
  POINT cP;
  GetCursorPos(&cP);

  PopupMenu1->Popup(cP.x, cP.y + 100);


Niestety samo nie wyskoczy przy ręcznym wywoływaniu, ale można posłużyć się zdarzeniem OnMouseUp. Należy brać jednak bezwzględną pozycję kursora, a nie względną, względem formularza lub komponentu, dlatego należy posłużyć się funkcją GetCursorPos.



Prosty przykład wyświetlania PopupMenu1 w prawej dolnej pozycji kursora myszy dla formularza:

PopupMenu1 -> ustawienie właściwości:

Alignment = paRight;
AutoPopup = false;


Tworzymy zdarzenie OnMouseUp dla formularza Form1:

Kod: Zaznacz cały
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  if(Button == mbRight)
  {
   POINT cP;                         
   GetCursorPos(&cP);
   PopupMenu1->Popup(cP.x, cP.y - (PopupMenu1->Items->Count * 19));
  }
}


Wartość 19 to standardowa szerokość polecenia PopupMenu.



Co do drugiego pytania, to patrz serwis Cyfrowy Baron dział: porady -> API -> Wypełnianie grafiką PopupMenu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Biblioteki i komponenty

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość

cron