Главная страница
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.054 c
2-1134220818
Witys
2005-12-10 16:20
2006.01.01
создание калькулятора


9-1122404473
RiDDiR
2005-07-26 23:01
2006.01.01
А как сетевуху в игре сделать?


14-1134311456
Иван Петрович
2005-12-11 17:30
2006.01.01
Вопрос наверно лмера)


2-1134245842
Demon1313
2005-12-10 23:17
2006.01.01
Срочно плиз-как сделать чтоб при каждом запуске приложения в


2-1134421311
Змей
2005-12-13 00:01
2006.01.01
edit.text