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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2007, 13:03   #1
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию Ограничение знаков после запятой,StringGrid

Добрый всем день.
Надо мне, чтобы при вводе в ячейку, можно было вводить только два знака после запятой.
я засунул в событие OnKeyPress
...
if Pos(',',Text) <> 0 then begin
if Length(Text)- Pos(',',Text) > 2 then Key := Chr(0);
...
Однако в переменную Text попадает Form1.Caption
Не подскажите как правильно указать, что надо брать текст из текущей ячейки, или подсказать другой способ.
Gorin вне форума Ответить с цитированием
Старый 20.08.2007, 13:07   #2
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
По умолчанию

можно использовать maskedit, и задать маску для ввода
UnD)eaD)Snake вне форума Ответить с цитированием
Старый 20.08.2007, 13:20   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вместо Text пробуй StringGrid.cells[Strinnggrid.col,StringGrid.row]
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2007, 15:11   #4
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Спасибо
Теперь возник вопрос посложнее. Мне надо чтобы цифры в строках делились на порядки. Если это сделать с помощью FormatFloat, то обратно он в Float он уже не конвертирует, соответсвенно вычисление невозможно. Можно ли решить это проблему с помощью EditMask?
Gorin вне форума Ответить с цитированием
Старый 20.08.2007, 15:16   #5
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

THOUSANDSEPARATOR
Alex21 вне форума Ответить с цитированием
Старый 20.08.2007, 15:22   #6
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Простите, но, как я понял, данный параметр лишь задает разделитель, однако все равно необходимо форматировать.
Gorin вне форума Ответить с цитированием
Старый 20.08.2007, 15:25   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Конвертить все равно, но при конвертации THOUSANDSEPARATOR должен учитываться автоматом
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2007, 15:30   #8
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Тогда вопрос, как конверитровать обратно во Float?
Gorin вне форума Ответить с цитированием
Старый 20.08.2007, 15:55   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Например в цикле поубирать из строки THOUSANDSEPARATOR, а потом уже и конвертить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.09.2007, 16:10   #10
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Вот пытаюсь реализовать данную задачу.
THOUSANDSEPARATOR:=' ';
Вот удаление разделителей:
Код:
Procedure TForm1.StringGrid1GetEditText(Sender: TObject; ACol,
  ARow: Integer; var Value: String);
var
prbl:string;
frm:real;
begin
prbl:=StringGrid1.Cells[Acol,Arow];
while Pos(' ',prbl)> 0 do Delete(prbl,Pos(' ',prbl),1);
StringGrid1.Cells[ACol,Arow]:=prbl;
end;
Вот соотвественно форматирование
Код:
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
var
frm:real
begin
... //Вычисления
...
//собственно форматирование
begin
if StringGrid1.Cells[ACol,ARow]<>'' then  begin
frm:=StrToInt(StringGrid1.Cells[ACol,Arow]);
StringGrid1.Cells[ACol,ARow]:=FormatFloat('###0,00;',frm);
end;
end;
В результате вылетает ошибка Stack Overflow. Что неправильно?

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление не нужных знаков после запятой. Alar Общие вопросы Delphi 4 31.05.2012 19:59
как отрегулировать кол-во знаков после запятой, при выведении числа(delphi) photozaz Общие вопросы Delphi 11 10.02.2011 21:20
кол-во знаков после запятой в TEdit Petrucci Общие вопросы Delphi 9 04.07.2008 13:15
Количество цифр после запятой LIEN БД в Delphi 7 03.07.2008 22:12
Сокращение после запятой Romuald Microsoft Office Excel 21 18.12.2007 10:32