В Lazarus новичок, делаю первые попытки воткнуться по аналогии с Delphi. Не получается. Подтолкните пожалуйста в нужном направлении. Тему уже и гуглил, и на форуме искал, и в доках ничего не нашёл. Кажется упускаю что-то очень простое.
Положил на форму TDBGrid, TDataSource, TMemDataSet. Связал их. Заполнил TMemDataSet.FieldDefs - добавил 4 поля с именами, типами и размером у string.
В FormCreate пытаюсь создать и заполнить TMemDataSet. Все компилируется и прогоняется нормалёк. Проблема в том, что грид показывает строки пустыми. Т.е. записи добавлены, имена полей в колонках отображаются, но значений в ячейках нет.
После присвоения значения полю ID тут же пытаюсь проверить его в переменной Test - оно всегда равно 0, как будто там ничего нет. Null при наведении мышки показывает три вопросительных знака ???, а в Evaluate/Modify вообще ничего не показывает.
- Код: Выделить всё
var
I: Integer;
Test: Integer;
Null: Boolean;
begin
Randomize;
mdsItems.CreateTable;
mdsItems.Open;
for I:=1 to 50 do
begin
mdsItems.Append;
mdsItems.FieldByName('ID').AsInteger:=I;
Test:=mdsItems.FieldByName('ID').AsInteger; // Всегда возвращает 0 почему-то
Null:=mdsItems.FieldByName('ID').IsNull;
mdsItems.FieldByName('Title').AsString:='Строка '+IntToStr(I);
mdsItems.FieldByName('Date').AsDateTime:=Now-I;
mdsItems.FieldByName('Number').AsFloat:=Random;
mdsItems.Post;
end;
end;
Вместо AsInteger и аналогичных AsXXX пробовал Value, также пробовал следующими двумя способами
- Код: Выделить всё
mdsItems.SetFields([I, 'Строка '+IntToStr(I), Now-I, Random]); и так пробовал
mdsItems.AppendRecord([I, 'Строка '+IntToStr(I), Now-I, Random]); // последний вариант
Lazarus 0.9.26, FPC 2.2.2