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

Вниз

Как вставить в середину Edit а символ -   Найти похожие ветки 

 
AndreySoft ©   (2003-08-28 11:18) [0]

Мне нужно так:
При наборе номера телефона в Edit, когда кол-во символов становится равным 5,6,7 или 11, то между цифрами должен появляться символ - . Я обрабатываю это в OnKeyPress.
Только проблема в том, что после вставки символа "минус", курсор прыгает в позицию где вставил минус и продолжение набора номера телефона уже бессмыслено. Как бы сделать так, чтобы после вставки минуса курсор опять возвращался в конец строки Edit"а.
Заранее, всем спасибо!


 
Е-Моё имя ©   (2003-08-28 11:21) [1]

сделай так, как будто ты нажал ->
sendmessage например


 
y-soft ©   (2003-08-28 11:29) [2]

AndreySoft © (28.08.03 11:18)

Вообще странно, зачем вставлять тире в номер телефона, AT-команды все равно его игнорируют...

Если же очень нужно, то можно вставить по окончанию ввода в Edit, например в событии OnExit...


 
AndreySoft ©   (2003-08-28 11:29) [3]

Не понял! Как вообще можно нажать sendmessage?


 
AndreySoft ©   (2003-08-28 11:32) [4]

y-soft © (28.08.03 11:29) [2]
Ты не понял, прога предназначена не для дозвона, а типа адресной книги.
Нет, по событию OnExit не пойдёт, не так престижно будет выглядеть, мне нужно именно в реальном времени.


 
Skier ©   (2003-08-28 11:33) [5]

Может быть стоит TMaskEdit использовать ?


 
y-soft ©   (2003-08-28 11:35) [6]

AndreySoft © (28.08.03 11:32) [4]

Тогда, если не охота писать свой компонент - Skier © (28.08.03 11:33) [5]


 
Е-Моё имя ©   (2003-08-28 11:35) [7]

AndreySoft © (28.08.03 11:29)
Не понял! Как вообще можно нажать sendmessage?

))))))))))))))
нажать стрелку вправо ай мент
для этого можно например использовать sendmessage


 
AndreySoft ©   (2003-08-28 11:36) [8]

Э, нет! МаскЭдит ващще выглядит по убогому.
Ты в него ещё ничего не вводил, а он тебе уже тире понаставил.


 
AndreySoft ©   (2003-08-28 11:39) [9]

Е-Моё имя © (28.08.03 11:35) [7]
Можешь показать пример нажатия кнопки вправо с использованием sendmessage


 
y-soft ©   (2003-08-28 11:40) [10]

Тогда принудительно переводите курсор в конец текста, Е-Моё имя © дал верную подсказку. Но у Вас вылезет еще одна проблема - пользователь ведь может удалить вставленные тире...


 
ZoKr   (2003-08-28 11:42) [11]


> сделай так, как будто ты нажал ->
> sendmessage например

Он имеет в виду имитацию нажатия кнопки вправо, а вообще попробуй
так:
SendMessage(Edit1.Handle,WM_KEYDOWN,VK_END,0);


 
AndreySoft ©   (2003-08-28 11:44) [12]

y-soft © (28.08.03 11:40)
Как только кол-во символов достигнет определённого кол-ва, автоматически всё повставляется, и не важно будет пользователь удалять тире или нет.
Меня интересует, как осуществить принудительный перевод курсора в конец текста?


 
Е-Моё имя ©   (2003-08-28 11:45) [13]

мда....


 
y-soft ©   (2003-08-28 11:46) [14]

ZoKr (28.08.03 11:42) [11] или почитайте в справке про EM_SETSEL


 
AndreySoft ©   (2003-08-28 11:54) [15]

Всё, я понял уже! Спасибо всем!


 
Anatoly Podgoretsky ©   (2003-08-28 11:57) [16]

SelStart не поможет?


 
AndreySoft ©   (2003-08-28 12:20) [17]

Anatoly Podgoretsky © (28.08.03 11:57) [16]
Я думаю нет! И вообще зачем его тут применять?
Мне просто надо поместить курсос в конец Edit"а.


 
Е-Моё имя ©   (2003-08-28 12:27) [18]

>>Я думаю нет!
зря


 
AndreySoft ©   (2003-08-28 12:31) [19]

>> Е-Моё имя ©
Ты меня уже достал повторением моих слов!


 
Е-Моё имя ©   (2003-08-28 12:32) [20]

AndreySoft © (28.08.03 12:31)
>> Е-Моё имя ©
Ты меня уже достал повторением моих слов!


стыдно штоли за свои слова?


 
AndreySoft ©   (2003-08-28 12:36) [21]

Да нет, блин! Ты так смешно их применяешь...


 
Е-Моё имя ©   (2003-08-28 12:40) [22]

>>Ты так смешно их
это ты их смешно применяешь
я их смешно повторяю ;))))))))))))))))


 
AndreySoft ©   (2003-08-28 12:42) [23]

Да ты уже достал, не гони пургу!


 
Е-Моё имя ©   (2003-08-28 12:45) [24]

>>ты уже достал
у меня руки длииииинные!!!!
про ноги ваще малчу
)))))


 
AndreySoft ©   (2003-08-28 12:48) [25]

Да ты ещё оказывается и мутант


 
VAleksey ©   (2003-08-28 13:48) [26]

Держи. Сыровато правда, но сойдет.
procedure TForm1.Edit1Change(Sender: TObject);
const Mask = "#-###-###-##-##";
var
tStr:String;
i:Integer;
begin
With Sender as TEdit do
begin
tStr := Text;
if Length(tStr) >= Length(Mask) Then
begin
if Length(tStr) > Length(Mask) then
begin
SetLength(tStr,Length(tStr)-1);
Text := tStr;
SelStart := Length(tStr);
end;
Exit;
end;
for i:=1 to Length(tStr) do
begin
if (Mask[i] = "-") and (tStr[i] <> "-") then
Insert("-",tStr,i);
end;
Text:=tStr;
SelStart := Length(tStr);
end;
end;


 
AndreySoft ©   (2003-08-28 14:05) [27]

>>VAleksey © (28.08.03 13:48) [26]

Спасибо! Это действительно то что мне нужно!
Решение найдено!


 
VAleksey ©   (2003-08-28 14:25) [28]


> AndreySoft ©

Это все потому, что я знаю, что такое строка.

PS
Учти, что пользователь может начать редактировать Edit с середины, тогда тебе надо будет запоминать позицию SelStart и отслеживать кол-во вставок слева и справа от этой позиции, чтобы потом правильно ее вернуть.


 
AndreySoft ©   (2003-08-28 14:30) [29]

Я это учёл, и доработал твой вариант.
Ещё раз, спасибо за помощь!



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

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

Наверх




Память: 0.53 MB
Время: 0.017 c
14-33811
Vlad Oshin
2003-08-25 13:23
2003.09.11
WinXPPro два вопроса.


14-33765
Igor__
2003-08-23 11:01
2003.09.11
Квантизация цветов


3-33472
Zelius
2003-08-19 20:02
2003.09.11
Как очистить BLOB поле в таблице?


1-33638
Кодер
2003-08-30 14:20
2003.09.11
Чтение свойств объектов


6-33702
odyssey
2003-07-10 09:56
2003.09.11
TWebBrowser