добавить строку в Rich
Пишу вот такой код
Rich->Lines->Add (str1);
//<здесь меняю атрибуты текста (цвет)>
Rich->Lines->Add (str2);
как можно вывести str2 в ту же строку, что и str1,
без переноса?
Еcть две AnsiString
Пишу вот такой код
Rich->Lines->Add (str1);
//<здесь меняю атрибуты текста (цвет)>
Rich->Lines->Add (str2);
как можно вывести str2 в ту же строку, что и str1,
без переноса?
AnsiString перегружает опертор + и +=.
Поэтому примерно так:
//ты должен знать номер строки X, куда в конечном итоге попала str1, Add возвращает этот номер
int X=Rich->Lines->Add (str1);
Rich->Lines->Strings[X]+=str2;
AnsiString перегружает опертор + и +=.
Поэтому примерно так:
//ты должен знать номер строки X, куда в конечном итоге попала str1, Add возвращает этот номер
int X=Rich->Lines->Add (str1);
Rich->Lines->Strings[X]+=str2;
при такой записи Strings[X]+=str2 ничего не происходит.. Если же написать
Rich->Lines->Strings[X] = Rich->Lines->Strings[X]+str2, то аттрибуты, которые я хоче применить только к str2 применяются и к str1...
И что за странную ошибку выдает билдер во время выполнения (через раз): "Project raised exception class EOutOfResources with message 'RichEdit line insertion error'. Process stoped." и при этом указывает на строку Rich->Lines->Add (str2);
в этом самом Rich только пару строк всего, что за OutOfResources??
при такой записи Strings[X]+=str2 ничего не происходит.. Если же написать
Rich->Lines->Strings[X] = Rich->Lines->Strings[X]+str2, то аттрибуты, которые я хоче применить только к str2 применяются и к str1...
И что за странную ошибку выдает билдер во время выполнения (через раз): "Project raised exception class EOutOfResources with message 'RichEdit line insertion error'. Process stoped." и при этом указывает на строку Rich->Lines->Add (str2);
в этом самом Rich только пару строк всего, что за OutOfResources??
AnsiString str1="One ", str2="Two", str3;
int X=RichEdit1->Lines->Add(str1);
str3=RichEdit1->Lines->Strings[X];
str3+=str2;
RichEdit1->Lines->Strings[X]=str3;
Тогда примерно так. А насчет ошибки - если через раз, может, не хватает системных ресурсов? Билдер 6? У меня почему-то в нем иногда линковщик выдает ошибку, пишет что памяти не хватает.
AnsiString str1="One ", str2="Two", str3;
int X=RichEdit1->Lines->Add(str1);
str3=RichEdit1->Lines->Strings[X];
str3+=str2;
RichEdit1->Lines->Strings[X]=str3;
Тогда примерно так. А насчет ошибки - если через раз, может, не хватает системных ресурсов? Билдер 6? У меня почему-то в нем иногда линковщик выдает ошибку, пишет что памяти не хватает.
если использовать такой код, то как поменять цвет str2? мне надо разноцветные надписи в одной строке...
если использовать такой код, то как поменять цвет str2? мне надо разноцветные надписи в одной строке...
Единственный способ, который я знаю - установка SelStart на начало того места, которое тебе надо раскрашивать, SelLength на его длину - и вперед.
Т.Е. примерно так:
//сначала заблокировать отображение на экране
RichEdit1->Lines->BeginUpdate();
RichEdit1->SelStart=X; //X - позиция курсора перед тем местом, которое надо раскрашивать
RichEdit1->SelLength=str2.Length();
RichEdit1->SelAttributes->Fonts->Color=clRed;
RichEdit1->SelLength=0;
//разблокировать
RichEdit1->Lines->EndUpdate();