Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TImage как поле пользовательского объекта, подскажите с синтаксисом класса 
:(
    Опции темы
wolver17
Дата 13.4.2013, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите пож., как в bc++ использовать в объекте одним из полей загрузку картинки в TImage?
Код

#include <jpeg.hpp>
//...
//описание класса предка - х
//...
class x1: public x
{
public:
    x1(String, float, float, float, TImage*);
private:
    float a;
    float b;
    float c;
    TImage *img;
//----------конструктор для предка-----------
//конструктор для х1
x1::x1(String name, float a, float b, float c, TImage *img):x(name)
{
    x1::name=name;
    x1::a=a;
    x1::b=b;
    x1::c=c;
    x1::img=img;
}
//-----------------------------------------------------------

//--------описание объекта класса х1---------
х1 Y =  х1("qwe", 100, 25, 10, Image1->Picture->LoadFromFile("..\\img\\qwe.jpg"));


и вот на само описание объекта ругается: 
could not find a match for 'x1::x1(char *, int, int, int, void)' - что не так с синтаксисом  описания класса сделал?
PM MAIL   Вверх
wolver17
Дата 13.4.2013, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



разобрался с проблемкой)
Код

х1 Y= x1("qwe", 100, 25, 10, "img\\qwe.jpg");
...
//внутри реализации ф-ции класса добавил
Form1->Image1->Picture->LoadFromFile(img);


=======================================
Подскажите пож. есть ли возможность создавать один вызов перегруженной ф-ции для 2-х и более 
объектов?

т.е. чтобы было не:
Код

//--------описание объектов класса х1---------
х1 Y= x1("qwe", 100, 25, 10, "img\\qwe.jpg");
х1 Z= х1("asd", 200, 30, 15, "img\\asd.jpg");
//------------вызов ф-ций-------------
Y.func();
Z.func();

а что-то вроде этого:
Код

//--------описание объектов класса х1---------
х1 Y= x1("qwe", 100, 25, 10, "img\\qwe.jpg");
х1 Z= х1("asd", 200, 30, 15, "img\\asd.jpg");
//-----------------------------------------
//считываем откуда-то "Y" или "Z", может быть даже с Edit1...?
obj_name=Form1->Edit1->Text;
//------------вызов ф-ций-------------
obj_name.func();




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


Шустрый
*


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

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



Зачем тебе хранить Image в классе используй битмап
Код

class MyClass
{
   Graphics::TBitmap * FBitmap;

   public:
       __fastcall MyClass()
          {
               FBitmap= new Graphics::TBitmap;
               FBitmap->SetSize(100,100);
          }
      __fastcall ~MyClass()
          {
              delete FBitmap;  
          }
};


Это сообщение отредактировал(а) Avazart - 13.4.2013, 22:15
PM MAIL   Вверх
wolver17
Дата 14.4.2013, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А разница? имейжд или битмап - оба работают с картинками, тем более мне нужно только загрузка и отображение картинки, и image вполне меня устроит. И вопрос с ним я решил.
Подскажите, что с вопросом про вызов ф-ции, что задавал выше?
PM MAIL   Вверх
Avazart
Дата 14.4.2013, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Подскажите, что с вопросом про вызов ф-ции, что задавал выше? 

Вопрос не понятен ...

Пишите код понятнее, а вопросы задавайте точнее.

Это сообщение отредактировал(а) Avazart - 14.4.2013, 23:58
PM MAIL   Вверх
wolver17
Дата 15.4.2013, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



уважаемый, куда ж тут понятнее писать, если я задал чётко вопрос, и привёл пример того как есть сейчас в программе и как я хочу описать код? - но вот можно или нет как-то так сделать - это я не знаю.
PM MAIL   Вверх
artsb
Дата 15.4.2013, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(wolver17 @  13.4.2013,  17:03 Найти цитируемый пост)
разобрался с проблемкой)

Не хорошее решение проблемы. У вас идёт жёсткая привязка к Form1, чего не стоит делать. Т.к. если вы создадите форму динамически, то указатель на Form1 будет либо невалиден, либо всегда указывать на один и тот же экземпляр формы. Лучше так:
Код

Image1->Picture->LoadFromFile("..\\img\\qwe.jpg");
х1 Y =  х1("qwe", 100, 25, 10, Image1);

