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

Вниз

Проблема! курсор прыгает в начало.   Найти похожие ветки 

 
mobwar   (2006-01-05 23:18) [0]

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

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


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


 
GanibalLector ©   (2006-01-05 23:42) [1]

Memo1.SelStart ???


 
Fay ©   (2006-01-05 23:50) [2]

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;


 
Fay ©   (2006-01-06 00:01) [3]

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


 
TStas ©   (2006-01-06 01:35) [4]

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


 
Fay ©   (2006-01-06 01:53) [5]

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


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

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


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

Текс... обманул всётаки программу, профи скажут что грубо но работает. Вот что получилось:
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;

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


 
jack128 ©   (2006-01-06 11:32) [8]

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

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


 
jack128 ©   (2006-01-06 11:33) [9]

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

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


 
Fay ©   (2006-01-06 11:39) [10]

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


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

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

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

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



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

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

Наверх




Память: 0.49 MB
Время: 0.042 c
14-1135577682
Ega23
2005-12-26 09:14
2006.01.22
Всем привет!


14-1135896255
версия для печати
2005-12-30 01:44
2006.01.22
В бобруйск на зимние каникулы...


2-1136533922
Horror
2006-01-06 10:52
2006.01.22
MessageDlg


14-1136116968
ArtemESC
2006-01-01 15:02
2006.01.22
Интрепретаторы...


14-1134685773
Antip
2005-12-16 01:29
2006.01.22
Delphi 2006, скорость загрузки