Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Как реализовать вывод "р.", "$", в гриде?   Найти похожие ветки 

 
guest_Dmitry   (2004-08-18 08:52) [0]

Понадобилось выводить в гриде суммы в нескольких валютах, т.е. 1500р., 300$ и т.д. Подскажите, пожалуйста, как лучше реализовать это.


 
Мюмзик в мове   (2004-08-18 09:01) [1]

реализуй у полей свойства OnGetText


 
Anatoly Podgoretsky ©   (2004-08-18 09:01) [2]

А грид, это что такое?


 
Мюмзик в мове   (2004-08-18 09:02) [3]

Anatoly Podgoretsky ©  
наверное производная гриба и гида


 
guest_Dmitry   (2004-08-18 09:03) [4]

>Мюмзик в мове   (18.08.04 09:01) [1]

ок, сейчас попробую..

>Anatoly Podgoretsky ©   (18.08.04 09:01) [2]

имел в виду DBGrid.


 
guest_Dmitry   (2004-08-18 09:55) [5]

Может чего не так делаю, но когда пишу:


procedure TForm1.pFIBDataSet1ICOSTGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
if pFIBDataSet1ICOST.AsFloat < 50 then
 pFIBDataSet1ICOST.DisplayFormat := "#,##0.00р" else
   pFIBDataSet1ICOST.DisplayFormat := "#,##0.00$";
end;


идет постоянная прорисовка грида..


 
guest_Dmitry   (2004-08-18 09:58) [6]

гм... до самого дошло, опять данное событие вызывается... может есть еще какой способ?


 
KSergey ©   (2004-08-18 09:59) [7]

Меняешь свойство, которое заставляет грид весь перерисовываться.
Надо просто готовый результат присваивать переменной Text, не трогая свойства грида.


 
guest_Dmitry   (2004-08-18 10:04) [8]

>KSergey ©   (18.08.04 09:59) [7]

и обрабатывать событие onPost, чтобы передать в базу значение в формате Float?


 
KSergey ©   (2004-08-18 10:06) [9]

> [8] guest_Dmitry   (18.08.04 10:04)
> и обрабатывать событие onPost, чтобы передать в базу значение
> в формате Float?

Не понял...


 
guest_Dmitry   (2004-08-18 10:09) [10]

>KSergey ©   (18.08.04 10:06) [9]

Б.д. Interbase 6.0. В гриде данные редактируются, в базе хранятся в поле типа numeric(15, 2). Если через переменную Text делать, то при посте в базу будет передаваться текстовое значение.. Или я ошибаюсь?


 
KSergey ©   (2004-08-18 10:49) [11]

Ошибаетесь
А вот как будет на самом деле (в смысле во время редактировния) - что-то я даже не скажу.


 
Мюмзик в мове   (2004-08-18 10:54) [12]

посмотри параметры процедуры и будет понятно, когда какой текст выдавать, чтоб ексепшинов не вылезло


 
guest_Dmitry   (2004-08-18 11:02) [13]

>KSergey ©   (18.08.04 10:49) [11]
>Мюмзик в мове   (18.08.04 10:54) [12]

попробовал сейчас в text передавать готовое значение - так и есть, появляется ексепшин, что нужен флоат а не текст. получается все-таки onPost обрабатывать нужно...


 
Romkin ©   (2004-08-18 11:07) [14]

НУ зачем такие сложности? Сделай вычисляемое поле, его и показывай. А присвоение значения ему - в OnCalcFields. И все.


 
Мюмзик в мове   (2004-08-18 11:09) [15]

guest_Dmitry  
получается все-таки onPost обрабатывать нужно...
не, лучше сделать обработчик на OnPostError )

--
мне бы ваши мучения


 
Bless ©   (2004-08-18 11:14) [16]

Сделал простенький пример. Вроде бы все работает.
Не подойдет?
Это текст обработчика OnGetText

if displaytext then
  text:=q.FieldByName("money").AsString+"$"
  else text:= q.FieldByName("money").AsString;


 
guest_Dmitry   (2004-08-18 11:23) [17]

>Romkin ©   (18.08.04 11:07) [14]

это идея, сейчас попробую...

>Bless ©   (18.08.04 11:14) [16]

делал я так, при посте в базу text сыпется, а нужен float


 
Bless ©   (2004-08-18 11:25) [18]


> делал я так, при посте в базу text сыпется, а нужен
> float


Странно. У меня в примере Money - целого типа и все нормально.
А приведи-ка свой код обработчика


 
guest_Dmitry   (2004-08-18 11:29) [19]

Text := FloatToStr(pFIBDataSet1ICOST.AsFloat) + "$";


 
Bless ©   (2004-08-18 11:33) [20]


> Text := FloatToStr(pFIBDataSet1ICOST.AsFloat) + "$";


Это немножко отличается от моего, эге ж?
Попробуй как у меня
if DisplayText then
 Text := pFIBDataSet1ICOST.AsString + $"
else
 Text :=  pFIBDataSet1ICOST.AsString;

Правда так значок на время редактирования поля исчезает.


 
Danilka ©   (2004-08-18 11:33) [21]

Самый лучший вариант, на мой взгляд - отдельная колонка отображающая код валюты.


 
guest_Dmitry   (2004-08-18 11:38) [22]

>Bless ©   (18.08.04 11:33) [20]

сейчас попробую...

>Danilka ©   (18.08.04 11:33) [21]

на самом деле так оно и есть - отдельная колонка с кодом валюты. Только выглядит это как-то не совсем хорошо...


 
Мюмзик в мове   (2004-08-18 11:40) [23]

FloatToStr(pFIBDataSet1ICOST.AsFloat)
чувствуются попытки автора усложнить сущее


 
КаПиБаРа ©   (2004-08-18 11:42) [24]


> Понадобилось выводить в гриде суммы в нескольких валютах,
> т.е. 1500р., 300$

А как вместо 300$ написать 9000р.?

По моему нужно писать в разные колонки разные валюты или в одной колонке сумму в другой тип валюты.


 
guest_Dmitry   (2004-08-18 11:44) [25]

>Мюмзик в мове   (18.08.04 11:40) [23]

каюсь, есть такое... :)

>КаПиБаРа ©   (18.08.04 11:42) [24]

осталась самая малось - убедить директора в этом...


 
guest_Dmitry   (2004-08-18 12:25) [26]

>Bless ©   (18.08.04 11:33) [20]

спасибо, действительно работает.



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.057 c
3-1092168310
Zif
2004-08-11 00:05
2004.09.05
Можно ли в ADOQuery соединить несколько таблиц?


8-1087893466
PenguinX
2004-06-22 12:37
2004.09.05
И ещё раз FastDIB :)


3-1092135216
serga
2004-08-10 14:53
2004.09.05
interbase +KeyList.Strings


3-1091984810
Shade
2004-08-08 21:06
2004.09.05
Распечатка в строку в FastReports.


1-1093017618
Скромный инкогнито
2004-08-20 20:00
2004.09.05
Как написать маленькую программу?