Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.01;
Скачать: CL | DM;

Вниз

Позиция Popupmenu. Как привязать к нижнему левому углу.   Найти похожие ветки 

 
SergP.   (2005-12-03 15:24) [0]

Имеется попапменю, которое появляется при нажатии на кнопку.


procedure TFrmMain.BtnMenuClick(Sender: TObject);
var
foo: TPoint;
begin
foo.X:=BtnMenu.Left;
foo.Y:=BtnMenu.Top;
foo:=ClientToScreen(foo);
Pmmain.Popup(foo.x,foo.y);
end;


получается что я позиция привязана к верхнему левому углу..
Как можно привязать к нижнему левому?


 
malenkii_myk   (2005-12-03 16:13) [1]

BtnMenu.Top+BtnMenu.Heigth;


 
SergP.   (2005-12-03 20:02) [2]


> BtnMenu.Top+BtnMenu.Heigth;


Неа. во первых минус а не плюс, а во вторых нужно к нижнему левому углу попапменю а не кнопки


 
begin...end ©   (2005-12-03 20:04) [3]

> SergP.   (03.12.05 20:02) [2]

Позицию PopupMenu нужно привязать к нижнему левому углу PopupMenu? Это как?


 
Zeqfreed ©   (2005-12-03 20:08) [4]

begin...end ©   (03.12.05 20:04) [3]
Думаю, что автор хочет, чтобы меню открывалось не "сверху-слева вниз", а "снизу-слева вверх" :)


 
Sergp.   (2005-12-03 20:12) [5]


> <Цитата>
>
>
>
> Zeqfreed ©  (03.12.05 20:08) [4]
>
> begin...end ©  (03.12.05 20:04) [3]
> Думаю, что автор хочет, чтобы меню открывалось не "сверху-
> слева вниз", а "снизу-слева вверх" :)

Да. Именно так. Чтобы  в
procedure TFrmMain.BtnMenuClick(Sender: TObject);
var
foo: TPoint;
begin
foo.X:=BtnMenu.Left;
foo.Y:=BtnMenu.Top;
foo:=ClientToScreen(foo);
Pmmain.Popup(foo.x,foo.y);
end;

попапменю вылазило выше кнопки


 
Zeqfreed ©   (2005-12-03 20:18) [6]

Sergp.   (03.12.05 20:12) [5]
Контекстное меню "вылазит" туда, куда оно поместится, отдавая предпочтение направлению вниз. Вы хотите самостоятельно обрабатывать ситуации, когда при открытии его вверх оно будет выходить за пределы экрана, или эта ситуации допустима в вашей задаче? Ну, в таком случае, могу предложить писать свой аналог меню или просчитывать позицию меню в зависимости от его высоты.


 
begin...end ©   (2005-12-03 20:27) [7]

Вызвать TrackPopupMenu с флагом TPM_BOTTOMALIGN. Возрадоваться.


 
Sergp.   (2005-12-03 20:28) [8]

Если меню не влазит в экран, то пусть оно рнасполагается как может. Но если влазит, то пусть располагается как я хочу - т.е. пусть привязывается в нижнему левому углу.


 
Zeqfreed ©   (2005-12-03 20:30) [9]

Zeqfreed ©   (03.12.05 20:18) [6]
Мои сведения были устаревшими :)
Согласно MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/menus/menur eference/menufunctions/trackpopupmenu.asp) поддерживается флаг TPM_BOTTOMALIGN для ф-ции TrackPopupMenu, позволяющий открывать меню вверх, относительно указанной y координаты. В справке Delphi, к сожалению, такого не найти, хотя константа прописана в Windows.pas.


 
Sergp.   (2005-12-03 21:01) [10]


> Zeqfreed ©  (03.12.05 20:30) [9]
>
> Zeqfreed ©  (03.12.05 20:18) [6]
> Мои сведения были устаревшими :)
> Согласно MSDN (http://msdn.microsoft.com/library/default.
> asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/menus/menur
> eference/menufunctions/trackpopupmenu.asp) поддерживается
> флаг TPM_BOTTOMALIGN для ф-ции TrackPopupMenu, позволяющий
> открывать меню вверх, относительно указанной y координаты.
>  В справке Delphi, к сожалению, такого не найти, хотя константа
> прописана в Windows.pas.


Не проверял. Но ИМХО это то что мне нужно. Проверю сейчас. Большоет спасибо.



Страницы: 1 вся ветка

Текущий архив: 2006.01.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
14-1133863248
Qwertyqwert
2005-12-06 13:00
2006.01.01
PAS =>> CPP


2-1134831588
shoni
2005-12-17 17:59
2006.01.01
Как изменить цвет фона Memo1?


2-1134300322
ЕвгенийГость
2005-12-11 14:25
2006.01.01
Пожалуйста, напомните как обрабатывать нажатия клавиш... особенно


2-1134687534
crazycorpse
2005-12-16 01:58
2006.01.01
Динамический массив n x m


14-1133881487
Копир
2005-12-06 18:04
2006.01.01
Мастер и Маргарита. Априорный анализ актеров.