Форум: "Базы";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизКак динамически создать столбцы в сетке? Найти похожие ветки
← →
tytus (2004-12-23 14:34) [0]Приветствую всех. На форме имеется ExDBGrid - 1 штука (сделал по советам Игоря Шевченка и Елены Филипповой - чтобы заголовки были многострочными). В модуле данных имеется две таблицы TTable , каждая со своим источником данных - DS1 и DS2 соответственно. Двойным кликом на TTable создал столбцы, и в их свойстве DisplayLabel написал что хотел.
В ExDBGrid-e строки разделяются пробелами " ". Так вот мне бы хотелось на выбор менять источники данных для сетки, и чтобы создавались столбцы для сетки с заголовками следующим способом:
for i:=0 to DM1.Main.FieldCount-1 do
begin
Grid1.Columns.Add;
Grid1.Columns[i].Title.Caption:=DM1.Main.Fields[i].DisplayLabel;
end;
где - Grid1 - ExDBGrid, DM1.Main - модуль данных и таблица.
Необходимость такового нужна из-за того, что два набора данных имеют разное количество полей.
Подскажите, как мне этого добится.
Вышеописанный метод выдает AV.
← →
Sergey13 © (2004-12-23 14:47) [1]А непроще сделать 2 грида и играть их видимостью?
← →
tytus (2004-12-23 14:54) [2]>Sergye13
оно то проще, но хочется сделать как задумано.
← →
Sergey13 © (2004-12-23 15:01) [3]Ну тогда:
1 ExDBGrid - что это?
2 Двойным кликом на TTable создал столбцы - в смысле "создал", добавил?
3 В ExDBGrid-e строки разделяются пробелами " ". - это как?
4 Указанный код когда срабатывает?
5 Это весь код?
← →
tytus (2004-12-23 15:27) [4]>Sergey13
1 ExDBGrid - компонент, потомок от DBGrid-a, все 1 к 1 только добавлена прорисовка заголовка.
2 На этапе разработки, на модуле данных DubleClick на компоненте TTable, откроется редактор, RightClick на пустом месте, в меню выбираем Add All Fields.
3 Это свойство самого компонента ExDBGrid - если TitleLines>1 то в заголовке сетки текст выводится в две строки, если между первым словом и остальным текстом стоит пробел.
4 Указанный код должен срабатывать на по событию OnClick кнопки ToolButton. (Сейчас в этом обработчике только DM1.DS1.Enabled:=true; А другой кнопкой я делаю ему False; Таким образом данные рисуются/не рисуются в сетке, а сам набор данных TTable всегда активный. Закрываю при выходе).
5 Если всей проги - то не весь. Если обработчика клика на тулбутоне - то весь.
Жду идей.
(Одна есть - Grid.Column.SaveToFile/LoadFromFile пока не пробывал);
← →
Sergey13 © (2004-12-23 15:44) [5]>Вышеописанный метод выдает AV
На какой строке? Грид создается в рантайме?
← →
tytus (2004-12-24 19:01) [6]>Sergey13
Все, разобрался. Забыл столбцам грида присваивать поля набора данных:
for i:=0 to DM1.Main.FieldCount-1 do
begin
Columns.Add;
Columns[i].Field:=DM1.Main.Fields[i];
Columns[i].Title.Caption:=DM1.Main.Fields[i].DisplayLabel;
end;
Вот и все. Потом меняю ширину столбцов и все ок.
Удаляю столбцы след. образом:
for i:=0 to Columns.Count-1 do
Columns.Delete(0);
Вот и все. Спасибо за внимание.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c