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

Вниз

Как создать вычисляемое поле в run-time?   Найти похожие ветки 

 
DmitryNekl   (2005-02-07 09:51) [0]

Здравствуйте, мастера! Надеюсь на Вашу помощь.

Код создания формы:

var phones: TClientDataSet;

procedure TForm1.FormCreate(Sender: TObject);

function CreateCalcField(const AFieldName: string; AFieldClass: TFieldClass; ASize: Word): TField;
begin
 Result := phones.FindField(AFieldName);
 with Result do
 begin
   FieldName := AFieldName;
   if (Result is TStringField) or (Result is TBCDField) or
     (Result is TBlobField) or (Result is TBytesField) or
     (Result is TVarBytesField) then
   begin
     Size := ASize;
   end;
   Calculated := True;
   //DataSet := phones; //пробовал расскомментировать
   //Name := phones.Name + AFieldName; // тоже пробовал
 end;
end;

begin
 ...
 phones.OnCalcFields:=CalcFieldCalc;
 if not FileExists(phones.FileName) then
 begin
   phones.FieldDefs.Clear;
   phones.FieldDefs.Add("id", ftInteger);
   phones.FieldDefs.Add("vid", ftInteger);
   phones.FieldDefs.Add("number", ftString, 20);
   phones.FieldDefs.Add("Calcul", ftString, 20);
   phones.CreateDataSet;
 end;

 CreateCalcField("Calcul", TStringField, 20);

 phones.Open;
 phones.SaveToFile();

Вот в таком виде вываливается на третьей с конца строчке вываливается по Access Violation. Если третью с конца строчку перенести в конец, то вываливается с сообщением "Не могу выполнить операцию на открытом датасете".

Подскажите, пожалуйста, в чем ошибка? И как создать-таки вычисяемое поле в моем случае?


 
Johnmen ©   (2005-02-07 10:09) [1]

Сначала создаётся поле, потом добавляется в коллекцию.
with TStringField.Create(phones) do begin
 FieldName := "YourField";
 FieldKind:= fkCalculated;
 DataSet := phones;  
 Name := Dataset.Name + FieldName;
 .......
 phones.FieldDefs.Add(Name, ftString, 20, false);
 end;


 
DmitryNekl   (2005-02-07 11:01) [2]

Спасибо огромное, все заработало! :)



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

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

Наверх




Память: 0.47 MB
Время: 0.029 c
9-1102333956
Domowoi
2004-12-06 14:52
2005.03.06
Документация по PowerDraw


3-1107879205
Yurij-7
2005-02-08 19:13
2005.03.06
Update или Insert вот в чем вопрос


8-1100605538
denis24
2004-11-16 14:45
2005.03.06
Информация о картинке отображаемой в image


1-1108965031
VAV
2005-02-21 08:50
2005.03.06
EditControl


8-1100674381
11111
2004-11-17 09:53
2005.03.06
Какие параметры цвета (в системе RGB) стандартной формы?