Текущий архив: 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.5 MB
Время: 0.009 c