Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.11;
Скачать: [xml.tar.bz2];

Вниз

Как вставить в середину 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.014 c
4-33852
Th
2003-07-08 11:00
2003.09.11
Искусственный вызов Window Menu приложения


14-33803
изм
2003-08-22 13:01
2003.09.11
не работает Основная


4-33855
3223(jab)
2003-07-14 12:15
2003.09.11
CreateFileMapping всё работает просто замечтательно, почти.


14-33758
reticon
2003-08-24 12:09
2003.09.11
Использование АОН на линии с блокиратором


3-33464
Woland
2003-08-20 22:50
2003.09.11
Индексы paradox-таблиц





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский