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

Вниз

grid   Найти похожие ветки 

 
Ann   (2003-05-29 10:25) [0]

Добрый день!
Подскажите пожалуйста,как в гриде сделать вычисляемое поле, чтобы при заполнении грида одно из полей преобразовывалось через мою процедуру..
Вопрос наверное простой, просто надобности раньше не было в этом :)


 
Zacho   (2003-05-29 10:32) [1]


> Ann © (29.05.03 10:25)

Не совсем понял вопрос, но наверное - в датасете создать calculated поле и написать обработчик OnCalcFields ?


 
Lord Warlock   (2003-05-29 10:33) [2]

Событие OnDrawCell


 
Ann   (2003-05-29 10:39) [3]

если напишу через DrawColumnCell должно же работать?
и еще глупый вопрос... как написать - записать в столбец допустим 13 следующее значение?
FrSpr.DBGrid_kontr.Columns[13] а дальше (глупо конечно.. но не соображу.. ) :(


 
Danilka   (2003-05-29 10:44) [4]

а все-таки, почему именно в гриде, почему не использовать стандартную, отличную возможнось: делать вычисляемые поля в датасете?


 
stone   (2003-05-29 10:46) [5]


> Ann © (29.05.03 10:39)


Данные пишуться в поле НД, а не в грид, если же обращаться через грид, тогда:
FrSpr.DBGrid_kontr.Columns[13].Field.Value :=


 
Ann   (2003-05-29 10:47) [6]


> Danilka © (29.05.03 10:44)

а как? и там будет возможность вызвать процедуру преобразования из программы?


 
Zacho   (2003-05-29 10:48) [7]


> Ann © (29.05.03 10:25)
> Подскажите пожалуйста,как в гриде сделать вычисляемое поле,
> чтобы при заполнении грида одно из полей преобразовывалось
> через мою процедуру..

Если надо, чтобы при вводе значение поля как-то преобразовывалось, и в датасете сохранялось уже преобразованное - то смотри TField.OnSetText А DBGrid здесь вообще ни причем, он только отображает данные из датасета.


 
Ann   (2003-05-29 10:51) [8]

stone ©
мне не нужно записывать в нд, мне нужно просто преобразование на экран, а нд должно оставаться таким как и раньше..
пишу в DrawColumnCell
adres_preob; //вызов процедуры преобразования
FrSpr.DBGrid_kontr.Columns[13].Field.value:=stroka_out;//передаю преобразованную строку
пишет ошибку..
может кто подскажет почему?


 
Zacho   (2003-05-29 10:54) [9]


> Ann © (29.05.03 10:51)

Тогда смотри TField.OnGetText - и в нем и делай преобразование. А если это поле не нужно редактировать - то просто создай calculated поле в датасете.


 
Danilka   (2003-05-29 10:54) [10]

Ann © (29.05.03 10:51)
для твоих целей, лучше все-таки вычисляемые поля.

добавляешь в датасет вычисляемое поле, а для его заполнения пишешь обработчик события датасета OnCalcFields.
посмотри хелп по вычисляемым полям и по этому событию.

Но, наверняка, кто-нибудь девушке поможет с примерами :))


 
stone   (2003-05-29 10:56) [11]


> FrSpr.DBGrid_kontr.Columns[13].Field.value:=stroka_out;//передаю
> преобразованную строку


Здесь ты присваиваешь полю значение, которое содержится в stroka_out


> мне не нужно записывать в нд, мне нужно просто преобразование
> на экран, а нд должно оставаться таким как и раньше..
> пишу в DrawColumnCell


if Column.Index = 13 then
...


 
Ann   (2003-05-29 11:01) [12]

Danilka © (29.05.03 10:54)
а как добавить в нд вычисляемое поле? :)


 
Lord Warlock   (2003-05-29 11:06) [13]

гм, а я сначала подумал что речь идет об обычном гриде.

Для баз данных действительно лучшим вариантом является использование вычисляемых полей.

Счелкаем правой кнопкой по компоненту (Table или Query), с которым соединена сетка. Заходим в Fields Editor и добавляем существующие поля. Там же добавляем новое поле, пишем имя, нужный тип и ставим радиокнопку Calculated.

Далее переходим в инспектор объектов, и щелкаем на событии OnCalcFields Table или Query.

Пишем нужный код

procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
DataSet["ИмяВычисляемогоПоля"]:=DataSet["ИмяСуществующегоПоля1"]+DataSet["ИмяСуществующегоПоля2"];
end;


или же присваивается результат собственной функции или что угодно.


 
Ann   (2003-05-29 11:12) [14]

Lord Warlock © (29.05.03 11:06)
спасибо ! :)


 
Ann   (2003-05-29 11:34) [15]

всем большое спасибо. все получилось :)



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

Форум: "Базы";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.026 c
1-84187
Юнгман
2003-06-11 14:54
2003.06.26
ComboBox


3-83929
AlexA
2003-05-30 12:06
2003.06.26
Как программным способом изменить ширину MEMO в FastReporte.


14-84591
Jam
2003-06-08 23:29
2003.06.26
Как запустить другое приложение


14-84735
Дремучий
2003-06-05 18:54
2003.06.26
Кто из форумцев пользуется клиентом форума? Каким?


1-84140
ngczn
2003-06-10 13:27
2003.06.26
маска ввода





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский