![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическое создание и удаление полей
DelphiLexx © (2007-03-27 13:16:00)Я хочу сделать так:
среди всех полей у меня есть динамическое число полей(точное число этих полей определяется на этапе работы программы) типа fkCalculated. Перед открытием FIBDataSet'a в BeforeOpen создается нужное число таких полей. Остальные поля (ME_ID, ME_NAME, ME_DESCRIPTION)
формируются из БД после выполнения FIBDataSet.Open.
Но вместо этого у меня получается следующее:
когда я начинаю обращаться к FIBDataSet.FieldByName('ME_NAME').AsString мне выдается сообщение что поле ME_NAME не найдено. Если перед открытием DataSet'a в BeforeOpen не создавать вычисляемые поля, то обращение к FIBDataSet.FieldByName('ME_NAME').AsString ошибок не вызывает.
Так как же правильно создавать в real-time расчитываемые поля.
Johnmen (2007-03-27 14:59:00) [1]http://sql.ru/forum/actualthread.aspx?tid=410050
evvcom (2007-03-27 14:42:00) [2]> [5] ANB © (27.03.07 14:34)
Эт точно! (c) Сухов.
ANB (2007-03-27 14:34:00) [3]
> а ты думал программировать это только компоненты на форму
> класть?
Хороший программист - ленивый программист. Он заранее помудохается с классами и компонентами, чтобы потом только кнопки класть. :)
evvcom (2007-03-27 14:19:00) [4]Ну необязательно. Я, например, наследника написал и горя теперь не знаю.
procedure TMyDataSet.CreateFields;
begin
inherited CreateFields;
if not (csDesigning in ComponentState) then begin
DoDataSetEvent(dseCreateFields);
if Assigned(FOnCreateFields) then
FOnCreateFields(Self);
end;
end;
Идея, надеюсь, понятна?
Jan (2007-03-27 14:12:00) [5]
> Т.е. все поля я должен создать в ручную.
а ты думал программировать это только компоненты на форму класть?
DelphiLexx (2007-03-27 13:41:00) [6]
> Перед открытием руками формировать список TFielddefs после
> чего руками создавать зкземпляры.
Т.е. все поля я должен создать в ручную.
Reindeer Moss Eater (2007-03-27 13:21:00) [7]Перед открытием руками формировать список TFielddefs после чего руками создавать зкземпляры.