Форум: "Основная";
Текущий архив: 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.46 MB
Время: 1.99 c