Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как динамически создать столбцы в сетке? [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 грида и играть их видимостью?


Наверх

Титульная страница Поиск, карта сайта Написать письмо