Главная страница
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.033 c
2-1135921876
LionMen
2005-12-30 08:51
2006.01.22
Возврат параметров из хр. процедуры MSSQL


2-1136379269
VadimSpb
2006-01-04 15:54
2006.01.22
Настройка SQL SERVER EXPRESS


2-1135838204
mss
2005-12-29 09:36
2006.01.22
Ошибка в Interbase


6-1128492766
Mx
2005-10-05 10:12
2006.01.22
Подключение по одному порту, ответ по другому, на основе Indy


2-1136286456
Стелс
2006-01-03 14:07
2006.01.22
Пожалуйста помогите