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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2013, 13:56   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
Вопрос Открыть PopupMenu над выделенным словом в RichView

Доброго времени суток!
Подскажите пожалуйста, как открыть PopupMenu над выделенным словом в RichView. Казалось бы, вот оно решение
Код:
procedure TForm1.RichView1RVRightClick(Sender: TCustomRichView;
  ClickedWord: String; Style, X, Y: Integer);
var
  P: TPoint;
begin
  If RichView1.SelectionExists then
  begin
    P := RichView1.ClientToScreen(Point(X, Y));
    PopupMenu1.Popup(P.X, P.Y);
  end;
end;
но координаты для PopupMenu задаются неверно.
Изображения
Тип файла: jpg Untitled-2.jpg (99.6 Кб, 52 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 29.12.2013, 14:23   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дык X и Y наверно же координаты курсора при клике. Вот по этим координатам меню и вывалится. А нужно найти координаты выделенного текста. Вот этого не знаю как в ричвью, не пользуюсь им
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.12.2013, 14:31   #3
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Код:
procedure TForm1.RichView1RVRightClick(Sender: TCustomRichView;
  ClickedWord: String; Style, X, Y: Integer);
begin
  If RichView1.SelectionExists then
    PopupMenu1.Popup(X, Y);
  end;
end;
doktor255 вне форума Ответить с цитированием
Старый 29.12.2013, 14:54   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нет я думаю что лучше так:
Код:
 PopupMenu1.PopUp(Mouse.CursorPos.x,Mouse.CursorPos.y);
Потому что Попуп всетки по абсолютным координатам отисовывается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.12.2013, 15:38   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Все способы оказались хороши
Shouldercannon вне форума Ответить с цитированием
Старый 29.12.2013, 15:50   #6
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нет я думаю что лучше так:
Компонент передал в процедуру координаты мыши. Нет смысла их повторно вытаскивать. Двойная работа проделывается.
doktor255 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с выделенным диапазоном DAN1L Microsoft Office Excel 5 29.11.2012 03:54
ShellExecute. Открыть explorer.exe в нуждной директории и с нужным выделенным файлом. Delphi_ProGer Win Api 3 27.02.2012 00:32
Открыть нужную ссылку в RichView Shouldercannon Общие вопросы Delphi 2 21.10.2010 15:51
Операции над словом Macmeprag Помощь студентам 9 17.10.2010 15:31
работа с выделенным диапазоном nastya007 Microsoft Office Excel 5 13.03.2009 08:33