![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как динамически создать столбцы в сетке? [D7, Paradox]
tytus © (2004-12-23 14:34:00)Приветствую всех. На форме имеется ExDBGrid - 1 штука (сделал по советам Игоря Шевченка и Елены Филипповой - чтобы заголовки были многострочными). В модуле данных имеется две таблицы TTable , каждая со своим источником данных - DS1 и DS2 соответственно. Двойным кликом на TTable создал столбцы, и в их свойстве DisplayLabel написал что хотел.
В ExDBGrid-e строки разделяются пробелами ' '. Так вот мне бы хотелось на выбор менять источники данных для сетки, и чтобы создавались столбцы для сетки с заголовками следующим способом:
fori:=0 toDM1.Main.FieldCount-1 do
begin
Grid1.Columns.Add;
Grid1.Columns[i].Title.Caption:=DM1.Main.Fields[i].DisplayLabel;
end;
где - Grid1 - ExDBGrid, DM1.Main - модуль данных и таблица.
Необходимость такового нужна из-за того, что два набора данных имеют разное количество полей.
Подскажите, как мне этого добится.
Вышеописанный метод выдает AV.
tytus (2004-12-24 19:01:00) [1]>Sergey13
Все, разобрался. Забыл столбцам грида присваивать поля набора данных:
fori:=0 toDM1.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);
Вот и все. Спасибо за внимание.
Sergey13 (2004-12-23 15:44:00) [2]>Вышеописанный метод выдает AV
На какой строке? Грид создается в рантайме?
tytus (2004-12-23 15:27:00) [3]>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:01:00) [4]Ну тогда:
1 ExDBGrid - что это?
2 Двойным кликом на TTable создал столбцы - в смысле "создал", добавил?
3 В ExDBGrid-e строки разделяются пробелами ' '. - это как?
4 Указанный код когда срабатывает?
5 Это весь код?
tytus (2004-12-23 14:54:00) [5]>Sergye13
оно то проще, но хочется сделать как задумано.
Sergey13 (2004-12-23 14:47:00) [6]А непроще сделать 2 грида и играть их видимостью?