Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > FastReport 3 как использовать operator =()


Автор: SAndrus 5.8.2010, 12:06
Доброе время суток,
подскажите пожалуйста
в FastReport
на отчет ставлю линию - Setka1
нужно создать линию копию первой
Код

TfrxLineView * Setka1 = (TfrxLineView *) frxReport1->FindObject("Setka1"); //
    TfrxLineView * Setka2 = new TfrxLineView(Setka1); //создаю линию
    Setka2->CreateUniqueName(); //
    Setka2=Setka1; //копирует ссылку
    *Setka2=*Setka1; //ошибка E2328 Classes with properties cannot be copied by value
    *Setka2=*Setka1; //E2285 Could not find a match for 'TfrxLineView::operator =(TfrxLineView *)'


а как получить TfrxLineView & не знаю, подскажите
я сам в Visual C++ программирую, Builder только начал изучать
Спасибо.

Автор: borisbn 5.8.2010, 12:39
Цитата(SAndrus @  5.8.2010,  12:06 Найти цитируемый пост)
 Setka2=Setka1; //копирует ссылку

не ссылку, а указатель.
TfrxLineView - твой класс ?
Если да, то в конструкторе копирования делай присвоения всех свойств
Код
TfrxLineView::TfrxLineView( const TfrxLineView & other )
{
    property1 = other.property1;
// и т.д.
}

Тогда твой код будет выглядеть так:
Код

    TfrxLineView * Setka1 = (TfrxLineView *) frxReport1->FindObject("Setka1"); //
    TfrxLineView * Setka2 = new TfrxLineView( *Setka1 ); //создаю линию


P.S.
Цитата(SAndrus @  5.8.2010,  12:06 Найти цитируемый пост)
я сам в Visual C++ программирую, Builder только начал изучать

Не порть себе навыки чистого Си++ Builder'ом. Посмотри лучше в сторону http://qt.nokia.com/

Автор: SAndrus 5.8.2010, 12:53
TfrxLineView - это объект FastReporta (из-за него в общем то и связался с Builderom)
в его методах есть TfrxLineView& TfrxLineView::operator=(TfrxLineView&).
в визуале это понятно конструкция типа *Setka2=*Setka1; вроде нормально проходит

Автор: borisbn 5.8.2010, 13:16
не могу найти on-line документацию, поэтому не знаю поможет или нет - посмотри, есть ли у TfrxLineView функция Assign. она делает то же, что и operator=()

P.S. У FastReport есть версия под Visual. Правда только под Windows Forms и ASP.NET.
http://www.fast-report.com/en/products/FastReport.Net.html

Автор: SAndrus 6.8.2010, 14:03
Есть такая функция, и более того в инспекторе смотрю объекты похожи, где надо отличаются. Только на экране чет вторая линия не появляется.

Автор: borisbn 6.8.2010, 14:39
если объекты полностью одинаковые, может просто одна линия на другой рисуется ?

Автор: SAndrus 6.8.2010, 14:57
нет, я сдвигаю ее, и у нее свойство Left больше на сколько надо, тут чет другое

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)