Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

Координаты кусора в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.03 c
1-79789
DimonNew
2004-02-11 17:06
2004.02.25
ProgressBar


4-80345
Mohamed
2003-12-19 02:47
2004.02.25
Pomogite c Button1Click:SetTimer


1-79746
Bers01
2004-02-12 10:46
2004.02.25
Как в TListBox вставить элементы типа TCheckBox или TComboBox ...


1-79951
Matrex
2004-02-13 19:49
2004.02.25
Focus


3-79671
Ivanesus
2004-01-30 14:26
2004.02.25
IB+DBGrid текущая запись, как лучше поступить?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский