void __fastcall TForm1::Button1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (Button == mbRight)
{
PopupMenu1->Popup(ClientToScreen(TPoint(X,Y)).x, ClientToScreen(TPoint(X,Y)).y + WINDOW_TITLE_WIDTH);
}
}
Абсолютные координаты объекта
на форме есть ControlBar на нем Panel на ней SpeedButton
надо что бы при нажатии на SpeedButton выпадало PopupMenu верхней границей по нижней кранице кнопки и левыми чтобы совпадали.
пытался складывать Left и Тор от формы и всех компонентов не получается, т.к. мешает заголовок окна (он при разных настройках виндов может быть разный) и главное меню формы (тоже меняется от шрифта)
как получить абсолютные координаты кнопки (объекта) на форме?
Screen->CursorPos.X (или как-то по-другому)...
а вообще можно узнать размер заголовка формы...
У формы есть два параметра ширины и высоты:
Form1->Height и Form1->Wight - это размер всей формы по высоте и ширине соответственно...
Form1->ClientHeight и Form1->ClientWidth - это размер клиентской части, т.е. размер формы без бордюров и заголовков...
Код:
выскочет прям около курсора мыши.
а вообще, есть такая вещь как TToolBar, на ней есть TToolButton, а у этих кнопок есть стиль (Style), ему поставить tbsDropDown, привязываешь PopupMenu и будет тебе щастье... будет кнопка со стрелкой рядом, и по нажатию на стрелку будет выпадать меню. по нажатию на кнопку - сам описываешь (тоже можешь сделать выпадаху).