Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
ВнизКурсор в Memo Найти похожие ветки
← →
Ross (2002-05-02 14:26) [0]Здравствуйте. Подскажите, как в Memo при нажатии правой кнопки мыши поместить курсор в слово над котором находится курсор (то же самое как происходит с левой кнопкой мыши).
Спасибо.
← →
Malder (2002-05-02 14:33) [1]Сложный вопрос. Надо смотреть исходники TMemo и переделывать их...
← →
Ross (2002-05-02 17:47) [2]
to Malder: Спасибо.
To All: Все-таки, может есть какая нибудь функция... Может кто нибудь знает?
← →
Song (2002-05-02 18:16) [3]Нет таких функций.
← →
Malder (2002-05-02 20:51) [4]Ross, хотя можно хитро поступить... сейчас некогда, подумаю - скажу, не отчаивайся =)
← →
Malder (2002-05-03 01:07) [5]Нет. Хитро не получилось =( Придется действительно смотреть исходники TMemo.
Только вот у меня вопрос - а нафига тебе это надо ? Что-то трудно придумать ситуацию, зачем все это нужно...
← →
Almaz (2002-05-03 01:40) [6]
> Malder © (02.05.02 14:33)
> Сложный вопрос. Надо смотреть исходники TMemo и переделывать
> их...
Чего там переделывать ???? Зачем исходники ???? Все гораздо проще - обратите внимание на вопрос - там практически уже дан ответ : "Подскажите, как в Memo при нажатии правой кнопки мыши поместить курсор в слово над котором находится курсор ( то же самое как происходит с левой кнопкой мыши)."
> Ross © (02.05.02 14:26)
Необходимо создать наследника TMemo. Вот так:
type
TNoRightClickMemo = class(TMemo)
procedure WMRButtonDown(var Message: TMessage); message WM_RBUTTONDOWN;
procedure WMRButtonUp(var Message: TMessage); message WM_RBUTTONUP;
end;
...
procedure TNoRightClickMemo.WMRButtonUp(var Message: TMessage);
begin
with Message do
Result := SendMessage(Handle, WM_LBUTTONUP, wParam, lParam);
end;
procedure TNoRightClickMemo.WMRButtonDown(var Message: TMessage);
begin
with Message do
Result := SendMessage(Handle, WM_LBUTTONDOWN, wParam, lParam);
end;
А теперь можно либо поместить его в палитру компонент, либо просто динамически вставлять в форму.
Удачи.
← →
Malder (2002-05-03 12:01) [7]Almaz, ты чертовски прав ! Я тоже хотел так сделать, только немного по другому и не получилось... вот блин, торможу...
← →
Ross (2002-05-11 19:03) [8]To All: Спасибо большое. Это вариант, но мне нужно немножко другое: Есть мемо. При нажатии на правую кнопку мыши выпадает PopupMenu1, с словом над котором находится мышка. Я попробовал разделить это на части:
1. поместить курсор в слово.
2. "Вытащить" слово.
3. Добавить в Меню.
Может кто это уже делал, или знает как, помогите!
Заранее очень благодарен.
← →
Song (2002-05-11 19:16) [9]1. Определите позицию в Memo, над которым TPopup всплыло.
2. Определите слово в этой строке.
← →
Ross (2002-05-11 19:35) [10]To Song
Спасибо. Вот именно с пунктом 1 не могу справиться. Поэтому я хотел поместить курсор в слово, потом читать направо и налево до первого пробела, и тем самым определить слово. Но по моему это слишком окружно. Где-то я видел пример, но не помню.
Спасибо.
← →
Song (2002-05-11 19:38) [11]EM_CHARFROMPOS
← →
Ross (2002-05-11 20:13) [12]To Song
Вы не можете мне объяснить более детально:
Memo2.Perform(EM_CHARFROMPOS,0,MakeLParam(x,y));
мне трудно понять Help.
Извините.
Спасибо.
← →
Song (2002-05-11 20:20) [13]А что тут не понять. Вы посылаете сообщение на TMemo, а Вам возращается номер строки над которой находится курсор мыши, координаты которого X и Y
← →
Ross (2002-05-11 20:31) [14]Делаю так:
procedure TForm1.Memo2Click(Sender: TObject);
var
x,y:integer;
begin
Memo2.Perform(EM_CHARFROMPOS,0,MakeLParam(x,y));
showmessage(inttostr(x)+"+"+inttostr(y));
end;
Вот результат независимо от места где происходит клик:
4486928+1244712
← →
Song (2002-05-11 20:36) [15]Да нет. Вы не поняли.
Где Вы взяли X и Y?
Они у Вас берутся от дурака. И результат возвращается не в координатах, а как результат от Perform
← →
Song (2002-05-11 20:48) [16]procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Caption:=IntToStr(HiWord(TMemo(Sender).Perform(EM_CHARFROMPOS,0,MakeLParam(X,Y)))+1);
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c