Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение TPenal на TCustomControl, попытка создать свой график 
:(
    Опции темы
petlyura
Дата 7.5.2012, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

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



Здравствуйте, винградовцы! 

Помогите разрешить проблемку. Сам плаваю, если честно.

Есть некая форма, которая вызывается по нажатию некой кнопки "График".
Всю форму занимает объект класса TPresentChart, созданного мною, и унаследованного от TCustomControl. В этом объекте есть и легенда и заголовок, и время, и оси, и сетка, и сами кривые. Вся отрисовка на нем идет с помощью свойства Canvas объекта TPresentChart. Попытался туда же закинуть и панель, но она почему-то не отображается сверху :(

выглядит все приблизительно так
Код

class TBaseChart : public TCustomControl
{
protected:

  typedef std::vector<TValueScale*> TVectorValueScales; 

   TSignalHandles Handles;
   TTitle* Title;                        
   TTimeValue* TimeValue;    
   TLegend* Legend;                    
   TAnalogGrid* GridAnalog;     
   TBinaryGrid* GridBinary;    
   TTimeScale* TimeScale;        
   TPercentScale* PercentScale;
   TVerAxis* ValueAxis;       
   THorAxis* TimeAxis;           

  TAxisScrollPanel*  AxisScrollPanel1;
  TAScrollPanel*  AScrollPanel1;
  THAScroll* HAScroll1;
  TLAScroll* LAScroll1;
  TCAScroll* CAScroll1; 

  TDateTime CurrentTime;       

  Graphics::TBitmap* Bitmap;    

  TVectorBinaryDiagramOptions VectorBinaryDiagramOptions; 
  TVectorAnalogDiagramOptions VectorAnalogDiagramOptions;
  TVectorValueScales          VectorValueScales;     
  
  TColor* AnalogCurColor;
  TColor* BinaryCurColor;
  
public:

  __fastcall TBaseChart(TWinControl* Owner, TSignalHandles& handles); 
  __fastcall ~TBaseChart();         

protected:

  virtual void DiagramPaint() = 0; 
  void Create();
  virtual void Adjust();       
  virtual void __fastcall Paint();


};



Код

class TPresentChart : public TBaseChart
{
protected:
  TTimer* TT; 
  TTimer* TimerAddVal;
  TArchCur* ArchCur;  
  TDiagramValues* DiagramValues; 
  TVectorCurBinaryDiagram VectorCurBinaryDiagram;  
  TVectorCurAnalogDiagram VectorCurAnalogDiagram;
...
public:

  __fastcall TPresentChart(TWinControl* Owner, TSignalHandles& handles, TDiagramValues* values);
  __fastcall ~TPresentChart(); 
};


  TAxisScrollPanel*  AxisScrollPanel1;
  TAScrollPanel*  AScrollPanel1;
  THAScroll* HAScroll1;
  TLAScroll* LAScroll1;
  TCAScroll* CAScroll1;  - это панели (ползунки для оси)

я понимаю, что я возможно где-то в коде лажаю далее, перекрывая панели.. или надо что-то учесть, чего я мог не сделать?

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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

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



если я плохо объяснил, спрашивайте  smile  

TAxisScrollPanel*,   TAScrollPanel*,  THAScroll*,   TLAScroll*,   TCAScroll*
эти ребята  smile  унаследованы от TPanel
еще пытаюсь одну панель сделать приемником для остальных, но что-то туго выходит (вижу в процессе пошаговой отработки). Указывал Parent. Сначала бы с отображением разобраться, а потом уже с контейнерами.
PM MAIL   Вверх
Doga
Дата 14.6.2012, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 20.12.2007
Где: Россия, Обнинск

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



Привет.

Куча объектов, и, практически, ни одного известного. Нет ни малейшего представления о том, что там у них внутри. Даже страшно спросить что-либо  smile  Да, и кто ещё кому должен?  smile 

Начните лучше всё сначала, с самого простого. Возмите этот TCustomControl и прикрутите к нему TPanel. Когда заработает - продолжайте постепенно усложнять, увеличивать функциональность.

Кста, Вы там точно не перепутали кто кому папа (своойство Parent) ? А что там со свойствами Transparent или ParentBackground ?

Отрисовку в пошаговом режиме отладчика иногда (если не чаще всего) наблюдать невозможно.

Перемещение поля графика и его масштабирование с помощью скролов ужасно неудобно. Реалиуйте эти возмжности с помощью мыши. Скролбары всегда можно поставить рядом с компонентом, если уж так будет нужно.

Зачем Вам вобще на компоненте панели? Это всего лишь прямоугольные области - их отрисовка элементарна. Не нужно плодить лишние сущности.

Найдите библиотеку SGraph, посмотрите, как там всё устроено. Может, там уже всё, что Вам нужно, сделано?


Цитата

- Петька, приборы!
- Двести, Василь Иваныч!
- Чего "двести"?!
- А чего "приборы"?!!

 smile 

Хочу ещё добавить следующее. Пишите компоненты на Паскале, в Дельфи. Не будет никаких проблем с его установкой ни в Дельфи ни в Билдере. В противном случае, если, даст Бог, у Вас выйдет что-нибудь стоящее, Вам всё-равно придётся хорошенько попарится, что бы перевести код компонента  из С++ на Паскаль. Зачем делать лишнюю работу? К тому же, написание компонентов на Паскале это даже не традиция - это ЗАКОН. 

Это сообщение отредактировал(а) Doga - 14.6.2012, 11:47
PM MAIL WWW   Вверх
Dem_max
Дата 15.6.2012, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



Цитата

 К тому же, написание компонентов на Паскале это даже не традиция - это ЗАКОН. 

Глупости на счет закона.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Doga
Дата 15.6.2012, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 20.12.2007
Где: Россия, Обнинск

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



Безусловно! У каждого есть право ... кусать локти!  smile 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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