Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2009, 09:23   #1
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию DBChart и DBGrid получение графика по строке

Здравствуйте.
У меня есть по сути легких 2 вопроса, но так как мои знания маловаты, я хочу спросить у вас

1) Подскажите пжл. новечку - возможно ли получить график DBChart не из колонки, а из строки набора данных. Например щелкнуть на DBGrid по определенной строке и получить график значений этой строки?(для примера во вложении элюстрация того что мне надо реализовать).
Или это невозможно и надо лоять на сервере новую таблицу и загружать в нее данные в формате колонки по нужным критериям, потом грузить ее в ADOQuery и по ней уже получать график. Не хотелось бы заниматься таким обходным путем, все-таки время на загрузку важно.

2)Возможно ли реализовать в DBGrid вертикальный скрол таким образом, чтобы когда его тянешь, одновременно с ним проходили и данные, а не посе того как отпустишь?

Спасибо
Изображения
Тип файла: bmp vopros.bmp (1.16 Мб, 200 просмотров)
funball вне форума Ответить с цитированием
Старый 29.09.2009, 10:23   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
1) Подскажите пжл. новечку - возможно ли получить график DBChart не из колонки, а из строки набора данных. Например щелкнуть на DBGrid по определенной строке и получить график значений этой строки?(для примера во вложении элюстрация того что мне надо реализовать).
Знаешь, я не знаю как DBChart это сделать, т.к. я такое делал через обычный Chart. Делал вот так:
Код:
Form2.Table_pokazateli.Next;
   With Form6.Series2 do
   begin
    try
    Clear;
    c_1:=Form2.Table_pokazateli.FieldByName('DVOEK').AsInteger;
    c_2:=Form2.Table_pokazateli.FieldByName('TROEK').AsInteger;
    c_3:=Form2.Table_pokazateli.FieldByName('CHETVEROK').AsInteger;
    c_4:=Form2.Table_pokazateli.FieldByName('PYTEROK').AsInteger;
    Add(c_1,'2-ек = ',clGreen);
    Add(c_2, '3-ек = ', clYellow);
    Add(c_3, '4-ок = ', clBlue);
    Add(c_4, '5-ок = ', clRed);
    except
    on EConvertError do
     u:=1;
    end;
   end;
Ведь данные беруться не из DBGrid-a, а из DataSet-a. Этот код у меня был в процедуре кнопки, о чем свидетельствует строчка
Код:
Form2.Table_pokazateli.Next;
. Таким образом, я перемещался по строчке в DBGrid-e и получал новый график в зависимости от знаений. Это работает. Пример простой, если не понятно, то спрашивайте.
Цитата:
2)Возможно ли реализовать в DBGrid вертикальный скрол таким образом, чтобы когда его тянешь, одновременно с ним проходили и данные, а не посе того как отпустишь?
А не проще использовать процедуру типа: Table1.Next??
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.09.2009, 10:44   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в DBGrid вертикальный скрол
http://www.delphiworld.narod.ru/base...rt_scroll.html
Цитата:
а из строки набора данных.
Да, но я бы просто сделал обычным Chart.
Стал на запись, в цикле по полям прошклся и добавил в график их данные.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2009, 11:08   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Да, но я бы просто сделал обычным Chart.
Стал на запись, в цикле по полям прошклся и добавил в график их данные.
О чём и речь
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.09.2009, 11:22   #5
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Знаешь, я не знаю как DBChart это сделать, т.к. я такое делал через обычный Chart. Делал вот так:
Код:
Form2.Table_pokazateli.Next;
   With Form6.Series2 do
   begin
    try
    Clear;
    c_1:=Form2.Table_pokazateli.FieldByName('DVOEK').AsInteger;
    c_2:=Form2.Table_pokazateli.FieldByName('TROEK').AsInteger;
    c_3:=Form2.Table_pokazateli.FieldByName('CHETVEROK').AsInteger;
    c_4:=Form2.Table_pokazateli.FieldByName('PYTEROK').AsInteger;
    Add(c_1,'2-ек = ',clGreen);
    Add(c_2, '3-ек = ', clYellow);
    Add(c_3, '4-ок = ', clBlue);
    Add(c_4, '5-ок = ', clRed);
    except
    on EConvertError do
     u:=1;
    end;
   end;
Пример простой, если не понятно, то спрашивайте.
Да, спасибо, идея понятна, как это я сам не додумал, но так как первый раз столкнулся с графиком, есть глупый вопрос - с присвоением значений графику:
в вашем примере c_1 - это я так понял значения по Y...так как мне определить обозначение этих Y значений, я в смысле к чему присваисать ADOQ.FBN('кол').integ?
например series1.чего-то там(1-ое значение по Y).value:=ADOQ.FBN('кол').integ
funball вне форума Ответить с цитированием
Старый 29.09.2009, 11:24   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
artemavd
Ты просто раньше пост поставил.
Цитата:
funball
Дык у него же написано добавление значения к графику:
Код:
   Add(c_1,'2-ек = ',clGreen);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2009, 11:42   #7
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Дык у него же написано добавление значения к графику:
Код:
   Add(c_1,'2-ек = ',clGreen);
Получилось чего-то
реализовал таким образом:
Код:
procedure TForm2.DBGrid1CellClick(Column: TColumn);
begin
with Series1 do
begin
  Clear;
  Series1.YValue[1]:=ADOQuery_all_st_routers.FieldByName('D09').AsInteger;
  Series1.YValue[2]:=ADOQuery_all_st_routers.FieldByName('D10').AsInteger;
  Series1.YValue[3]:=ADOQuery_all_st_routers.FieldByName('D11').AsInteger;
  Series1.YValue[3]:=ADOQuery_all_st_routers.FieldByName('D14').AsInteger;
end;
end;

Последний раз редактировалось Stilet; 29.09.2009 в 11:47.
funball вне форума Ответить с цитированием
Старый 29.09.2009, 11:47   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Получилось чего-то
Ну и поставь + если наши советы оказались дельными. Че жалко чтоли +
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.09.2009, 12:25   #9
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
Хорошо

Цитата:
Сообщение от artemavd Посмотреть сообщение
Ну и поставь + если наши советы оказались дельными. Че жалко чтоли +
Да что вы Мне не жалко, за всю историю на этом форуме мне вы Stilet, artemavd очень помогли Только я вам уже ставил + и сейчас мне не дают поставить еще...
funball вне форума Ответить с цитированием
Старый 29.09.2009, 12:38   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Все прекращаем не по теме. Такие обсуждения в личку, ато закрою.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фокус на заданной строке в DBGrid Zver БД в Delphi 6 08.11.2014 12:51
Подсказка к каждой строке в DBGrid k1r1ch Общие вопросы Delphi 6 26.08.2009 10:57
Получение данных из DBGrid Demien БД в Delphi 14 19.08.2009 13:38
Задание ширины столбца в DBGrid по самой широкой строке двойным щелчком x8i Общие вопросы C/C++ 0 23.06.2009 16:47
DBChart HOVER БД в Delphi 1 03.06.2008 00:17