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

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

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

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

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

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

Доброе утро!
Имеется StringGrid. Мне надо, что бы числа в нём разбивались по порядку и имели только два знака после запятой. Пытаюсь использовать Format Float
В событие OnSetEditText
Код:
begin
if Pos(' ',StringGrid1.Cells[StringGrid1.Col,StringGrid1.row])>0 then begin;
prbl:=StringGrid1.Cells[StringGrid1.Col,StringGrid1.row];
while Pos(' ',prbl)> 0 do Delete(prbl,Pos(' ',prbl),0);
StringGrid1.Cells[StringGrid1.Col,StringGrid1.row]:=prbl;
end;
....
//Вычисления
....
if Length(StringGrid1.Cells[ACol,ARow])>0 then
begin
frm:=StrToFloat(StringGrid1.Cells[StringGrid1.Col,StringGrid1.row]);
StringGrid1.Cells[ACol,ARow]:=FormatFloat('###,###.00;',frm);
end;
После этого не получается ввести больше одного знака в ячейку.
Gorin вне форума Ответить с цитированием
Старый 25.09.2007, 10:45   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

procedure TForm1.StringGrid1GetEditMask(Sende r: TObject; ACol,
ARow: Integer; var Value: String);
begin
Value:='!0.00;1;';
end;
SERG1980 вне форума Ответить с цитированием
Старый 25.09.2007, 10:57   #3
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Спасибо, только в таком случае, ввести можно только 1 знак до запятой и два после. К сожалению это меня не устраивает Может я и не прав, но наксолько я понял Маска имеет фиксированное кол-во знаков, а я не знаю какие числа будут вводиться. Более того, проблем с конвертацие становиться еще больше
Gorin вне форума Ответить с цитированием
Старый 25.09.2007, 11:45   #4
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

i:=FormatFloat('#.##',g);
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Старый 25.09.2007, 12:17   #5
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Pitbull Посмотреть сообщение
i:=FormatFloat('#.##',g);
Хм, проблема осталась, только теперь и двух знаков после запятой нету.
Gorin вне форума Ответить с цитированием
Старый 25.09.2007, 17:49   #6
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от Gorin Посмотреть сообщение
Хм, проблема осталась, только теперь и двух знаков после запятой нету.
procedure TForm1.Button1Click(Sender: TObject);

begin
frm:=123.145666;
StringGrid1.Cells[1,1]:=formatFloat('#.##',frm);
end;
end.

результат округляется.... до 2-го разряда после запятой...
ну как я понимаю єту команду formatFloat();
сначала указіваешь что добавлять в старший разряд ,если будет переполнение, потом количество разрядов, а потом количество после запятой...Например:
frm:=1523.145666;
StringGrid1.Cells[1,1]:=formatFloat('33,#####.##',frm);
відаст: 331 523.15
если написать просто formatFloat('#,#.##',frm); то будет само разбивать на разряді.... например: 1333444555.12345 будет: 1 333 444 555.12
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 25.09.2007 в 18:12.
Pitbull вне форума Ответить с цитированием
Старый 25.09.2007, 18:00   #7
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Проблема в другом, что невозможно, ввести в ячейку больше одного знака. В чем может быть проблема?
Gorin вне форума Ответить с цитированием
Старый 25.09.2007, 18:13   #8
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от Gorin Посмотреть сообщение
Проблема в другом, что невозможно, ввести в ячейку больше одного знака. В чем может быть проблема?
ааа ну EditMask наверное..Извини...

ага...а такого нет там=)
ща посомтрю....У сотрудниці днюха... гоню
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 25.09.2007 в 18:17.
Pitbull вне форума Ответить с цитированием
Старый 25.09.2007, 18:16   #9
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Pitbull Посмотреть сообщение
ааа ну EditMask наверное..Извини...
Нет, EditMask нету. В том-то и дело. Вроде, по моим соображенимя с кодом все нормально, однако получается ограничение на один символ.
Gorin вне форума Ответить с цитированием
Старый 25.09.2007, 18:18   #10
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от Gorin Посмотреть сообщение
Нет, EditMask нету. В том-то и дело. Вроде, по моим соображенимя с кодом все нормально, однако получается ограничение на один символ.
а если его в другой компонент вівести, то значение не обрезается?
ну СтрингГриду всеравно что отображать, он отображает стринговіе значения....
Т.ч тут нужно форматировать значение значения(float) - frm...
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 25.09.2007 в 18:43.
Pitbull вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форматирование ячеек shmelvs Microsoft Office Excel 6 24.07.2008 10:24
Форматирование текста MAcK Общие вопросы Delphi 3 03.04.2008 11:38
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных Белка Помощь студентам 3 27.10.2007 11:53
Условное форматирование Asu Microsoft Office Excel 2 18.10.2007 10:14
форматирование таблицы zetrix Microsoft Office Excel 0 30.10.2006 19:44