Вверх ↑
Этот топик читают: Гость
Ответов: 165
Рейтинг: 6
#1: 2017-04-07 11:28:50 ЛС | профиль | цитата
Сделал RichEdit черным, а шрифт белым. Ввожу текст, но текст печатается всё равно черным цветом.
Как быть?


Add(RichEdit,14979450,315,119)
{
Left=20
Top=20
Width=335
Height=120
Color=0
Font=[Tahoma,10,0,16777215,1]
ParentFont=0
Ctl3D=0
WinStyle=1
HeightScale=100
HideFrames=0
WantTab=0
}

карма: 4

0
vip
#1.1контекстная реклама от партнеров
Ответов: 321
Рейтинг: 10
#2: 2017-04-07 14:30:50 ЛС | профиль | цитата
У меня только так получилось, изначально установив стиль.
Add(MainForm,14221044,490,231)
{
link(onCreate,14979450:doAdd,[])
}
Add(RichEdit,14979450,686,245)
{
Left=20
Top=20
Width=335
Height=120
Color=0
Font=[Tahoma,10,0,16382457,1]
ParentFont=0
Ctl3D=0
WinStyle=1
HeightScale=100
HideFrames=0
WantTab=0
link(Color,4446262:Value,[])
}
Add(Memory,4446262,693,154)
{
Default=Integer(16777215)
}


Редактировалось 5 раз(а), последний 2017-04-07 14:38:26
карма: 1

0
Ответов: 165
Рейтинг: 6
#3: 2017-04-07 20:04:40 ЛС | профиль | цитата
Master4eG, неплохо, но не годится, потому что вставленный текст из буфера вновь будет черным.

Редактировалось 1 раз(а), последний 2017-04-07 20:04:53
карма: 4

0
Ответов: 2193
Рейтинг: 673
#4: 2017-04-08 01:41:32 ЛС | профиль | цитата
Можно так:
1. Выделить RichEdit, нажать Ctrl+F.
2. В открывшемся файле RichEdit.pas найти 283 строку.
2а. Если нет нумерации строк: В меню - Сервис\Настройки - Редактор кода - Нумерация строк - установить True. Закрыть вкладку RichEdit.pas, повторить пункт 2.
3. После 283 строки добавить две строки. Должно получится так:
     RE_FmtAutoColor := true;
RE_Font.FontName := Control.Font.FontName;//test
RE_Font.Color := Control.Font.Color;//test
4. Сохранить изменения внесенные в RichEdit.pas (Ctrl+S). Вкладку можно закрыть.
5. Тестировать.

Редактировалось 6 раз(а), последний 2017-04-08 03:14:11
карма: 10

2
Голосовали:Tad, Nickname
Ответов: 1535
Рейтинг: 176
#5: 2017-04-08 07:59:49 ЛС | профиль | цитата
Nickname писал(а):
неплохо, но не годится, потому что вставленный текст из буфера вновь будет черным.

А если так:

Add(MainForm,2953706,147,84)
{
Width=426
Height=344
}
Add(FormatStr,11316372,259,161)
{
DataCount=1
Mask="{\\rtf1\\fbidis\\ansi\\ansicpg1251\\deff0\\deflang1049\\deflangfe1049\r\n{\\fonttbl{\\f0\\froman\\fprq2\\fcharset204 Cambria;}}\r\n{\\colortbl;\\red255\\green255\\blue255;}\r\n\\viewkind4\\uc1\\pard\\ltrpar\\nowidctlpar\\kerning0\\b0\\f1\\fs22\\cf1 %1\\par}"
link(onFString,831840:doText,[(302,167)(302,73)(205,73)(205,104)])
}
Add(RichEdit,831840,217,84)
{
Left=10
Top=10
Width=390
Height=285
Color=0
Point(Position)
Point(doSetSelStart)
Point(onKeyUp)
link(onKeyUp,10765682:doEvent1,[(265,97)(265,61)(107,61)(107,167)])
}
Add(Memory,9176644,154,161)
{
Point(Data)
link(onData,11778700:doReplace,[])
link(Data,831840:Position,[(160,145)(244,145)])
}
Add(Hub,10765682,119,161)
{
link(onEvent1,9176644:doValue,[])
link(onEvent2,8496882:doData,[(143,174)(143,209)])
}
Add(DoData,8496882,154,203)
{
link(onEventData,831840:doSetSelStart,[(202,209)(202,125)])
link(Data,9176644:Value,[])
}
Add(Replace,11778700,217,161)
{
SubStr="\r\n"
DestStr="\par"
link(onReplace,11316372:doString,[])
link(Str,831840:Text,[])
}

Редактировалось 3 раз(а), последний 2017-04-08 19:13:27
карма: 1
Не так страшна ошибка, как опасность её не заметить.

1
Голосовали:Nickname
Ответов: 165
Рейтинг: 6
#6: 2017-04-08 10:47:13 ЛС | профиль | цитата
sla8a, отлично работает, но у меня это необходимо вставить после 288 строки (последнее обновление с SVN). Большое спасибо.

ser_davkin, у меня уже была такая идея, но работает глючно и слишком большая плата за цвет текста.
карма: 4

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#7: 2017-04-08 11:04:10 ЛС | профиль | цитата
Пофиксил на SVN
карма: 22

3
Голосовали:ser_davkin, Tad, Nickname
Ответов: 2193
Рейтинг: 673
#8: 2017-04-08 14:33:06 ЛС | профиль | цитата
nesco, а как же 5 пункт? Поспешили вы с пофиксить. Была ночь и не особо разобрался в коде, настал день, а в коде так и не разобрался.
Вопрос в следующем: зачем установлено
RE_FmtAutoColor := true;
и что оно вообще делает? Написано что:
Книга о KOL писал(а):
RE_FmtAutoColor и RE_FmtAutoColorValid - задает, что используется цвет для символов по умолчанию;
Если правильно понял, то имеется в виду цвет шрифта в системе.
Еще RE_Font.Color и RE_FmtFontColor сбрасывают RE_FmtAutoColor в False.
http://bonanzas.rinet.ru/roldnews.htm писал(а):
rich edit: Изменено присваивание значения свойству RE_FmtFontColor. Теперь при этом (новое) свойство RE_FmtAutoColor сбрасывается в False, и цвет конвертируется в RGB.
Это легко проверить.
Да и RE_Font.FontName := Control.Font.FontName; вроде как лишнее.

Вывод у меня пока такой:
1. Нужно вообще убрать: RE_FmtAutoColor := true;
2. Вместо него добавить RE_FmtFontColor := Control.Font.Color; или/и RE_Font.FontName := Control.Font.FontName; Пока не уверен что лучше (мало информации). Склоняюсь что не лишнее будет добавить оба.
3. RE_Font.FontName := Control.Font.FontName; - лишнее.

Как по мне так компонент нужно переделывать. И тут наверное должен быть не один элемент, а несколько как менеджеры. Но точно не возьмусь за это.

Редактировалось 1 раз(а), последний 2017-04-08 14:33:46
карма: 10

0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)