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);
}
Ну типа из С++ в С++Builder проблема....
В Дельфи есть множество примеров кода, переводя котоый в C++Builder я получаю примерно такой результат:(взял для примера)
Код:
к сожалению выдаёт такую ошибочку:
[C++ Error] Unit1.cpp(27): E2459 VCL style classes must be constructed using operator new;
Я делал и другие переводы наподобие этого но опять эта ошибка.Я её немного не понимаю.
ААА!!! Да что мне с ней ДЕЛАТЬ!!!!:confused::confused::confused:
Как перевести - это ваша проблема. Вопрос слишком общий - если вам лень разобраться в коде, который вам собственно и нужен - ну так а почему это должен делать ктото другой? В следующий раз за создание такой же темы вы получете нарушение без всяких объяснений и тема будет удалена.
Цитата: dufifa
[C++ Error] Unit1.cpp(27): E2459 VCL style classes must be constructed using operator new;
звездочку поставь между ними - TRichEdit RichEdit
Код:
TObjectDerived *MyObj = new TObjectDerived(...); //Вроде так :)
Соответственно и в параметрах функций можно передавать лишь указатели на объекты TRichEdit* RichEdit
[COLOR="Red"]Ура!!Получилось...[/COLOR]только я не понял как этот код деёствует. Параметр SellAtributes in RichEdit вродебы означает атрибуты выделенного шрифта, а при вставке строки выделения вроде нет, но всёже окрашивается...Вот этот момент никак не могу понять.
Код:
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);
}
{
RichEdit->SellAttributes->Color = Cl;
RichEdit->SellAttributes->Size = 12;
RichEdit->SelAttributes->Style = RichEdit.SelAttributes->Style<<fsBold;
Richedit->Lines->Add(s);
}
Почему-то не вставляет строку с жирным шрифтом...:mad:
Код:
RichEdit->SelAttributes->Style = RichEdit.SelAttributes->Style<<fsBold;
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;
Найди 10 отличий:
RichEdit->SelAttributes->Style = RichEdit->SelAttributes->Style<<fsBold;
Код:
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);
}
//---------------------------------------------------------------------------
{
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;
Т.к. то, что ты сказал не работает, если пользователь ткнул мышью гденить посреди текста в ричедите
RichEdit1->Text=RichEdit1->Text+"\r\n"+s;
Т.к. то, что ты сказал не работает, если пользователь ткнул мышью гденить посреди текста в ричедите
Достаточно исползовать функцию SelText.
А вот подсказачка о том, что атрибуты после того как вставляем строку- неверно, не работает - только после...Поэтому я и спрашивал и досихпор не понял как работает в этом случае функци(параметр)SelAtributes!!:cool:
А вот об этом:
RichEdit->SelAtributes->Style = RichEdit[COLOR="DarkRed"].[/COLOR]SelAtributes->Style <<fsBold - это я просто опечатался...
Автору настоятельный совет - читать правила форума. Предупреждение последнее и категоричное.