Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ну типа из С++ в С++Builder проблема....

26K
03 сентября 2008 года
dufifa
56 / / 21.08.2008
Первый вопрос я забалрф... короче из-за вечного недовольства администраторов. Вопросы оказывается задавать нельзя(незнаю почему..форум же всё-таки) поэтому напишу просто сообщение:
В Дельфи есть множество примеров кода, переводя котоый в C++Builder я получаю примерно такой результат:(взял для примера)
Код:
void __fastcall TForm1::AddColorString(TRichEdit RichEdit, AnsiString s, TColor Cl)
{
RichEdit.SellAttributes->Color = Cl;
RichEdit.SellAttributes->Size = 12;
Richedit.Lines->Add(s);
}
//использую этот код для вставки цветной строки (Дельфи) в РичъЭдит так:
void __fastcall TForm1::Button1Click(Object* Owner)
{
AddColorString(RichEdit1,"1234",clRed);
}

к сожалению выдаёт такую ошибочку:
[C++ Error] Unit1.cpp(27): E2459 VCL style classes must be constructed using operator new;

Я делал и другие переводы наподобие этого но опять эта ошибка.Я её немного не понимаю.
ААА!!! Да что мне с ней ДЕЛАТЬ!!!!:confused::confused::confused:
1
04 сентября 2008 года
kot_
7.3K / / 20.01.2000
Как перевести - это ваша проблема. Вопрос слишком общий - если вам лень разобраться в коде, который вам собственно и нужен - ну так а почему это должен делать ктото другой? В следующий раз за создание такой же темы вы получете нарушение без всяких объяснений и тема будет удалена.
246
04 сентября 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: dufifa

[C++ Error] Unit1.cpp(27): E2459 VCL style classes must be constructed using operator new;


звездочку поставь между ними - TRichEdit RichEdit

14
05 сентября 2008 года
Phodopus
3.3K / / 19.06.2008
В смысле в CBuilder нельзя создавать производные TObject статически, только динамически, в куче, и с помощью оператора new.

 
Код:
TObjectDerived *MyObj = new TObjectDerived(...); //Вроде так :)


Соответственно и в параметрах функций можно передавать лишь указатели на объекты TRichEdit* RichEdit
26K
05 сентября 2008 года
dufifa
56 / / 21.08.2008
[COLOR="Red"]Ура!!Получилось...[/COLOR]только я не понял как этот код деёствует. Параметр SellAtributes in RichEdit вродебы означает атрибуты выделенного шрифта, а при вставке строки выделения вроде нет, но всёже окрашивается...Вот этот момент никак не могу понять.
26K
05 сентября 2008 года
dufifa
56 / / 21.08.2008
И ещё...почему-то не действует код:
 
Код:
void __fastcall TForm1::AddColorString(TRichEdit *RichEdit, AnsiString s, TColor Cl)
{
RichEdit->SellAttributes->Color = Cl;
RichEdit->SellAttributes->Size = 12;
RichEdit->SelAttributes->Style = RichEdit.SelAttributes->Style<<fsBold;
Richedit->Lines->Add(s);

}

Почему-то не вставляет строку с жирным шрифтом...:mad:
8.8K
06 сентября 2008 года
Se AD WMD
165 / / 10.01.2007
 
Код:
RichEdit->SelAttributes->Style = RichEdit.SelAttributes->Style<<fsBold;
RichEdit->SelAttributes->Style = RichEdit->SelAttributes->Style<<fsBold;

Это раз.
Два, надо сначала строку вставить потом её выделить используя selstart/sellength и поставить ей соответствующий цвет/шрифт. Так небудет таких глюков, как.
Цитата:
Параметр SellAtributes in RichEdit вродебы означает атрибуты выделенного шрифта, а при вставке строки выделения вроде нет, но всёже окрашивается...


Это глюк, лучше делай

 
Код:
RichEdit1->Text=RichEdit1->Text+"\r\n"+s;

Т.к. то, что ты сказал не работает, если пользователь ткнул мышью гденить посреди текста в ричедите
А про жирный шрифт....
 
Код:
RichEdit->SelAttributes->Style = RichEdit.SelAttributes->Style<<fsBold;
Найди 10 отличий:
RichEdit->SelAttributes->Style = RichEdit->SelAttributes->Style<<fsBold;
26K
06 сентября 2008 года
dufifa
56 / / 21.08.2008
Как видите у меня всё получилось...
Код:
void __fastcall TForm1::AddColorS(TRichEdit *RichEdit,AnsiString s,TColor Col)
{
RichEdit->SelAttributes->Color = Col;
RichEdit1->SelAttributes->Style = RichEdit->SelAttributes->Style<<fsBold;
RichEdit->SelText = RichEdit->SelText+s;
}
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
 AddColorS(RichEdit1,"DanUnited",clRed);
}
//---------------------------------------------------------------------------

//--как видите, для того, чтобы вставить код в позицию курсора нужно не то, что мне предлагали:
 
Код:
Код:
RichEdit1->Text=RichEdit1->Text+"\r\n"+s;
Т.к. то, что ты сказал не работает, если пользователь ткнул мышью гденить посреди текста в ричедите

Достаточно исползовать функцию SelText.
А вот подсказачка о том, что атрибуты после того как вставляем строку- неверно, не работает - только после...Поэтому я и спрашивал и досихпор не понял как работает в этом случае функци(параметр)SelAtributes!!:cool:
А вот об этом:
RichEdit->SelAtributes->Style = RichEdit[COLOR="DarkRed"].[/COLOR]SelAtributes->Style <<fsBold - это я просто опечатался...
1
06 сентября 2008 года
kot_
7.3K / / 20.01.2000
Всвязи с крепчающим маразмом тема закрыта.
Автору настоятельный совет - читать правила форума. Предупреждение последнее и категоричное.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог