Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопросы по графику 
:(
    Опции темы
gordmiand
Дата 17.6.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



1. Задача следующая – вывести на графике в заданных точках определенный текст…
Я для этого беру серию типа Point (например) и хочу вывести какой-то текст в заданной точке:

Код

Series1->AddXY(10, 5 ,  "привет", clBlue);

 
Предварительно установив в свойстве данной серии чарта Marks\Style=Label 

Метка выводится в заданной точке (10,5), но почему вместо 10 на оси Х выводится текст метки? Как это исправить? Или как по-другому выводить текст в заданном месте на графике (в масштабе текущих координат графика)?

2. Как можно считать значение координаты, например оси Х графика, находящейся в данный момент под курсором мыши?

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


Бывалый
*


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

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



Цитата

2. Как можно считать значение координаты, например оси Х графика, находящейся в данный момент под курсором мыши?

Посмотри последний пример здесь. Там с описанием.

Можно использовать и другой способ - что-то вроде:
Код

XValue=Chart1->BottomAxis->CalcPosPoint(X);
YValue=Chart1->BottomAxis->CalcPosPoint(Y);

как приведено в предыдущем примере.
Все от задачи зависит smile 
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
gordmiand
Дата 18.6.2009, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо за ответ....а что по поводу п.1???
PM MAIL   Вверх
Usper
Дата 18.6.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Надо установить значение LabelStyle нужной оси чарта в talValue: Chart1->BottomAxis->LabelStyle=talValue (или в визуальном редакторе найти эту опцию).


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 18.6.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо, Usper, за ответ - все верно...

Это сообщение отредактировал(а) gordmiand - 18.6.2009, 20:14
PM MAIL   Вверх
gordmiand
Дата 18.6.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



и еще подскажите:


1. как для серии(Series2) типа Point программно задать стиль точек (надо SmallDot и Cross)?

2. рисую линию на канве графика:

Код

    Chart1->Canvas->MoveTo(100,0);
    Chart1->Canvas->LineTo(120,500);

 а какой самый простой способ ее затереть и как сделать так, чтобы она не исчезала при прокрутке/ зумировании графика?


и как сделать так, чтобы текст (
Код
Chart1->Canvas->TextOutA(100,100,"hello");

) выводился вместе с построением графика (а то текст токо мигает и пропадает...)? 

Это сообщение отредактировал(а) gordmiand - 18.6.2009, 23:01
PM MAIL   Вверх
Usper
Дата 19.6.2009, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По поводу п.1:
Series1->Pointer->Style=psSmallDot;
Series1->Pointer->Style=psCross;
А по поводу п.2 вывод на канву чарта можно написать в обработчике события Chart1AfterDraw. Причём это решит все вопросы. Например так:
Код

bool f;
f=true;

void __fastcall TForm1::Chart1AfterDraw(TObject *Sender)
{
    if(f) /если f==true то выводим на канву чарта всё что надо
    {
        Chart1->Canvas->MoveTo(30,30);
        Chart1->Canvas->LineTo(50,60);
    }
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    f=!f;   //инвертируем значение f
    Chart1->Repaint(); //перерисовываем чарт
}


Это сообщение отредактировал(а) Usper - 19.6.2009, 08:59


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 19.6.2009, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



но мне надо рисовать по одной линиии при каждом щелчке мыши в определенном месте графика, а не все сразу после прорисовки графика...


и еще:

1. почему на одной серии типа Point точки    не выводятся    разным стилем (обе получаются последнего типа – в примере ниже  это SmallDot)? Как это исправить?
Код

     Series1->Pointer->Style=psCross;
     Series1->AddXY(100,100,"м1", clBlack);

   Series1->Pointer->Style=psSmallDot;
   Series1->AddXY(200,100, "м2",clBlack);     


2. необходимо, чтобы при масштабировании (в обе стороны) графика метка внутри прямоугольника (как изначально на рис. слева) оставалась в нем же, а не смещались (рис. справа) …
Код

  Series1->AddGantt(200, 300,    11,          "");
  Series3->AddXY(250,              10.8,       "hello", clBlack);       // серия типа Point

то есть наверное надо делать пересчет координаты Y метки (сейчас 10.8)….но вот где и как…Подскажите наиболее простой способ решения такой задачки…..

3. если можно - как задать цвет только рабочей зоны графика (где есть коор-ая сетка)?



Это сообщение отредактировал(а) gordmiand - 19.6.2009, 20:23

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  myris.JPG 61,37 Kb
PM MAIL   Вверх
Usper
Дата 19.6.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(gordmiand @  19.6.2009,  21:10 Найти цитируемый пост)
но мне надо рисовать по одной линиии при каждом щелчке мыши в определенном месте графика, а не все сразу после прорисовки графика...

И что же? Я подсказал способ, а конкретная реализация за Вами.

Цитата(gordmiand @  19.6.2009,  21:10 Найти цитируемый пост)
почему на одной серии типа Point точки    не выводятся    разным стилем

Это вопрос к разработчикам. Этот компонент не был рассчитан на подобное использование, Point - это один из стилей вывода графика. Если надо использовать два разных стиля - используйте два сириеса Point с разными стилями, если надо много стилей - это уже проблема  smile.



--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 19.6.2009, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



по поводу п.1 - я так изначально и думал...и уже сделал...
а вот что по поводу п.2 и 3???
PM MAIL   Вверх
gordmiand
Дата 21.6.2009, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну подскажите как задать цвет только рабочей зоны графика (где есть коор-ая сетка)?
PM MAIL   Вверх
Usper
Дата 21.6.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не уверен в том, что это возможно.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 21.6.2009, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Usper: понятно...я об этом догадывался, но все-таки надежда была...ну и ладно...этот вопрос не главный...
PM MAIL   Вверх
gordmiand
Дата 23.6.2009, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В серии1 типа Gantt в каких единицах задается размер (Height) у рисующихся фигур (прямоугольников) и как программно считать данное свойство?


(это по поводу "необходимо, чтобы при масштабировании (в обе стороны) графика метка внутри прямоугольника  оставалась в нем же, а не смещались…")

Это сообщение отредактировал(а) gordmiand - 23.6.2009, 20:50
PM MAIL   Вверх
gordmiand
Дата 24.6.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну ответьте пож-та....
PM MAIL   Вверх
Usper
Дата 25.6.2009, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Значение этого свойства программно считывать отсюда: Series1->Pointer->VertSize. Как написано в справке, это свойство задано в "логических пикселях" не знаю что это, но похоже что эти пиксели примерно равны процентам от высоты области куда выводится график.
З.Ы. кстати говоря, практически ничего из того что я Вам наотвечал я не знал до того как был задан вопрос. Всё это или ищется в справке, или додумывается самостоятельно.
З.З.Ы. а зачем Вы вообще используете чарт типа Gantt? Прямоугольник можно и просто на канве нарисовать. А если уж используете, то зачем Вам выводить текст отдельно? Gantt позволяет выводить метку внутри прямоугольника.

Это сообщение отредактировал(а) Usper - 25.6.2009, 08:51


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 25.6.2009, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я рисую прямоугольники с помощью серий gantt, так как рисованное на канве изображение пропадает при прокрутке графика (так как нужны координатыне оси и возможность зумирования) или его масштабировании + рисунок не прокручивается вместе с прокруткой графика....графиком проще и надежнее...а выводить мне надо несколько меток - по краям  прямоугольника и над ним (при масштабировании и возникает проблема  - надо, чтобы метка была строго над(на) прямоугольником и в нем слева и справа по краям)...поэтому использую серию типа Point с невидимыми точками и видимыми метками...
PM MAIL   Вверх
Usper
Дата 26.6.2009, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так проблема решена? 
Для вывода всяких геометрических фигур есть стиль чарта Shapes, он же позволяет выводить и текст внутри (слева, справа) фигуры.
Да, кстати, цвет рабочей зоны графика, на самом деле, меняется элементарно: Chart1->BackColor=clRed.

Это сообщение отредактировал(а) Usper - 26.6.2009, 09:02


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 26.6.2009, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в принципе нет...см. рисунок - надо сделать так, чтобы при масштабировании/ прокрутке графика или изменении размеров формы метки не прыгали (см. справа) а оставались как на левом рисунке...

и цвет методом Chart1->BackColor=clRed не меняется...вообще ничего не происходит.....может еще какие операции нужны.....

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  myris.JPG 61,37 Kb
PM MAIL   Вверх
Usper
Дата 29.6.2009, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Shapes или Gantt с текстом внутри не подходят?
Для закраски рабочей зоны графика попробуйте в обработчик OnBeforeDrawAxes чарта написать это:
Код

Chart1->Canvas->Brush->Color=clYellow;
Chart1->Canvas->FillRect(Chart1->ChartRect);



--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 1.7.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я и использую серии типа Gantt....но мне надо вставить текст по краям внутри прямоугольника и над ним....см. рисунок из пред... моего сообщения...поэтому все метки и делаю с помощью отдельной серии и получается описанная выше проблема....
PM MAIL   Вверх
Usper
Дата 2.7.2009, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Из рисунка как раз понятно, что текст должен быть один, и находится он должен внутри, по центру прямоугольника. Этот прямоугольник должен быть привязан к координатам или находится просто где-то области для вывода графика? Он должен изменять размеры при изменении масштаба?


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 2.7.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



текст не обязательно один и не обязательно по центру...но это не суть...главное,  чтобы при масштабировании (например увеличении) чарта (а соответственно и прямоугольника) текст находился строго внутри прямоугольника и над ним (т.е. текст выводится внутри прям-ка и над его верхней "границей")...прямоугольник конечно строится по координатам...

+ попутно подскажите как сделать так, чтобы вне зависимости от выводимых данных и текущего масштаба графика по оси (например левой) выводились только целые числа (например 1,2,3.....10) и не было дробных отметок на оси....

Это сообщение отредактировал(а) gordmiand - 2.7.2009, 15:22
PM MAIL   Вверх
Usper
Дата 2.7.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Отменить дробные отметки можно так: Chart1->LeftAxis->Increment=1;
А по-поводу прямоугольника буду думать как это нарисовать на канве.

Это сообщение отредактировал(а) Usper - 2.7.2009, 16:28


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
Usper
Дата 2.7.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну вот например так:
Код

int X0,Y0,X1,Y1;
AnsiString TopText,LeftText,RightText,InnerText;

void __fastcall TForm1::Chart1AfterDraw(TObject *Sender)
{
    int XL,YL,XR,YR; //координаты прямоугльника на канве
    XL=Chart1->BottomAxis->CalcXPosValue(X0); //пересчёт координат на графике в координаты на канве
    YL=Chart1->LeftAxis->CalcYPosValue(Y0);
    XR=Chart1->BottomAxis->CalcXPosValue(X1);
    YR=Chart1->LeftAxis->CalcYPosValue(Y1);
    Chart1->Canvas->Rectangle(XL,YL,XR,YR);
    int InnerTextX, InnerTextY, InnerTextWidth;
    InnerTextWidth=Chart1->Canvas->TextWidth(InnerText);
    if(InnerTextWidth<(XR-XL)) //если текст не влезает по-горизонтали - то и не выводим
    {
        InnerTextX=XL+(XR-XL)/2-InnerTextWidth/2; //рассчёт координаты Х для внутреннего текста
        InnerTextY=YL+(YR-YL)/2-Chart1->Canvas->TextHeight(InnerText)/2;
        Chart1->Canvas->TextOutA(InnerTextX,InnerTextY,InnerText);
    }
    int LeftTextX,LeftTextY;
    LeftTextY=YL+(YR-YL)/2-Chart1->Canvas->TextHeight(LeftText)/2;
    LeftTextX=XL-Chart1->Canvas->TextWidth(LeftText)-2;
    Chart1->Canvas->TextOutA(LeftTextX,LeftTextY,LeftText);
}


Проект на всякий случай прилагаю
Это просто пример, неплохо бы сделать всё это по-красивее. Избавится от глобальных переменных например. Вывод прямоугольника и текста не проверяется на выход за границы рабочей области. Так же не проверяются габариты внутреннего текста по высоте прямоугольника.
Габариты прямоугольника тоже не проверяются: Х0 должен быть левее Х1, а Y0 ниже чем Y1.

Это сообщение отредактировал(а) Usper - 2.7.2009, 16:27

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  Project.zip 4,34 Kb


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 3.7.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо за ответ....

1.Подскажите как программно узнать минимальное значение текущей метки по оси (например левой) графика (но это не Chart1->LeftAxis->Minimum (на рисунке в эдитах), так как я могу прокручивать по вертикали график и надо знать минимальное значение метки по оси в данный момент времени) – см. рисунок

2. Как можно, например по кнопке, зумировать в обе стороны изображение графика с заданным масштабным коэффициентом?

2. Как вывести текст на канву графика так, чтобы он не стирался при манипуляциях с графиком(прокрутка, зумирование) и прокручивался вместе с ним…

Таким образом
  
Код

 Chart1->Repaint();
 Chart1->Canvas->TextOutA(100,100,"hello");

не получается нужный эффект – при прокрутке графика текст стирается…


Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  risunok.JPG 16,09 Kb
PM MAIL   Вверх
Usper
Дата 3.7.2009, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вы мои ответы как то проверяете или просто коллекционируете? В моём предыдущем посте осуществляется вывод прямоугольника и текста и текст при прокрутке/зуме не стирается. Вывод на канву надо делать в обработчиках AfterDraw или BeforeDraw чарта или сириеса и тогда они стираться не будут. Координаты для вывода текста осуществлять с помощью CalcXPosValue(), CalcYPosValue() соответствующей оси. По пункту 1 и 2 - отвечу в понедельник, так как билдера дома нет.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 5.7.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Usper:Ваш последний пост ott просто не проверял...заранее спасибо...
           буду ждать Вашего ответа на п.п. 1 и 2....
PM MAIL   Вверх
Usper
Дата 6.7.2009, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как пишут в справке к компоненту, есть два метода изменения масштаба: зум по прямоугольнику (неважно как задаётся прямоугольник: с помощью мыши или программно) и зум в процентах от текущего размера рабочей области.
Соответственно Chart1->ZoomPercent(50) уменьшает масштаб в два раза от текущего мастштаба, а Chart1->ZoomPercent(200) увеличивает в два раза. Chart1->UndoZoom() - устанавливает исходный масштаб (100%).
А по-поводу первого пункта, я честно говоря не понял, что требуется. Что такое минимальное значение метки?


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 6.7.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо, Usper, за ответ...
а под понятием "минимальное значение метки" я имел ввиду минимальное значение по оси (например левой), видимое в данный момент на экране (на рисунке ранее - это примерно 7.5)...как его программно определить? (это не минимальное значение по всей оси в принципе, а минимальное в данный момент времени - то, которое видно на экране сейчас...)...
PM MAIL   Вверх
Usper
Дата 6.7.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это именно Chart1->LeftAxis->Minimum. По-крайней мере в 2009 билдере после изменения масштаба, это значение примерно соответствует отображаемой картине.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 7.7.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



подскажите еще пож-та по чарту:

1. Как программно узнать размер (длину) выбранного пользователем участка (прямоугольника) зумирования?

2. Как программно добраться до цвета текста метки СЕРИИ (в свойствах графика- это Series_n-вкладки Marks-Text-Font-Color)?

3. Каким образом можно(?) программно поменять цвет какой-либо ОДНОЙ имеющейся метки (например метки “5”) на ОСИ графика и как их ВСЕ можно перекрасить в один цвет? (в свойствах это Chart-Axis (например TopAxis)-Labels-Text-Font-Color) 



Это сообщение отредактировал(а) gordmiand - 8.7.2009, 05:59
PM MAIL   Вверх
gordmiand
Дата 8.7.2009, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



очень надо...помогите плиз ответами на вопросы из моего предыдущего сообщения в данной теме....заранее спасибо всем ответившим....
PM MAIL   Вверх
Usper
Дата 8.7.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2. Series1->Marks->Font->Color=clGreen.
3. Покраска всех меток оси Chart1->LeftAxis->LabelsFont->Color=clGreen.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 8.7.2009, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо, Usper, за ответы...еще хотелось бы получить ответ на первую часть п.3 (про цвет ОДНОЙ конкретной метки)...... но мне главное решить п.1 (про программное определение длины прям-ка зумирования)....не подскажете способ их решения?


и еще:
Код

TColor cvet;
 for (int i=1; i<=10; i++)
    {
        if  (i<=5) cvet=clBlue; else cvet=clGreen;
        Series1->Marks->Font->Color=cvet;
        Series1->AddXY(i, i+2, i, cvet);
    } 

почему половина МЕТОК не окрашивается в синий цвет, а все выводится зеленым? (методы Repaint();  Refresh() не помогают…) а с окраской ТОЧЕК графика проблем нет…

+как программно добраться до заданной метки (например “5”) на ОСИ графика? мне нужно ее (и только ее !!!) покрасить в произвольный цвет…


Это сообщение отредактировал(а) gordmiand - 8.7.2009, 16:31
PM MAIL   Вверх
gordmiand
Дата 12.7.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



неужели нельзя выводить на одной серии графика метки разного цвета (или прямоугольники заданных цветов на серии типа Gantt)??? подскажите как это сделать программно.......
PM MAIL   Вверх
Usper
Дата 13.7.2009, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А что в этом удивительного? Не могут же разработчики предусмотреть всё. Надо это реализовывать вручную. А в чём загвоздка с выводом разноцветных прямоугольников на сириес типа Gantt?


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 13.7.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



то есть все-таки нельзя выводить метки разного цвета на одной серии? 
а что в Вашем понятии означает "реализовывать вручную"? например создавать динамически сириесы и для каждого из них указывать свой цвет меток? или можно как-то проще решить данную проблему?
и при сириесе типа Gantt не получается выводить заданным цветом токо один выбранный прямоугольник (подскажите код...)

Это сообщение отредактировал(а) gordmiand - 13.7.2009, 21:49
PM MAIL   Вверх
Usper
Дата 14.7.2009, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что-то я уже запутался в терминологии. Метки по-английски как называются? Marks? Простыми способами изменить цвет одной такой метки для серии не получится. Как это реализовать - не знаю. А про Gantt опять ничего не понял. Требуется вывести прямоугольники для Gantt разных цветов? В чём проблема? Series1->AddGanttColor(-1,2,4,"Метка",clRed).


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 14.7.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



понятно...такого метода (AddGanttColor) я не знал....

подскажите еще:
1. можно ли (как именно?) на ОДНОМ чарте вывести ДВЕ оси TopAxis (и одну LeftAxis)… график строится без участия второй Top-оси.. она используется для визуализации других единиц измерения данных, нежели по первой Top-оси…  


2. мне надо нарисовать ломаную линию вида “|_|”:
   
Код

//1
   Series1->AddXY(5, 17, "", clBlack);
   Series1->AddXY(5, 0.5, "", clBlack);
   Series1->AddXY(10, 0.5, "", clBlack);
   Series1->AddXY(10, 17, "", clBlack);

///////////////////////////////////////////////////////////////////////////
//2    
     Series1->AddXY(10, 17, "", clBlack);
     Series1->AddXY(10, 0.5, "", clBlack);
     Series1->AddXY(5, 0.5, "", clBlack);
     Series1->AddXY(5, 17, "", clBlack);


1 вариант – рисование слева направо (все верно рисуется), 2 – справа налево - фигура перевернута…. Почему так происходит (ведь если строить по точкам, то все должно быть верно) и как это исправить???

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


Опытный
**


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

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



Две оси TopAxis вывести не получится, но можно воспользоваться событием OnGetAxisLabel для коррекции выводимого значения на ось (подправить можно только само значение, но не цвет).
А фигура переворачивается потому что TChart по-умолчанию сортирует выводимые точки по возрастанию. Выключение сортировки:
Код

Series1->XValues->Order=loNone;
Series1->YValues->Order=loNone;



--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 15.7.2009, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо за ответ про рисование ломаной линии...
по п.1 хотел бы уточнить:

Код

int m[11]={0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 100};

  for (int i=1; i<= 10 ; i++)
   Series1->AddXY(i, 2+i, "", clBlack);


Подскажите как программно с помощью события OnGetAxisLabel можно поменять все выведенные только на Top-ось данные-метки (i) на другие (массив m) или только несколько значений изменить (например метки № 3,4,5 на Top-оси)??? хотелось бы получить эффект такой, что график строится по одним данным, а подписи по одной из осей (Top-ось) были другие...
PM MAIL   Вверх
Usper
Дата 16.7.2009, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как я понимаю, метки на ось выводятся динамически и заранее нет никакого списка меток потому что заранее невозможно понять сколько меток будет выводится и в каком диапазоне. Поэтому доступа по индексу к метке нет. Есть доступ только по значению. Перед тем, как метка выведется, срабатывает событие OnGetAxisLabel. И уже в обработчике события надо проверить чему равен LabelText и если требуется, подправить это значение.
Код

void __fastcall TForm1::Chart1GetAxisLabel(TChartAxis *Sender,
      TChartSeries *Series, int ValueIndex, AnsiString &LabelText)
{
    if(Sender->Horizontal && Sender->OtherSide && LabelText=="5")
        LabelText="5+";
}


Этот пример отслеживает метку "5" и заменяет её на "5+". Условия Sender->Horizontal && Sender->OtherSide определяют является ли текущая ось верхней осью. Наверное можно опредлить текущую ось как-нибудь поизящнее.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 16.7.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По методу Chart1GetAxisLabel у меня опять несколько вопросов:
1.      
в ButtonClick(): 
Код

for (i=500; i<=3500  ; i+=500)
    Series1->AddXY(i, 15+i, "", clBlack);


в Chart1GetAxisLabel:
Код

if(Sender->Horizontal && LabelText=="1600") LabelText="hello"; 

почему метка “1600” не меняется на “hello”??? (как такую замену осуществить???) ведь такая метка есть на Top-оси….см.рис. …а если в коде все сократить например на 10 или в условии поставить “==600” или “==800” (эти метки тоже есть на графике) – все нормально проходит…то есть я так понимаю, что метка на оси “1 600” и  “1600” – не одно и тоже…но если я в условии ставлю “ ..==”1 600” ” – это тоже не помогает… как же тогда быть???


2.
Код

AnsiString mas[20]={0,"A","B","C","D","E","F","G","H","I","J" };
 int m[20];

в ButtonClick(): 
{  int i=0, k=0;

  for (i=750; i<=800  ; i+=5)
  {    k++;    m[k]=i;      }

      for (i=1; i<=10  ; i++)
      Series1->AddXY(m[i], 15+i, "", clBlack);
}


мне надо вместо текущих меток (m[i]) по Top-оси проставить метки массива mas…то есть каждому i-му элементу массива m соответствует свой i-ый элемент массива mas…:
я пытаюсь так:
Код

в Chart1GetAxisLabel:
  if(Sender->Horizontal)   
 for (int i=1; i<=10  ; i++) 
     {
       if (LabelText==m[i]) LabelText=mas[i];

          // else  LabelText="";
  - а остальные метки я хочу “убрать”, но по этой строке “убираются” все метки…у меня Increment для Top-оси=0, минимум и максимум для данной оси задаются программно…(для Top-оси  Labels->Style=Auto)
      } 

3. Как использовать параметр ValueIndex из Chart1GetAxisLabel? может для моих целей его как-то получится  применить… 


Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  grafik.JPG 54,25 Kb
PM MAIL   Вверх
Usper
Дата 17.7.2009, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Проверка на нужную ось: if(Sender==Chart1->TopAxis...
Метки на ось выводятся в формате, записанном в свойстве AxisValuesFormat для кажой оси. Поэтому сравнивать значения, на самом деле, надо так:
Код
if(Sender==Chart1->TopAxis && LabelText==FormatFloat(Chart1->TopAxis->AxisValuesFormat,1500))
        LabelText="Hello";

По-поводу пункта 2, вроде всё логично, но я не вижу что происходит после сравнения if (LabelText==m[i]) LabelText=mas[i]; по идее после этой строчки надо завершить цикл...
По-поводу пункта 3:
Цитата
There are two different uses for OnGetAxisLabel:
1) :  Axis Labels are Values. Is this case, the Series parameter will be nil, and the ValueIndex will be -1.
2) :  Axis Labels are Series points. The Series parameter will be a valid TChartSeries, and the ValueIndex will be the current Series point position. You can change the LabelText referred parameter for drawing a different Axis Label.


Это сообщение отредактировал(а) Usper - 17.7.2009, 08:39


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 17.7.2009, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



по п.2 - все верно - после if (LabelText==m[i]) LabelText=mas[i]; цикл и завершается (что и написано в пред. моем сообщении вне выделенного кода проги)....
вообще задача такая:

int a[11]={0, 1.23, 4.32, 6.75, 8.66, 9, 11, 12.44, 13.55, 14, 16.2};
при построении этих данных по ОХ (массив a), не важно с каким OY, шкала ОХ градуируется целыми значениями-метками - т.е. для этой Top-оси  Labels->Style=Auto (или Value)...
мне надо эти выведенные целые метки заменить на соответствующие значения из массива b[]:
AnsiString b[11]={"0", "A", "A","B","b","C","C","H","H","D","D"}; - i-му элементу из данного массива b соответствует i-ый элемент из массива a...


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


Опытный
**


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

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



То есть после выполнения этого кода
Код
if(Sender->Horizontal)   
 for (int i=1; i<=10  ; i++) 
     {
       if (LabelText==m[i]) LabelText=mas[i];

          // else  LabelText="";
    } 

стираются все метки? Или строчка  else  LabelText=""; всё-таки раскоментирована?


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 17.7.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



да, все метки стираются при откомментированной строке else.... правда непонятно почему так происходит...то есть явно надо как-то обращаться к каждой имеющейся метке...и обязательно ли метки надо заменять в соотношении 1:1 - то есть например 5 меток заменяются на 5 других или нет?
PM MAIL   Вверх
Usper
Дата 18.7.2009, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я так и не понял, строка с else закоментирована или нет. Если эта строка не закоментирована то тогда всё ясно...


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 19.7.2009, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



строка с else НЕ ЗАКОММЕНТИРОВАНА...- и тогда ВСЕ метки становятся почему-то пустыми ("")...как быть? 
PM MAIL   Вверх
Usper
Дата 19.7.2009, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тогда всё ясно. Как только срабатывает обработчик, значение метки в первом проходе цикла сравнивается с m[1], если значение метки не равно m[1], метке присваивается пустое значение. Во втором проходе цикла значение метки уже равно пустой строке, и эта пустая строка сравнивается с m[2], если m[2] не равное пустой строке (а очевидно, что так и есть), то метке опять присваивается пустая строка. И так 10 раз. Однако, если волшебным образом при первом проходе метка будет равна m[1], то второй проход цикла всё равно выполнится и метке присвоится значение "". Таким образом этот цикл в любом случае присовит метке пустую строку. Цикл надо подправить:
Код

void __fastcall TForm1::Chart1GetAxisLabel(TChartAxis *Sender,
      TChartSeries *Series, int ValueIndex, AnsiString &LabelText)
{
if(Sender==Chart1->TopAxis)   
 for (int i=1; i<=10  ; i++)     
       if (LabelText==m[i]) {LabelText=mas[i]; return;}            
LabelText="";
}

Я модернизировал готовый пример, но с нуля я бы написал, что-нибудь другое.

