Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ещё вопрос по осям в TChart, подписи по ОХ через map 
V
    Опции темы
wolver17
  Дата 1.6.2016, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 15.5.2011

Репутация: 1
Всего: 1



Ещё вопрос по подписям оси ОХ компонента TChart.
Есть код:
Код

        map<String, int> months;
        void Select();

//-----------------------------------------------------------------------
void __fastcall TForm6::FormShow(TObject *Sender)
{
    months.insert(pair<String, int>("Январь", 1));
    months.insert(pair<String, int>("Февраль", 2));
    months.insert(pair<String, int>("Март", 3));
    months.insert(pair<String, int>("Апрель", 4));
    months.insert(pair<String, int>("Май", 5));
    months.insert(pair<String, int>("Июнь", 6));
    months.insert(pair<String, int>("Июль", 7));
    months.insert(pair<String, int>("Август", 8));
    months.insert(pair<String, int>("Сентябрь", 9));
    months.insert(pair<String, int>("Октябрь", 10));
    months.insert(pair<String, int>("Ноябрь", 11));
    months.insert(pair<String, int>("Декабрь", 12));
}
//-----------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Form1->Chart1->Series[0]->Clear();
    Form1->Chart1->Title->Text->Text="Заголовок графика";
    Select();                      //ф-ция, выполняющая SELECT ADOQuery к б.д. Access и выводящая данные по трём столбцам (А, Номер месяца, Год) в DBGrid.
    int n=Form1->ADOQuery1->RecordCount;  //возвращает к-во записей в DBGrid, куда вывелся запрос из ф-ции Select
    float *x=new float [qn];                       //дин. масс. (можно вектор не суть важно) для хранения данных столбца "А"
    map<String, int>::const_iterator iter;         //мой map по месяцам
    for(int i=1;i<=n;i++)
    {
        Form1->DBGrid1->DataSource->DataSet->RecNo = i; //для связи счётчика цикла с переходами по записи в DBGrid
        x[i-1]=StrToFloatDef(Form1->DBGrid1->Columns->Items[0]->Field->AsString,0); //заполняет массив из DBGrid, если не ввели число то "0"

        int temp=StrToIntDef(Form1->DBGrid1->Columns->Items[1]->Field->AsString,0);
        if ((iter=months.find(temp))==months.end())
            Form1->Chart1->Series[0]->AddXY(i,x[i-1], iter->first ,clTeeColor);
        else
            ShowMessage("no:(");
    }
}
 

Должно подписывать по идеи получая данные с контейнера map, но не делает этого((
Как исправить? Нужно очень срочно! Плиз хелп!
скрин работы проги
PM MAIL   Вверх
xvr
Дата 2.6.2016, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Во первых - у вас map сделан в другую сторону: он по имени месяца возвращает его номер.
Во вторых - в строке 36 в условии if замените == на !=

PM MAIL   Вверх
wolver17
Дата 4.6.2016, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 15.5.2011

Репутация: 1
Всего: 1



Цитата(xvr @  2.6.2016,  12:23 Найти цитируемый пост)
Во первых - у вас map сделан в другую сторону: он по имени месяца возвращает его номер.

делал и так и так, один закомментил вариант и скопировал сюда не тот smile 
Цитата(xvr @  2.6.2016,  12:23 Найти цитируемый пост)
Во вторых - в строке 36 в условии if замените == на !=

тут я накосячил((

Исправил, а также добавил немного кода, чтобы выводило ещё и год:
Код

years=Form4->DBGrid1->Columns->Items[2]->Field->AsString;    //столбец с годом                         
        if ((iter=months.find(temp))!=months.end())
            Form6->Chart1->Series[0]->AddXY(i,the_corn[i-1], iter->second+""+years, clTeeColor);


И всё заработало! Огромное спс, xvr

p.s.: проблема с моего прошлого поста про одновременное отображение над столбцом значения столбца и подписями ОХ тут осталась. Но нужные мне данные на оси ОХ появились, и цельпоста достигнута. Так что, тема закрыта, вопрос решён. 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0635 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.