Форум: "Начинающим";
Текущий архив: 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