Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.25;
Скачать: CL | DM;

Вниз

Координаты кусора в TMemo.   Найти похожие ветки 

 
RealRascal ©   (2004-02-01 08:20) [0]

Знаю, есть CaretPos, но мне надо в пискелах. Можно, конечно, использовать TextHeight() и TextWeight(), но эт как-то коряво...может есть другой способ?
(Под курсором имею ввиду не мышиный указатель).


 
RealRascal ©   (2004-02-01 18:44) [1]

Поступило предложение.

Шрифт мемо - Courier New Size

//обрабоотка на OnChange в мемо - если пишешь текст лист бокс
перемещается
procedure TMacroMemo.MemoChange(Sender: TObject);
begin
if List.Visible then SetControlPos(List);
end;

//обработка на нажатие клавиш
procedure TMacroMemo.MemoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var i,y: integer;
s: string;
begin
if Key=VK_ESCAPE then begin
if List.Visible then List.Visible:=false; end;

if (Shift=[ssCtrl]) and (Key=VK_SPACE) then begin
List.Clear;
//заполнение листбокса
...
//
List.Visible:=true; List.ItemIndex:=0; List.SetFocus; end;
end;

//установка позиции текущего контрола (в даннгном случае лситбокса)
procedure TMacroMemo.SetControlPos(Control: TWinControl);
var f: tagPoint;
begin
with Control do begin GetCaretPos(f);
if f.x+Width>=Form.ClientWidth then
Left:=Form.ClientWidth-Width else Left:=f.x;
if f.y+Height>=Form.ClientHeight then
Top:=Form.ClientHeight-Height else Top:=f.y+Memo.Font.Size*2; end;
end;

Спасибо, O.Lookin!

Как я понял, координаты высчитываются исходя из моноширности шрифта и значения, которое возвращает CaretPos.


 
Юрий Зотов ©   (2004-02-01 19:22) [2]

Ого! Внушаить.

Но можно сделать и в одну строку - просто послать сообщение EM_POSFROMCHAR. Детали в справке API.



Страницы: 1 вся ветка

Текущий архив: 2004.02.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
7-80323
pavel_guzhanov
2003-12-08 09:34
2004.02.25
какой монитор установлен в системе


1-79991
Galin
2004-02-13 14:04
2004.02.25
Как объявить константу в классе, чтобы использ при объяв массива?


14-80267
Danilka
2004-02-06 08:33
2004.02.25
Кому-нибудь еще приходят письма от www.ebay.com? :))


14-80089
Zlatov2001
2004-02-06 00:50
2004.02.25
Печать таблиц (StringGrid)


14-80139
Думкин
2004-02-02 06:18
2004.02.25
С днем рождения! 2 февраля.