Форум: "Основная";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
ВнизФокус мыши над Items в TListBox Найти похожие ветки
← →
Maloj2007 © (2008-01-11 18:36) [0]Всем доброго времени суток!
Вся проблема состоит в том как мне отловить нахождение указателя мыши именно на выделеной строке в ListBox и по нажатию правой кнопки мыши вывести PopupMenu в остальных случаях нажатие дожно игнорироваться. Кто сталкивылся, помогите плиз...
P.S. Работаю в Delphi 2007
← →
Palladin © (2008-01-11 18:42) [1]не знаю насколько отличается в этом плане D6 от D2007, но:
у TPopupMenu есть событие OnPopup (хотя это мало что меняет)
у TListbox есть метод ItemAtPos
а еще у TListBox есть событие OnClick
а еще TPopupMenu не обязательно привязывать к контролу, а можно вызвать вручную
если привязываешь PopupMenu то избавления от возникновения меню не получится, только дизаблить итемы на OnPopup
если не привязывать, то анализировать OnClick и вызывать или не вызывать
← →
Maloj2007 © (2008-01-11 19:01) [2]Сейчас попробую
Спасибо за совет
← →
{RASkov} © (2008-01-11 19:02) [3]> [0] Maloj2007 © (11.01.08 18:36)
ListBox1.PopupMenu=PopupMenu1;
procedure TForm1.ListBox1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
begin
if Sender is TListBox then
with TListBox(Sender) do
Handled:=ItemAtPos(MousePos, True)<>ItemIndex;
end;
← →
Palladin © (2008-01-11 19:03) [4]о... точно... про contextpopup то я и забыл :) самое оно
← →
{RASkov} © (2008-01-11 19:04) [5]> Handled:=ItemAtPos(MousePos, True)<>ItemIndex;
Ой... ошибочка :)
заменить на ItemAtPos(MousePos, False)
← →
{RASkov} © (2008-01-11 19:54) [6]> как мне отловить нахождение указателя мыши именно на выделеной
> строке в ListBox и по нажатию правой кнопки мыши вывести
> PopupMenu в остальных случаях нажатие дожно игнорироваться
А может лучше пересмотреть ситуёвину, и в место такого ^ подхода.....
сделать: нажатием правой кнопки выделить элемент под мышкой и вывести попап для уже "нового" элемента...
Иначе как-то некузяво получается..... чтоб вывести попап у не выделенного элемента, нужно два раза кликать - один раз левой кнопкой - выделяем элемент, затем правой - показываем попап.... как-то не очень, не кажется?)
Код измениться не намного:procedure TForm1.ListBox1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
begin
with TListBox(Sender) do begin
ItemIndex:=ItemAtPos(MousePos, True); //Тапэрь Тру
Handled:=ItemIndex<0;
end;
end;
:)
← →
Maloj2007 © (2008-01-11 19:55) [7]Во пасибо!!!!! Все робит просто супер, как раз так как надо!
← →
{RASkov} © (2008-01-11 20:04) [8]Эх.... А тапэрь проверку забыл... :( Ну а вдруг сендер не листбокс.... )
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c