Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2012, 02:01   #1
Mixasnt
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 54
По умолчанию Разбиение едит на разряды

Задача такова:
При вводе в едит цифр, как сделать что бы они автоматически принимали формат типа: 999 999 999 999?
Несколько часов размышлений особо не помогли...
Подскажите пожалуйста,как это сделать?
Mixasnt вне форума Ответить с цитированием
Старый 16.12.2012, 02:05   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

самое простое, использовать TMaskEdit
(он, конечно, не безупречен, но, возможно, Вам подойдёт)

если нужен обязательно TEdit - то нужно заморачиваться с назначением кода на событие - на нажатие клавиш и ручной обработкой (вставкой пробелов в нужные места). Это и сложнее и менее надёжно, но, тем не менее...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.12.2012, 02:07   #3
Mixasnt
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
самое простое, использовать TMaskEdit
(он, конечно, не безупречен, но, возможно, Вам подойдёт)

если нужен обязательно TEdit - то нужно заморачиваться с назначением кода на событие - на нажатие клавиш и ручной обработкой (вставкой пробелов в нужные места). Это и сложнее и менее надёжно, но, тем не менее...
Я пробовал через маску,но тоже не особо получилось...
Mixasnt вне форума Ответить с цитированием
Старый 16.12.2012, 02:11   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Получаете длину вводимого текста, делите на 3, и через каждые 3 знака ставите пробел в строке, остаток так же отбрасываете пробелом.
Человек_Борща вне форума Ответить с цитированием
Старый 16.12.2012, 02:12   #5
Mixasnt
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Получаете длину вводимого текста, делите на 3, и через каждые 3 знака ставите пробел в строке, остаток так же отбрасываете пробелом.
спасибо)
завтра попробую,отпишусь)

если не сложно пример)
Mixasnt вне форума Ответить с цитированием
Старый 16.12.2012, 02:30   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Код:
если не сложно пример)
Если вам лень думать своей головой, зачем вы в программирование подались?

Подсказки:
Используйте mod, div, StrToInt, Length

Описание вверху форума, по ссылке "Основы Delphi".
Человек_Борща вне форума Ответить с цитированием
Старый 16.12.2012, 13:29   #7
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Не не не, зачем придумывать велосипеды, учим матчасть (в лице TFormatSettings).
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
  fs: TFormatSettings;
begin 
  GetLocaleFormatSettings(fs);
  fs.ThousandSeparator := ' '; // пробел
  Edit1.Text := FloatToStr(FloatToIntDef(Edit1.Text, 0), fs)); // не проверял эту строку
end;
phomm вне форума Ответить с цитированием
Старый 16.12.2012, 14:17   #8
Mixasnt
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Код:
если не сложно пример)
Если вам лень думать своей головой, зачем вы в программирование подались?

Подсказки:
Используйте mod, div, StrToInt, Length

Описание вверху форума, по ссылке "Основы Delphi".
Не получается что то,нахожу и целую часть от деления и остаток,но как сформировать новую строку?
Mixasnt вне форума Ответить с цитированием
Старый 16.12.2012, 14:17   #9
Mixasnt
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 54
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Не не не, зачем придумывать велосипеды, учим матчасть (в лице TFormatSettings).
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
  fs: TFormatSettings;
begin 
  GetLocaleFormatSettings(fs);
  fs.ThousandSeparator := ' '; // пробел
  Edit1.Text := FloatToStr(FloatToIntDef(Edit1.Text, 0), fs)); // не проверял эту строку
end;
код что то не работает
Mixasnt вне форума Ответить с цитированием
Старый 16.12.2012, 16:44   #10
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Ага ,так и есть
Код:
Edit1.Text := FloatToStr(StrToFloatDef(Edit1.Text, 0, fs), fs));
Вот эта строка так скорее всего, но не проверял опять же. И пользуйтесь справкой - всё же там написано, не ленитесь, не работает что-то - перепроверьте по справке, пройдитесь по соседним разделам и т.п.

И зарубите на носу - "не работает" это слова бестолкового юзера, если Вы себя к тамим не причисляете, то указывайте всё чётко - в какой момент не работает, при каких условиях, какие ошибки пишутся, что подчёркивает дельфи и т.п.

Последний раз редактировалось phomm; 16.12.2012 в 16:47.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент едит Глеб1991 Помощь студентам 7 05.05.2012 23:28
старшие разряды Михаил2261 Microsoft Office Excel 13 15.10.2010 02:00
Просчет и Едит 4321 Общие вопросы Delphi 15 18.11.2008 21:13
зашифровка едит bmb_66 Компоненты Delphi 2 10.04.2008 11:25
Едит subsonic Общие вопросы Delphi 6 27.01.2008 10:21