Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Немигающая каретка: возможно ли это?


lookin ©   (2005-09-10 19:39:00) 

Сабж...


lookin   (2005-09-10 23:13:00) [1]

[12] Virgo_Style ©   (10.09.05 22:34)
>>То есть, если не пытаться сделать ее немигающей, то она мигает, но видна
>>как раз-таки все то время, когда и где должна быть?

Как раз если сделать ее "немигающей" путем [1], то она просто исчезает при вводе любого символа, хотя дол ввода остается немигающей


Virgo_Style   (2005-09-10 22:34:00) [2]

lookin ©   (10.09.05 22:15) [11]

То есть, если не пытаться сделать ее немигающей, то она мигает, но видна как раз-таки все то время, когда и где должна быть?
Хм... Странно...


lookin   (2005-09-10 22:15:00) [3]

[10] Virgo_Style ©   (10.09.05 22:13)
>>При вычислении координаты каретки она точно не выходит за пределы поля ввода?

Абсолютно, она может оказаться вне поля зрения, но всегда в поле ввода...

Вообще у меня даже все проще, при наборе текста в видимой области каретка мигает (или исчезает, при миллисекундах оченна больших), но появляется в точности там, где надо...


Virgo_Style   (2005-09-10 22:13:00) [4]

Хм, получил похожий эффект.

procedure TForm1.Memo1Change(Sender: TObject);
var p:TPoint;
begin
 GetCaretPos(p);
 SetCaretPos(p.x-10,p.y);
end;


При вводе символа в тот момент, когда каретка в начале строки, она стала исчезать (что, в принципе, логично).
При вычислении координаты каретки она точно не выходит за пределы поля ввода?


lookin   (2005-09-10 21:41:00) [5]

[7] Virgo_Style ©   (10.09.05 21:37)

Что любопытно - в моем окошке каретка исчезает после ввода символа, хотя в дельфях - остается.... Почему бы это?


lookin   (2005-09-10 21:39:00) [6]

[7] Virgo_Style ©   (10.09.05 21:37)

Может я чего-то не так делаю?


Virgo_Style   (2005-09-10 21:37:00) [7]

Практически весь мой код содержится в [1] %-)
Еще поставил SetCaretPos в Memo.OnChange, вот и все.

Может, я чего неправильно делаю, потому и работает? :o)


lookin   (2005-09-10 21:17:00) [8]

[5] Zeqfreed ©   (10.09.05 21:09)

Например, если это что-то объяснит:

//создание каретки
procedure TMacro.PaintCaret;
begin
 if CreateCaret(Window.Handle,0,2,Step.y) then begin
 ShowCaret(Window.Handle);
 SetCaretPos(LeftMargin,0);
 SetCaretBlinkTime(300000);
 end;
end;

//сдвиг каретки при вводе символа
procedure TMacro.WindowKeyPress(Sender: TObject; var Key: Char);
begin
 GetCaretPos(p);
 ...вычисляется новое значение p
 SetCaretPos(p.x,p.y);
end;


Zeqfreed   (2005-09-10 21:09:00) [9]

lookin ©   (10.09.05 20:53) [4]
Virgo_Style ©   (10.09.05 20:34) [3]
Коды в студию, для сравнения :)


lookin   (2005-09-10 20:53:00) [10]

[3] Virgo_Style ©   (10.09.05 20:34)

Эх, у меня выявляет... Т.е. я так считаю, судя по видимому...


Virgo_Style   (2005-09-10 20:34:00) [11]

lookin ©   (10.09.05 20:16) [2]

Хм... Это было бы неприятно :-) А откуда это следует? Я ничего такого не нашел, и эксперимент вроде ничего такого не выявляет...


lookin   (2005-09-10 20:16:00) [12]

[1] Virgo_Style ©   (10.09.05 20:08)

Ну, насколько я понял, SetCaretPos сбрасывает состояние каретки на обратное.


Virgo_Style   (2005-09-10 20:08:00) [13]

Насколько я понимаю, после SetCaretBlinkTime(MaxInt);она не погаснет 24 дня. Этого мало? %-)


Наверх

Титульная страница Поиск, карта сайта Написать письмо