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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.053 c
1-1123060934
TDionis
2005-08-03 13:22
2005.08.21
Несовместимость String и Char


4-1119700531
Nik_vr
2005-06-25 15:55
2005.08.21
Окно в окне (чужом)


8-1112079276
VIS
2005-03-29 10:54
2005.08.21
tuner


1-1122630609
Aleksandr.
2005-07-29 13:50
2005.08.21
Как правильно удалить TMenuItem?


1-1122283190
MegaVolt
2005-07-25 13:19
2005.08.21
Треугольнички показывающие сортировку в ListView





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