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

Вниз

Что возвращает ClientToScreen?   Найти похожие ветки 

 
Kolan ©   (2008-06-05 16:38) [0]

Непойму что возвращает сабж.

Следующий код возвращает в PopupPoint не те координаты, что я ожидал. Я думал, я
procedure TButtonPopupHelper.PopupMenuAtTheBottom;
var
 PopupPoint: TPoint;
begin
 if Self.PopupMenu <> nil then
 begin
   PopupPoint := Self.ClientToScreen(Point(Self.Left, Self.Top + Self.Height));
   Self.PopupMenu.Popup(PopupPoint.X, PopupPoint.Y);
 end;
end;


Я думал, что в итоге, попап меню откроется снизу контрола (тут Self &#151; это TButton), но оно открывается со сдвижкой в ~100 пикеселей влево и ниже на ~20 пикс.

Почему так происходит?
Как получить нужные мне координаты?


 
Palladin ©   (2008-06-05 16:39) [1]


> PopupPoint := Self.ClientToScreen(

думаю все же не self, а PopupMenu.PopupControl


 
Kolan ©   (2008-06-05 16:40) [2]

Это не совсем класс :-)
TButtonPopupHelper = class helper for TButton
public
 procedure PopupMenuAtTheBottom;
end;


 
Palladin ©   (2008-06-05 16:40) [3]


> Kolan ©   (05.06.08 16:40) [2]

значит Self.PopupControl.ClientToScreen


 
Kolan ©   (2008-06-05 16:42) [4]

> PopupMenu.PopupControl

Точно, можно хелпер для меню написать и тогда для всех контролов будет работать. Я просто с TControl помыкался, Popupmenu у него протектид, а как хакнуть с хелпером мозгов не хыватило...


 
Kolan ©   (2008-06-05 16:46) [5]

> значит Self.PopupControl.ClientToScreen

Self &#151; это кнопка.


 
Kolan ©   (2008-06-05 16:47) [6]

Кроме того,


 
Kolan ©   (2008-06-05 16:47) [7]

Из справки:
Indicates the component that last displayed the popup menu in response to a right mouse click.

То есть если никто не попапнул, то там будет nil получается.


 
Palladin ©   (2008-06-05 16:48) [8]

чет я совсем запутался...


 
Kolan ©   (2008-06-05 16:50) [9]

> чет я совсем запутался...

В helpe"ре self &#151; это не он сам, а тот кому он помогает. Раз у меня хелпер для TButton, то Self &#151; это кнопка.


 
Kolan ©   (2008-06-05 16:52) [10]

Все, дошло


   PopupPoint := Self.ClientToScreen(Point(0, Self.Height));
   Self.PopupMenu.Popup(PopupPoint.X, PopupPoint.Y);


 
Игорь Шевченко ©   (2008-06-05 16:59) [11]


>  if Self.PopupMenu <> nil then
>  begin
>    PopupPoint := Self.ClientToScreen(Point(Self.Left, Self.
> Top + Self.Height));
>    Self.PopupMenu.Popup(PopupPoint.X, PopupPoint.Y);


А зачем ты столько раз Self пишешь ?


 
Kolan ©   (2008-06-05 17:04) [12]

> А зачем ты столько раз Self пишешь ?

Предлагаешь использовать with? Если так, то ну его. Очень некрасиво получилось?
Или как-то по другому?


 
Игорь Шевченко ©   (2008-06-05 17:05) [13]


> Или как-то по другому?


просто убрать.


 
Kolan ©   (2008-06-05 17:14) [14]

> просто убрать.

Млин, до этого еще надо додуматься было. :-) Справка сбила с толку, думал надо писать.



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

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

Наверх




Память: 0.47 MB
Время: 0.031 c
2-1212490763
alex-drob
2008-06-03 14:59
2008.07.06
TTcpClient в оддельный паток


2-1212771815
DJ_UZer
2008-06-06 21:03
2008.07.06
MRU


15-1211364664
Prohodil Mimo
2008-05-21 14:11
2008.07.06
Вопрос к тем, кто в Германии !


2-1213017952
tytus
2008-06-09 17:25
2008.07.06
AV при Synchronize в модальной форме.


15-1211204001
Prohodil Mimo
2008-05-19 17:33
2008.07.06
как заставить прокрутиться закрытый ComboBox?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский