Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232

Ошибка при создании дочернего компонента

08.06.2012, 01:31. Показов 1479. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь отрисовать прямоугольник на канве унаследованной от TImage.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// ---------------------------------------------------------------------------
 
#ifndef MyImageH
#define MyImageH
// ---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <ExtCtrls.hpp>
 
// ---------------------------------------------------------------------------
class PACKAGE TMyImage : public TImage {
private:
protected:
public:
    __fastcall TMyImage(TComponent* Owner);
 
    void __fastcall virtual Paint(void) {
        Canvas->Brush->Color = 0x00FF0000;
        Canvas->FillRect(Rect(Left, Top, Width, Height));
    }
 
__published:
};
// ---------------------------------------------------------------------------
#endif
Устанавливаю package, кидаю на форму компонент и при компиляции форма просто зависает. Кто знает, что здесь не так?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.06.2012, 01:31
Ответы с готовыми решениями:

Ошибка при создании дочернего окна
я хочу создать дочернее окно ,но пишет ошибку TForm это не класс.Вот код #include &quot;unit2.h&quot; void __fastcall...

Мерцание при перерисовке дочернего компонента
Есть компонент в котором создаётся скроллбар (компонент в принципе не важен). При изменение позиции скроллбара происходит вызов...

Заполнение ComboBox при создании компонента
Первый раз пишу компонент, не могу разобраться. Основа TChart, в него вклеиваю TComboBox. Создаю свойство аналогичное Items в TComboBox....

15
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.06.2012, 01:47
А где остальной код ?
0
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
08.06.2012, 03:27  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
А где остальной код ?
Содержание CPP-файла.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//---------------------------------------------------------------------------
 
#include <vcl.h>
 
#pragma hdrstop
 
#include "MyImage.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//
 
static inline void ValidCtrCheck(TMyImage *)
{
    new TMyImage(NULL);
}
//---------------------------------------------------------------------------
__fastcall TMyImage::TMyImage(TComponent* Owner)
    : TImage(Owner)
{
}
//---------------------------------------------------------------------------
namespace Myimage
{
    void __fastcall PACKAGE Register()
    {
        TComponentClass classes[1] = {__classid(TMyImage)};
        RegisterComponents(L"MyPalette", classes, 0);
    }
}
//---------------------------------------------------------------------------
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.06.2012, 04:30
Пробуй так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//---------------------------------------------------------------------------
class PACKAGE TMyImage : public TImage
{
private:
protected:
public:
 
   void __fastcall virtual Paint(void)
     {
      TImage::Paint();
 
      Canvas->Brush->Color = clBlue;
      Canvas->FillRect(ClientRect);
     }
 
    __fastcall TMyImage(TComponent* Owner);
__published:
};
//---------------------------------------------------------------------------
А вообще может другой метод лучше подходит для этого.
0
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
08.06.2012, 16:17  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Пробуй так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//---------------------------------------------------------------------------
class PACKAGE TMyImage : public TImage
{
private:
protected:
public:
 
   void __fastcall virtual Paint(void)
     {
      TImage::Paint();
 
      Canvas->Brush->Color = clBlue;
      Canvas->FillRect(ClientRect);
     }
 
    __fastcall TMyImage(TComponent* Owner);
__published:
};
//---------------------------------------------------------------------------
А вообще может другой метод лучше подходит для этого.
Увы, не помогло.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.06.2012, 20:12
Главное если создавать компонент динамически- работает нормально...
Устанавливаю package, кидаю на форму компонент и при компиляции форма просто зависает. Кто знает, что здесь не так?
У меня при компиляции зависает сам Builder
Но не всегда виснит иногда - нормально работает.

Добавлено через 5 минут
Например если кинуть компонент на форму и написать например такое
C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
this->MyImage1->Top= 10;
}
//---------------------------------------------------------------------------
То нормально компилится. И после чего даже если убрать эту строчку, то все равно компилится без проблем.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.06.2012, 20:14
После компиляции можно заметить изменения - возможно в этом проблема( т.е линковщик парится)
Миниатюры
Ошибка при создании дочернего компонента  
0
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
08.06.2012, 21:15  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Главное если создавать компонент динамически- работает нормально...

У меня при компиляции зависает сам Builder
Но не всегда виснит иногда - нормально работает.

Добавлено через 5 минут
Например если кинуть компонент на форму и написать например такое
C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
this->MyImage1->Top= 10;
}
//---------------------------------------------------------------------------
То нормально компилится. И после чего даже если убрать эту строчку, то все равно компилится без проблем.
Да, сам Builder зависает, загружая цп.

Добавлено через 5 минут
Цитата Сообщение от Avazart Посмотреть сообщение
После компиляции можно заметить изменения - возможно в этом проблема( т.е линковщик парится)
Таких строк нет, но спасибо за идею. Ваше сообщение натолкнуло меня на кое-какие мысли и я выключил связывание с динамической библиотекой и рантайм пэкейджами. Благодарю за помощь, проблема решена.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.06.2012, 21:54
выключил связывание с динамической библиотекой и рантайм пэкейджами
И что это помогло? По тому как у меня так по умолчанию стоит...
Это в самом проекте?
0
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
08.06.2012, 21:59  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
И что это помогло? По тому как у меня так по умолчанию стоит...
Это в самом проекте?
Да, в проекте, но заодно исправил и в проекте пэкейджа.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.06.2012, 22:09
Ну в пакете вроде нельзя убрать галочку build run time....?
0
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
08.06.2012, 22:26  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ну в пакете вроде нельзя убрать галочку build run time....?
Да, я убрал Link with Dynamic RTL
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.06.2012, 22:28
Странно но у меня не такое не канает...
0
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
09.06.2012, 02:20  [ТС]
Понял в чём проблема была. Parent не был назначен.
C++
1
    Parent = dynamic_cast<TWinControl*>(Owner);
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.06.2012, 02:47
Т.е ?
Проблема в самом коде компонента?
0
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
09.06.2012, 04:56  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Т.е ?
Проблема в самом коде компонента?
Видимо да.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2012, 04:56
Помогаю со студенческими работами здесь

Переопределение обработчиков событий при создании компонента
Делаю свой компонент на основе TLabeledEdit. Хочу добавить свойство, запрещающее вводить любые символы, кроме цифр. Да, я знаю, такое...

Компилятор ругается при создании дочернего окна
господа создаю дочернее окно но компилятор ругается - #include &lt;windows.h&gt; /* Declare Windows procedure */ LRESULT CALLBACK...

При создании виджета, дочернего к QGLWidget, дочерний виджет не отображается
#include &quot;class.h&quot; #include &lt;QApplication&gt; #include &lt;windows.h&gt; #include &lt;GL/glut.h&gt; int main(int a,char **ar){ QApplication...

ООП в C++: Вызов родительского конструктора с параметром при создании объекта дочернего класса
Здравствуйте! Столкнулся с такой проблемой: если есть родительский класс с конструктором, то при создании дочернего объекта от этого...

Как при создании дочернего окна передать ему указатель на static-переменную в оконной процедуре родительского?
Есть оконная процедура родительского окна, в ней есть static-переменная, например, static std::string s;. Оконная процедура дочернего кона...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru