Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 29

Создание компонента Timage

14.11.2012, 14:43. Показов 1891. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо создать компонент на основе Timage, со встроенными событиями. при OnMouseDown размеры уменьшались, а при OnMouseUp размер становился первоначальным.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2012, 14:43
Ответы с готовыми решениями:

Движение компонента TImage.
Здравствуйте. Нужна помощь в реализации движения компонента TImage. В программе есть класс. У каждого объекта класса есть свои параметры,...

bmp-изображения и компонента TImage
Здраствуйте! Подскажите, пожалуйста, решение проблеми. Задача - скопировать определённые пиксели изображения bmp1 в изображение...

Поворот компонента TImage на 90 градусов
Есть ли способ поворота компонента Image вместе с изображением на указанные градусы поворота. Что-бы я мог например в текстовом поле...

14
 Аватар для lordik55
4 / 4 / 3
Регистрация: 28.07.2012
Сообщений: 185
14.11.2012, 23:23
Масштабирования изображения при наведении на него курсора это ищешь?
0
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 29
15.11.2012, 07:33  [ТС]
lordik55 спасибо, но это не то. Там про лупы.
В общем выкладываю часть исходника
У Timage есть следующие события:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Unit1.cpp
void __fastcall TMain::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
 
  Image1->Width = Image1->Width - 3;
  Image1->Height = Image1->Height - 3;
  Image1->Top = Image1->Top + 2;
  Image1->Left = Image1->Left + 2;
}
//---------------------------------------------------------------------------
void __fastcall TMain::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  Image1->Width = Image1->Height + 3;
  Image1->Height = Image1->Height + 3;
  Image1->Top = Image1->Top - 2;
  Image1->Left = Image1->Left - 2;
}
Необходимо создать компонент чтоб эти события были встроены, при последующем копировании не приходилось заново прописывать события.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.11.2012, 07:41
born2fxxk, D Архангельском 7 издании есть примеры создания своих компонентов
0
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 29
15.11.2012, 08:33  [ТС]
Avazart, В Архангельском 7 не нашел примеров создания своих компонентов. А так в другой литературе читал как создавать компоненты, но что я хочу сделать не получаеться.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.11.2012, 18:23
Глава 8.2.1 , стр 624
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
16.11.2012, 00:47
Можно просто унаследовать да пользоваться... но с палитры тогда не потаскаешь.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
16.11.2012, 01:47
Можно просто унаследовать да пользоваться... но с палитры тогда не потаскаешь.
В пакет ...
0
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 29
16.11.2012, 08:45  [ТС]
Avazart, Да спасибо нашел создание компонентов, как то до этого смотрел и проглядел ... Но чет так и не въехал как создать компонент который я хочу, пример там немного другого направления...

Добавлено через 2 минуты
а точнее не получается объявить события
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
16.11.2012, 13:35
Скорее всего, у тебя не получается их привязать. Для этого в конструкторе напиши примерно так:
C++
1
2
OnMouseDown = &image_mouse_down;
OnMouseUp = &image_mouse_up;
, где image_mouse_down и image_mouse_up - имена соответствующих методов, прописанных в этом же классе.
0
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 29
16.11.2012, 14:16  [ТС]
BRcr, если пишу в конструкторе
C++
1
2
OnMouseDown = &image_mouse_down;
OnMouseUp = &image_mouse_up;
то мне выдаёт [C++ Error] ImageB.cpp(22): E2451 Undefined symbol 'OmMouseDown'

Добавлено через 30 минут
Всем спасибо большое! Наконец то разобрался как объявлять события наследники. Все заработало.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
16.11.2012, 15:18
Цитата Сообщение от born2fxxk Посмотреть сообщение
E2451 Undefined symbol 'OmMouseDown'
Очепятки буддистского толка?

Добавлено через 1 минуту
Расскажи хоть - как разобрался?
2
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 29
17.11.2012, 09:59  [ТС]
BRcr, как так не заметил этой опечатки)))
исходник выложу полностью, там что да как происходит.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.11.2012, 19:07
Да как бы компоненте наследнике надо определить в h-файле для начала обработчики так как они объявлены
в классе предке с индитификатором vitrual или DYNAMIC.

А затем только их реализовать в cpp.

C++
1
2
3
DYNAMIC void __fastcall MouseDown(TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
DYNAMIC void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y);
DYNAMIC void __fastcall MouseUp(TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
0
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 29
19.11.2012, 07:28  [ТС]
ImageB.h
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 ImageBH
#define ImageBH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TImageB : public TImage
{
private:
protected:
// события наследники прописываються в protected  без On с добавлением  DYNAMIC. 
         DYNAMIC void __fastcall MouseDown(TMouseButton Button, 
          TShiftState Shift, int X, int Y);
         DYNAMIC void __fastcall MouseUp(TMouseButton Button,
          TShiftState Shift, int X, int Y);
  public:
        __fastcall TImageB(TComponent* Owner);
__published:
        
};
//---------------------------------------------------------------------------
#endif

ImageB.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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#pragma hdrstop
 
#include "ImageB.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(TImageB *)
{
        new TImageB(NULL);
}
//---------------------------------------------------------------------------
__fastcall TImageB::TImageB(TComponent* Owner)
        : TImage(Owner)
{
Stretch=true;
}
//---------------------------------------------------------------------------
namespace Imageb
{
        void __fastcall PACKAGE Register()
        {
                 TComponentClass classes[1] = {__classid(TImageB)};
                 RegisterComponents("Samples", classes, 0);
        }
}
 
//---------------------------------------------------------------------------
void __fastcall TImageB::MouseDown(TMouseButton Button,
TShiftState Shift, int X, int Y)
{
  Width = Width - 3;
  Height = Height - 3;
  Top = Top + 2;
  Left = Left + 2;
}
//---------------------------------------------------------------------------
void __fastcall TImageB::MouseUp(TMouseButton Button,
TShiftState Shift, int X, int Y)
{
  Width = Width + 3;
  Height = Height + 3;
  Top = Top - 2;
  Left = Left - 2;
}
//
BRcr,
BRcr,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.11.2012, 07:28
Помогаю со студенческими работами здесь

Переход на использование другого компонента(TImage -> TsImage)
Здравствуйте. Дело такое - в 6 билдере нужно перейти с TImage на TsImage(Может работать с png). Сам TsImage подключен и работает на ура....

Динамическое создание TImage
Уважаемые Модераторы, прошу вас не ругаться, т.к гуглил час море информации перерыл, но что ни пробовал, никак не выходит!...

Создание наследника класса TImage
Добрый день. С билдером знаком не так давно и его синтаксис понимаю не так хорошо, как хотел бы. Возникла задача расширить функции...

Динамическое создание компонентов TImage's.
Доброго времени суток, уважаемые жители форума. В создании динамических массивов почти полный профан ...

Создание класса на основе TImage
Просмотрел аналогичные темы, слишком сложно или не совсем то что нужно. Нужно создать поле из клеток, у которых будут взяты свойства из...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru