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

Вниз

Выпадающее меню.   Найти похожие ветки 

 
kingdom   (2005-08-01 22:10) [0]

У меня на форме лежит PopupMenu1 и есть кнопка ToolButton у которой Стиль = tbsDropDown и DropdownMenu = PopupMenu1. У кнопки справа появился треугольник по нажатию которого выпадает меню, а вот при нажатии на самой кнопки, происходить событие Click. Как сделать так, что бы по нажатию и кнопки и треугольника выпадало только меню? Можно конечно использовать в событии Click PopupMenu1.Popup(x,y); Но может это можно сделать в настройках кнопки, что бы не изобретать велосипед, но я этого не нашел.


 
Eraser ©   (2005-08-01 22:47) [1]

kingdom   (01.08.05 22:10)

В настройках кнопки вроде нету, так что делай PopupMenu1.Popup(x,y);


 
Mx ©   (2005-08-01 23:04) [2]


> kingdom   (01.08.05 22:10)  

Убери стиль tbsDropdown, а если уж так нужен треугольник, то можно и вручную отрисовать.


 
Ученик   (2005-08-01 23:18) [3]

>kingdom   (01.08.05 22:10)  

Еще вариант

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
 ToolButton1.CheckMenuDropDown
end;


 
kingdom   (2005-08-01 23:37) [4]

>Ученик
ToolButton1.CheckMenuDropDown
Ничего не происходит при выполнении этого кода, меню не появляется

А как точно отловит координаты угла X,Y (PopupMenu1.Popup(x,y);), что бы этот угол находился под кнопкой?


 
Eraser ©   (2005-08-01 23:42) [5]

kingdom   (01.08.05 23:37) [4]

Возможно поможет следующий код:
function TJvCustomSpeedButton.CheckMenuDropDown(const Pos: TSmallPoint;
 Manual: Boolean): Boolean;
{$IFDEF VCL}
var
 Form: TCustomForm;
{$ENDIF VCL}  
begin
 Result := False;
 if csDesigning in ComponentState then
   Exit;
 if Assigned(FDropDownMenu) and (DropDownMenu.AutoPopup or Manual) then
 begin
   {$IFDEF VCL}
   Form := GetParentForm(Self);
   if Form <> nil then
     Form.SendCancelMode(nil);
   {$ENDIF VCL}
   DropDownMenu.PopupComponent := Self;
   with ClientToScreen(SmallPointToPoint(Pos)) do
     DropDownMenu.Popup(X, Y);
   Result := True;
 end;
end;


 
Eraser ©   (2005-08-01 23:45) [6]

Ещё:
function TJvCustomSpeedButton.GetDropDownMenuPos: TPoint;
begin
 if Assigned(FDropDownMenu) then
 begin
   if MenuPosition = dmpBottom then
   begin
     case FDropDownMenu.Alignment of
       paLeft:
         Result := Point(-1, Height);
       paRight:
         Result := Point(Width + 1, Height);
     else {paCenter}
       Result := Point(Width div 2, Height);
     end;
   end
   else { dmpRight }
   begin
     case FDropDownMenu.Alignment of
       paLeft:
         Result := Point(Width, -1);
       paRight:
         Result := Point(-1, -1);
     else {paCenter}
       Result := Point(Width div 2, Height);
     end;
   end;
 end
 else
   Result := Point(0, 0);
end;


+++

function TJvCustomSpeedButton.CheckBtnMenuDropDown: Boolean;
begin
 Result := CheckMenuDropDown(PointToSmallPoint(GetDropDownMenuPos), True);
end;


 
Ученик   (2005-08-01 23:54) [7]

>kingdom   (01.08.05 23:37) [4]
Может отключили TToolButton.DropdownMenu или TPopupMenu.AutoPopup ?


 
kingdom   (2005-08-02 01:02) [8]

>Ученик
Да нет, все включено, а все равно ничего не происходит :(


 
Mx ©   (2005-08-02 02:01) [9]


> kingdom   (02.08.05 01:02) [8]

Да елы палы, а что должно происходить-то? Если "Стиль = tbsDropDown и DropdownMenu = PopupMenu1", то сбоку есть "треугольник" для меню по которому оно и появляется. Если стиль сделать tbsButton, то будет появляться только меню, но "треугольника" не будет. Все остальное глюки беспонтового компонента, который даже по-сравнению с уже устаревшим Toolbar97 смотрится фигово.


 
kingdom   (2005-08-02 10:19) [10]

>Ученик
Спасибо, все заработаль. Просто удалил кнопку и сделал все заново.

>Мх
да хочется только стандартными компонентами обойтись

Всем спасибо



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

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

Наверх




Память: 0.49 MB
Время: 0.057 c
1-1122497703
SpyBoy
2005-07-28 00:55
2005.08.21
Качественный текст


5-1093243898
Mr.Den
2004-08-23 10:51
2005.08.21
Глючит Ttimer в самописном компоненте


14-1122815252
ROCKER***
2005-07-31 17:07
2005.08.21
Ламоразмы


1-1122271364
Korvet
2005-07-25 10:02
2005.08.21
Как сделать таймер из Label


14-1122378949
Viktop
2005-07-26 15:55
2005.08.21
XML в Delphi