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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
6-84474
Юлия
2003-04-20 23:13
2003.06.26
Internet-приложения


6-84496
Akni
2003-04-22 16:18
2003.06.26
Nonblocking Socket в отдельном потоке


1-84124
ray_wagner
2003-06-10 21:13
2003.06.26
Combobox????


1-84354
Rinat
2003-06-16 14:04
2003.06.26
Не могу разобраться с компонентом на основе кнопки


1-84136
REA
2003-06-10 15:16
2003.06.26
Чтение компонента