Цитата(wolver17 @  13.4.2013,  17:03 Найти цитируемый пост)
Подскажите пож. есть ли возможность создавать один вызов перегруженной ф-ции для 2-х и более 
объектов?

Конечно, можно. Но только не таким способом как указали вы. Покажите код, в котором вам нужно такое поведение. А вообще суть такая:
Код

х1 Y= x1("qwe", 100, 25, 10, "img\\qwe.jpg");
х1 Z= х1("asd", 200, 30, 15, "img\\asd.jpg");
x1 *p;

p = &Y;
p->func(); // тоже самое, что Y.func()

p = &Z;
p->func(); // тоже самое, что Z.func()



--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Avazart
Дата 15.4.2013, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

А разница? имейжд или битмап - оба работают с картинками, тем более мне нужно только загрузка и отображение картинки, и image вполне меня устроит. И вопрос с ним я решил.

К тому что Image принадлежит классу формы а не вашему классу, что не хорошо ... 
Цитата

Подскажите пож. есть ли возможность создавать один вызов перегруженной ф-ции для 2-х и более 
объектов?

А что тут точного и понятного ?
Вызов - это действие, его не создают его производят.
Цитата

 перегруженной ф-ции для 2-х и более объектов

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

P.S. Код примера детский- не о чем не говорит ( где же осмысленные имена переменных ??? )

Это сообщение отредактировал(а) Avazart - 15.4.2013, 23:09
PM MAIL   Вверх
_Dimon_
Дата 17.4.2013, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Avazart, а можно ли в TBitmap загрузить другие форматы изобрабжений?

А в TImage есть Picture, у которого, в свою очередь, есть Graphic и Bitmap .........


Это сообщение отредактировал(а) _Dimon_ - 17.4.2013, 01:14
PM MAIL   Вверх
Avazart
Дата 17.4.2013, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Можно преобразовывать в TBitmap, а можно сразу использовать напрямую объект TPicture.

Это сообщение отредактировал(а) Avazart - 17.4.2013, 15:56
PM MAIL   Вверх
_Dimon_
Дата 18.4.2013, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ну с TPicture, наверное, лучше б было
PM MAIL   Вверх
wolver17
Дата 19.4.2013, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(artsb @ 15.4.2013,  08:19)
Конечно, можно. Но только не таким способом как указали вы. Покажите код, в котором вам нужно такое поведение. А вообще суть такая:
Код

х1 Y= x1("qwe", 100, 25, 10, "img\\qwe.jpg");
х1 Z= х1("asd", 200, 30, 15, "img\\asd.jpg");
x1 *p;

p = &Y;
p->func(); // тоже самое, что Y.func()

p = &Z;
p->func(); // тоже самое, что Z.func()

Цитата(artsb @ 15.4.2013,  08:19)

Лучше так:
Код

Image1->Picture->LoadFromFile("..\\img\\qwe.jpg");
х1 Y =  х1("qwe", 100, 25, 10, Image1);



Спс, если понадобится в проге - учту)
Цитата(artsb @ 15.4.2013,  08:19)

Конечно, можно. 
Код

х1 Y= x1("qwe", 100, 25, 10, "img\\qwe.jpg");
х1 Z= х1("asd", 200, 30, 15, "img\\asd.jpg");
x1 *p;

p = &Y;
p->func(); // тоже самое, что Y.func()

p = &Z;
p->func(); // тоже самое, что Z.func()


Блин, логично и всё просто)
Очень признателен за ответы.
--------------------
Цитата(Avazart @ 15.4.2013,  23:01)

К тому что Image принадлежит классу формы а не вашему классу, что не хорошо ... 

Да, я убрал с описания класса указатель на TImage, т.к. пока думал как реализовать то что хотел - задал вопрос на форуме - а потом догадался сам как сделать нужное мне и заменил на поле String img. Но вот перефразировать вопрос в топике не вышло - потому так и осталось. Сейчас в классе никакого TImage нету.
Цитата(Avazart @ 15.4.2013,  23:01)

P.S. Код примера детский- не о чем не говорит ( где же осмысленные имена переменных ??? )

а зачем скидывать всю прогу с кучей ненужной Вам инфы не по вопросу, чтобы донести то, что я перефразировал в "детский" вариант? - мне будет достаточно и абстрактного ответа с небольшой привязкой к коду, как отвечал artsb - интерпретировать всё в свою прогу я сумею сам, спс smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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