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

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

Проблема! курсор прыгает в начало. [D7, NT4]


mobwar ©   (2006-01-05 23:18:00) 

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin

Memo1.Text:= StringReplace(Memo1.Text, 'ja', 'h',
                         [rfReplaceAll, rfIgnoreCase]);


Принцип простой, автоматически при написании текста, сочетание
ja меняется на h. Всё работает :) но как всегда есть но.
После изменения, курсор прыгает в начало строки и если писать дальше то буква остаётся с правой стороны курсора. Как предотвратить перескок курсора. Надо чтобы писалось как будто ничего и не происходило. Просто менялись буквы. Спасибо!


Fay   (2006-01-06 11:44:00) [1]

2 jack128 ©   (06.01.06 11:33) [9]
2 TStas ©   (06.01.06 1:35) [4]

Так, меня уже колбасит. Забудем про [5] и [10] - я как-то по диагонали посты читаю, видимо.

З.Ы.
Я, правда, не понял, каким боком всплыл OnKeyUp?


Fay   (2006-01-06 11:39:00) [2]

2 jack128 ©   (06.01.06 11:33) [9]
[2] не читал?


jack128   (2006-01-06 11:33:00) [3]

jack128 ©   (06.01.06 11:32) [8]
Ты попробуй его изменить,

Имеется в виду тот Key, который в OnKeyUP передается..


jack128   (2006-01-06 11:32:00) [4]

Fay ©   (06.01.06 1:53) [5]
Серьёзно? Круто! А как тогда объяснить то, что Key передаётся как var?

И что? Ты попробуй его изменить, от этого что, содержимое мемо изменится? ;)


mobwar   (2006-01-06 10:47:00) [5]

Текс... обманул всётаки программу, профи скажут что грубо но работает. Вот что получилось:
procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
Memo1.Text:= StringReplace(Memo1.Text, 'ja', 'h',
                         [rfReplaceAll, rfIgnoreCase]);
Memo1.SelStart:=+2;
Memo1.SelStart:=-2;
end;

Спасибо за поддержку:)
Может кому пригодится.


mobwar   (2006-01-06 10:24:00) [6]

Ух спасибо, хоть есть информация к размышлению :)
По началу совсем скис.. теперь будем думать.


Fay   (2006-01-06 01:53:00) [7]

2 TStas ©   (06.01.06 1:35) [4]
Серьёзно? Круто! А как тогда объяснить то, что Key передаётся как var?


TStas   (2006-01-06 01:35:00) [8]

>procedure TForm1.Memo1KeyPress
, а надо бы в TForm1.Memo1KeyUp. Событие OnKeyPress происходит ДО того, как символ нарисовался в меме, а OnKeyUp - после


Fay   (2006-01-06 00:01:00) [9]

Проверку на SelStart=0 забыл. Но это же не мои проблемы, верно? 8)


Fay   (2006-01-05 23:50:00) [10]

2 mobwar   (05.01.06 23:18)
Грубовато, конечно, зато бесплатно 8)
procedure TForm1.Memo1KeyPress(Sender : TObject; var Key : Char);
begin
 if (Sender is TMemo) then
   with TMemo(Sender) do
     if (SelLength = 0) and (Key in ['a', 'A']) and (Text[SelStart] in ['j', 'J']) then
       begin
         Perform(WM_CHAR, VK_BACK, 0);
         Key := 'h';
       end;
end;


GanibalLector   (2006-01-05 23:42:00) [11]

Memo1.SelStart ???


Наверх

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