Это сообщение отредактировал(а) Usper - 19.7.2009, 22:05


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
Usper
Дата 19.7.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Поправил предыдущий пост.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 19.7.2009, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



понятно....а что именно другое Вы написали бы с нуля?
PM MAIL   Вверх
Usper
Дата 20.7.2009, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да нет, и так сойдёт smile Переписать следовало код, который был до поправки. Но я уже это сделал, к тому же он не работал smile.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 20.7.2009, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

AnsiString mas[20]={0,"A","B","C","D","E","F","G","H","I","J" };
int m[20], k=0;
  
for (i=7500; i<=8000  ; i+=50)
  {   k++;
     m[k]=i;     }

      for (int i=1; i<=10  ; i++)
      Series1->AddXY(m[i], 15+i, "", clBlack);



void __fastcall TForm1::Chart1GetAxisLabel(TChartAxis *Sender,
      TChartSeries *Series, int ValueIndex, AnsiString &LabelText)
{
if(Sender==Chart1->TopAxis)

  for (int i=1; i<=10  ; i++)
        if (LabelText==FormatFloat(Chart1->TopAxis->AxisValuesFormat,m[i]))

        {LabelText=mas[i]; return;}

 LabelText="";
}



на малых числах метки выводятся верно…а при больших значениях (см. инициализацию массива 
m[i]) – нет (пропадают метки по обеим (???) осям- см. рисунок)…..почему так происходит и как это исправить?









Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  new_ris.JPG 13,93 Kb
PM MAIL   Вверх
Usper
Дата 20.7.2009, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А... ну да, надо код после условия в блок поместить:
Код
void __fastcall TForm1::Chart1GetAxisLabel(TChartAxis *Sender,
      TChartSeries *Series, int ValueIndex, AnsiString &LabelText)
{
    if(Sender==Chart1->TopAxis)
    {
        for (int i=1; i<=10  ; i++)
        if (LabelText==FormatFloat(Chart1->TopAxis->AxisValuesFormat,m[i]))
        {LabelText=mas[i]; return;}
        LabelText="";
    }
}

Но это влияет только на отображение меток на остальных осях... У меня при заданных значениях (от 7500 до 8000) метки выводятся. Правда нестабильно, чуть изменил масштаб и они могут пропасть.

Это сообщение отредактировал(а) Usper - 20.7.2009, 13:22


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
gordmiand
Дата 20.7.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



и? взятие в { } кода из Chart1GetAxisLabel дает только простановку меток по LeftAxis...TopAxis все равно пуста....  как же так? 
а также допустим:
Код

AnsiString mas[20]={0,"A","A","C","D","E","C","G","C","E","J" };

мне надо выводить только разные метки из массива mas[] на top-ось...т.е. не должно быть двух меток A, A и т.п.  как это сделать???

Это сообщение отредактировал(а) gordmiand - 20.7.2009, 21:42
PM MAIL   Вверх
gordmiand
Дата 21.7.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Usper: подскажите пож-та...см. предыдущее мое сообщение...
PM MAIL   Вверх
gordmiand
Дата 21.7.2009, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



так все-таки - почему при использовании последнего из приведенных в данном посте кода Usper-a  вообще не выводятся метки на Top-ось?  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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