Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.01.24;
Скачать: [xml.tar.bz2];

Вниз

TPopumMenu и TButton   Найти похожие ветки 

 
Danco ©   (2009-12-05 19:04) [0]

Как сделать, так что бы при нажатии на кнопку выплывало меню компонента TPopumMenu под кнопкой TButton?


 
DVM ©   (2009-12-05 19:11) [1]

как то так:

procedure TForm1.Button1Click(Sender: TObject);
var
 pt: TPoint;
begin
 SendMessage(Button1.Handle, BM_SETSTATE, BST_PUSHED, 0);
 pt := ClientToScreen(Point(Button1.BoundsRect.Left, Button1.BoundsRect.Bottom));
 PopupMenu1.Popup(pt.X, pt.Y);
 SendMessage(Button1.Handle, BM_SETSTATE, 0, 0);
end;


 
Danco ©   (2009-12-05 19:15) [2]

Спасибо DVM, но твой код не четко работает, выплывает не под кнопкой, а намного выше ее.

Это тоже самое что

PopupMenuContacts.Popup(MainForm.Left+ButtonMenu.Left, MainForm.Top+ButtonMenu.Top);

Аналогичная ситуация :(


 
DVM ©   (2009-12-05 19:18) [3]


> Danco ©   (05.12.09 19:15) [2]


> Спасибо DVM, но твой код не четко работает, выплывает не
> под кнопкой, а намного выше ее.

у меня точно под кнопкой получается


 
Danco ©   (2009-12-05 19:20) [4]

А возможно, что не получается из-за того что сижу на Windows 7?


 
DVM ©   (2009-12-05 19:22) [5]


> А возможно, что не получается из-за того что сижу на Windows
> 7?

Вряд ли, во-первых, я тоже сейчас под W7, во-вторых, и под XP оно работает нормально, я проверял. Дело в чем то другом.

Создай пустой проект, проверь на нем. Если все будет как надо, будем искать что не так в твоем рабочем проекте.


 
Danco ©   (2009-12-05 19:38) [6]

На пустом проекте и просто форме работает отлично, но если на форму поместить 2 панели и в свойстве Align у одной Top, а у второй Left и кнопку поместить на панель Left, то работать не будет, точнее будет, но криво. Как это обойти?


 
kyn66 ©   (2009-12-05 19:49) [7]

Просто нужно указать конкретно смещение по Y. Как вариант:

Var
 Pos  : TPoint;
begin
  Pos := Button1.ClientOrigin;
  PopupMenu1.Popup(Pos.X, Pos.y + Button1.Height + 7);
end;

Верний левй угол PopupMenu1 получается под левым нижним углом Button1.


 
DVM ©   (2009-12-05 19:54) [8]


> Danco ©   (05.12.09 19:38) [6]


> но если на форму поместить 2 панели и в свойстве Align у
> одной Top, а у второй Left и кнопку поместить на панель
> Left

Так с этого и надо было начинать. :)


 
Danco ©   (2009-12-05 20:01) [9]

Всем спасибо!

var
Pos  : TPoint;
begin
 Pos := Button1.ClientOrigin;
 PopupMenu1.Popup(Pos.X, Pos.y + Button1.Height ); //Без +7 работает
end;


Этот код заработал на "Ура"!


 
kyn66 ©   (2009-12-05 20:13) [10]


> Danco ©   (05.12.09 20:01) [9]
> //Без +7 работаетend;Этот код заработал на "Ура"!

Вот и чудненько :). В данном случае +7 - это чтобы Popup не прилипал  вплотную к кнопке. А в общем, этим смещением самому можно отрегулировать желаемое растояние.



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

Форум: "Начинающим";
Текущий архив: 2010.01.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
15-1258373073
RGV
2009-11-16 15:04
2010.01.24
Мастера подскажите где скачать простой и хороший пакер для exe


15-1258520711
_
2009-11-18 08:05
2010.01.24
Восстановить битый фильм.


1-1234095719
dreamse
2009-02-08 15:21
2010.01.24
Подскажите, какое событие возникает


2-1260099635
evger
2009-12-06 14:40
2010.01.24
Треды в дельфи


4-1227021398
StriderMan
2008-11-18 18:16
2010.01.24
Как получить русское название кодировки. mlang?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский