Главная страница
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.034 c
14-1133876836
Sergunchik
2005-12-06 16:47
2006.01.01
Помогите пожалуйста!!!!


2-1134277790
St74
2005-12-11 08:09
2006.01.01
Преобразование Integer > HEX


4-1130585063
AllDontFire
2005-10-29 15:24
2006.01.01
Как получить адрес процедур собственной программы (по названию п)


2-1134545383
snake77
2005-12-14 10:29
2006.01.01
clipboard


8-1122266318
Sankez
2005-07-25 08:38
2006.01.01
Как можно проиграть avi на рабочем столе ?