Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 11.01.2009, 19:43   #1
mar4elo
Форумчанин
 
Регистрация: 17.04.2008
Сообщений: 146
По умолчанию Контекстное меню

Как сделать чтоб при нажатии правой кнопки мыши на list view или List Box показывалось контекстное меню!!!
Проблема в том что если просто в свойстве Popup menu укзать компонент с меню, то в List View нажымаешь правой кнопкой на пустом месте меню появляется, а мне надо чтоб меню появлялось если какойто элемент выделен.
Надеюсь вопрос понятен... Помогите plz
mar4elo вне форума
Старый 11.01.2009, 19:55   #2
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

один из вариантов - в событии OnPopup проверяй выделено ли у тебя что-то, если нет то делай отмену (abort;)

Последний раз редактировалось ViktorXP; 11.01.2009 в 19:58.
ViktorXP вне форума
Старый 12.01.2009, 00:04   #3
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Можно обрабатывать событие OnContextPopup, а в нем проверять текущее положение курсора и устанавливать признак появления меню. Вот пример (предполагается, что к ListBox1 подключено контекстное меню):
Код:
procedure TForm1.ListBox1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
var
  I: Integer;
begin
  I := ListBox1.ItemAtPos(MousePos, True);
  Handled := I < 0;
end;
Jeni вне форума
Старый 12.01.2009, 00:22   #4
mar4elo
Форумчанин
 
Регистрация: 17.04.2008
Сообщений: 146
По умолчанию

Чет не получилось
mar4elo вне форума
Старый 12.01.2009, 00:47   #5
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

хмм... код Jeni точно правильный, ток что проверил...
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума
Старый 12.01.2009, 00:51   #6
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от mar4elo Посмотреть сообщение
Чет не получилось
Выложи проект, можно будет проверить что там не так.
Jeni вне форума
Старый 12.01.2009, 03:10   #7
Anatol_rus
Пользователь
 
Регистрация: 30.09.2008
Сообщений: 33
По умолчанию

Вот как я использую положение курсора:
Код:
procedure TForm1.Menu_PlayListChange(Sender: TObject; Source: TMenuItem;
  Rebuild: Boolean);
var
  MousePos: TPoint;
  Item : TListItem;
begin
  GetCursorPos(MousePos);
  if (sPageControl1.ActivePage = sTabSheet1) then//Если у нас плейлист видео тоды сюда
    begin
      Item := sListView1.GetItemAt(MousePos.X - Form1.Left - (4 + sPanel3.Width + sSplitter1.Width + sTabSheet1.Left + sPageControl1.Left + sGroupBox1.Left), MousePos.Y - Form1.Top - 57 - ( 2 + sPanel5.Height + sTabSheet1.Top));// по координатам курсора опредиляем сделан ли клик по не пустому полю
      if Item <> nil then//Если поле есть то сюда
        begin//Делаем лоступными кнопки доп.меню установленными ниже))
          Form1.Del_File.Enabled := True;
          Form1.Delete_from_disk.Enabled := True;
          Form1.Open_file_papka.Enabled := True;
          Form1.Copy_file_in_papka.Enabled := True;
          Form1.Copy_File_in_buf.Enabled := True;
          Form1.Info_file.Enabled := True;
          exit;
        end
      else//Если поля нет,то сюда
        begin//Делаем не доступными следующие кнопки доп.меню указанные внизу
          Form1.Del_File.Enabled := False;
          Form1.Delete_from_disk.Enabled := False;
          Form1.Open_file_papka.Enabled := False;
          Form1.Copy_file_in_papka.Enabled := False;
          Form1.Copy_File_in_buf.Enabled := False;
          Form1.Info_file.Enabled := False;
          exit;
        end;
    end;
end;
Это для ListView опредиляется положение курсора мыши в списке(т.е в ListView)),и если указатель мыши находится над добавленной в ListView строкой ,то активируются у меня кнопки если на пустом месте то делаются недоступными.
Тебе в else надо прописать чтоб меню не открывалось,как ты уже понял этот код пишется в событии OnChange или OnPopup твоего доп.меню))),а как выключить еще поищи))

Засунь в else abort как ViktorXP сказал мож и получится))

Последний раз редактировалось Stilet; 18.09.2009 в 14:28.
Anatol_rus вне форума
Старый 12.01.2009, 05:45   #8
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Интересно зачем в коде #7 exit нужен?
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума
Старый 12.01.2009, 09:14   #9
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Deight Посмотреть сообщение
Интересно зачем в коде #7 exit нужен?
если подумать то там и переменная Form1 лишняя.

mar4elo ты прикрепи проэкт как ты это делаеш а мы посмотрим... посмеемся и исправим ошибку
ViktorXP вне форума
Старый 12.01.2009, 10:12   #10
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Цитата:
Сообщение от ViktorXP Посмотреть сообщение
один из вариантов - в событии OnPopup проверяй выделено ли у тебя что-то, если нет то делай отмену (abort;)
Все правильно. И только так.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Контекстное меню (удалить строчку) Air Свободное общение 1 06.11.2008 21:56
Контекстное меню окон Ntlegend Общие вопросы Delphi 0 06.10.2008 19:06
Встраивание в контекстное меню проводника Никки Общие вопросы Delphi 3 25.06.2008 23:17
Контекстное меню файла... Altera Общие вопросы Delphi 3 29.02.2008 16:57
Как добавить подменю в системное контекстное меню Lucky13 Win Api 5 19.03.2007 20:17