Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1220106974
Alral
2008-08-30 18:36
2008.10.12
Функция Recv и PChar


6-1193993911
Artik
2007-11-02 11:58
2008.10.12
Запуск программ по сети.


15-1219210687
ееееееекенитен
2008-08-20 09:38
2008.10.12
разрезать файл


2-1220424987
Vlad Oshin
2008-09-03 10:56
2008.10.12
Что полезного можно выжать из E:Exception?


2-1220207979
fog
2008-08-31 22:39
2008.10.12
MD5 и CryptoAPI





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