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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2009, 18:05   #1
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
Лампочка помогите с менюшкой плиз

Кто-нибудь делал такое меню, как в делфи, которое вызывается по нажатию Ctrl+Space? не могу узнать координаты текстового курсора мемо в пикселях кто-нибудь знает решение этой проблемы?
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi

Последний раз редактировалось m0dE^; 27.08.2009 в 18:11.
m0dE^ вне форума Ответить с цитированием
Старый 27.08.2009, 18:11   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Ага, так вот как его можно ещё раз вызвать
Эта менюшка называется "Знаток кода" (насколько мне известно)

Я думаю, что можно сделать невидимый ListBox и при определёных событиях делать его видимым с координатами курсора...

(первое что прилетело в пустую голову)
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 27.08.2009, 18:13   #3
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Вавел из ГМТУ Посмотреть сообщение
Ага, так вот как его можно ещё раз вызвать
Эта менюшка называется "Знаток кода" (насколько мне известно)

Я думаю, что можно сделать невидимый ListBox и при определёных событиях делать его видимым с координатами курсора...

(первое что прилетело в пустую голову)
Это само собой, но проблема с координатами курсора В ПИКСЕЛЯХ
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 27.08.2009, 18:40   #4
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Попробуй это:
http://www.sql.ru/forum/actualthread.aspx?tid=660531
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 27.08.2009, 18:45   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Насколько я помню, может мой пост и глуп, но вдруг натолкнет в нужную сторону, то для того, чтобы добиться такого эффекта нужно использовать TRichEdit. Посмотрите в его сторону, изучите его внимательно, вдруг у Вас получится сделать то, что Вам нужно
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.08.2009, 19:05   #6
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Насколько я помню, может мой пост и глуп, но вдруг натолкнет в нужную сторону, то для того, чтобы добиться такого эффекта нужно использовать TRichEdit. Посмотрите в его сторону, изучите его внимательно, вдруг у Вас получится сделать то, что Вам нужно
хм, но думаю, что есть и с мемо решение..
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 27.08.2009, 22:32   #7
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

Код:
var
  pt : TPoint;
begin
  Windows.GetCaretPos(pt);
  pt := Memo1.ClientToScreen(pt);
  Caption := IntToStr(pt.X) + ':' + IntToStr(pt.Y);
Это при условии что Memo1 в фокусе. Точно так же для всех других окон с кареткой.
Сказал и загрустил от бесспорности своей правоты.
0nni вне форума Ответить с цитированием
Старый 27.08.2009, 23:31   #8
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Цитата:
Сообщение от 0nni Посмотреть сообщение
Код:
var
  pt : TPoint;
begin
  Windows.GetCaretPos(pt);
  pt := Memo1.ClientToScreen(pt);
  Caption := IntToStr(pt.X) + ':' + IntToStr(pt.Y);
Это при условии что Memo1 в фокусе. Точно так же для всех других окон с кареткой.
Спасибо большое тебе! Лично я сделал вот так и работает вроде.. тьфу, тьфу, тьфу.. вот:
Код:
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var pt: TPoint;
begin
if (Key=vk_Space) and (ssCtrl in Shift) then begin
  Windows.GetCaretPos(pt);
  ListBox1.Left:=pt.X+11;
  ListBox1.Top:=pt.Y+17;
  ListBox1.Visible:=True;
end else ListBox1.Visible:=False;
end;
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плиз amidatong Общие вопросы C/C++ 7 07.04.2009 20:42
Помогите плиз Victoria Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2008 22:48