Attid писал(а):alexs писал(а):Attid - Не вводи в заблуждение - DBGrid умееет в виде чекбоксов показывать колонки - для этого в колонке необходимо смотреть свойство ButtonStyle - конкретно cbsCheckboxColumn.
я ничаянно =) все равно настаиваю что в данной задаче БД как собаке пятая лапа
Вот
здесь я давал ссылку на
черновик диплома.
Для обмена данными БД действительно не нужна. Но для внутренней работы, уверен, самое то. Если вас не затруднит глянуть мою писанину, то, возможно, вы сможете подсказать более приемлемый вариант.
Тупым поиском по всем файлам (FAR рулит "нипадецки") нашел /lazarus/docs/html/lcl/grids/howtousegrids.html... распечатал, свернул в трубочку, сижу, вкуриваю
Добавлено спустя 20 часов 11 минут 51 секунду:Вроде что-то начинает получаться.
Сейчас вот какая заморочка. Создал и связал датасет, датасорс и грид. Поля видны, булево поле в автоматическом режиме показано как чекбокс, количество записей выводится правильно и меняется при добавлении/удалении посредством DBNavigator-a
mds:TMemDataset
Код: Выделить всё
procedure TMDSForm.FormCreate(Sender: TObject);
var a,b:byte;
begin
//mds.CreateTable;
mds.Open;
b:=mds.FieldCount;
StaticText1.Caption:=concat('[',IntToStr(b),']'); //показывает тройку - три поля в датасете, как и есть
for a:=0 to b-1 do begin
with StaticText1 do Caption:=concat(Caption,'[',mds.Fields.Fields[a].Name,']');
end;
for a:=1 to 20 do begin //создаем 20 записей в датасете
mds.Append;
mds.SetFields([true,chr(Random(27)+65),Random(10)]); //закомментированные строчки ниже тоже работают
//mds.FieldValues['b1']:=Random(2)-1; //такой рандом даст значения от -1 до 0 включительно, это булево поле
//mds.FieldValues['int1']:=Random(10);
//mds.FieldValues['s1']:=chr(Random(27)+65); //произвольная буква латинского алфавита
mds.Post;
end;
DBGrid1.Refresh;
end;
Код: Выделить всё
procedure TMDSForm.FormPaint(Sender: TObject); //обновление при перерисовке
var a,b:byte;
begin
STRecordCount.Caption:=IntToStr(mds.RecordCount); //тоже статиктекст, показывает правильное кол-во записей в сете
b:=mds.FieldCount;
StaticText1.Caption:=concat('[',IntToStr(b),']');
for a:=0 to b-1 do begin
with StaticText1 do
Caption:=concat(Caption,'[',mds.Fields.Fields[a].Name,']','[',mds.Fields[a].Name,']');
end;
end;
Всё бы ничего, но вот только грид рисуется пустым и не дает возможности редактировать, а statictext1 во второй процедуре выглядит как "[3][][][][][][]", то есть, имена полей не читаются. Куда же они делись, если в проекте они четко есть и видны во всех дропбоксах, где должны быть видны.
На что надо обратить внимание, где может быть ошибка? Полные "исходники" проекта см. в аттаче.
У вас нет необходимых прав для просмотра вложений в этом сообщении.