Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

Как динамически создать столбцы в сетке?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.042 c
1-1105791544
Sicilla
2005-01-15 15:19
2005.01.30
Память


11-1088094745
=Sniper=
2004-06-24 20:32
2005.01.30
метод Application - Undeclared identifier!!!!


14-1105550280
Just3r
2005-01-12 20:18
2005.01.30
Две задачки


1-1105744103
pika
2005-01-15 02:08
2005.01.30
delay ?


8-1097935584
Yegorchic
2004-10-16 18:06
2005.01.30
Загрузка .3ds