Цитата:
Сообщение от lmikle
Не ставить компоненты, связанные с данными.
|
Я ничего такого не ставил. О чем речь?
Цитата:
Сообщение от lmikle
У тебя бесплатная версия Starter?
|
Starter это что?
Цитата:
Сообщение от lmikle
ЗЫ. Вообще-то я привел ссылку, где есть пример.
|
Да, я это все прочитал.
А мне вот такой совет показали: "Через EM_GETCHARFORMAT получить информацию о нужном символе в структуру CHARFORMAT (или CHARFORMAT2 для RE 2.0) и проверить содержимое поля yOffset. Если оно содержит нулевое значение - то текст обычный. Если положительное - текст надстрочный. Отрицательное - подстрочный."
Т.е. yOffset надо читать, а не писать в него. В вашем коде "yOffset:= 60; ", насколько я понял, для установки символа: над- или подстрочного, а значение 60 - смещение от центральной линии вверх.
А это пример, как узнать цвет слоя под текстом в RichEdit:
Код:
var
CFormat : TCharFormat2;
begin
FillChar(CFormat, SizeOf(CFormat), 0);
CFormat.cbSize := SizeOf(cf);
CFormat.dwMask := CFM_BACKCOLOR;
RichEdit1.Perform(EM_GETCHARFORMAT, SCF_SELECTION, LPARAM(@CFormat));
ShowMessage(ColorToString(CFormat.crBackColor));
end;
Насколько я понял, эта строка устанавливает параметры для вывода в RichEdit (если EM_
SETCHARFORMAT)
Код:
richedit1.Perform( EM_SETCHARFORMAT, SCF_SELECTION, LongInt(@format));
Цитата:
Сообщение от lmikle
Тебе надо делать EM_GETCHARFORMAT и проверять что тебе напихали в соовт. структуру.
|
Да. Но как это сделать?
Я пробовал
Код:
CFormat.cbSize:=SizeOf(CFormat);
Код:
CFormat.dwMask:=CFM_SUPERSCRIPT;
Или
Код:
CFormat.dwMask:=CFM_OFFSET;
Код:
RichEdit1.Perform(EM_GETCHARFORMAT, SCF_SELECTION, LPARAM(@CFormat));
Потом
Код:
if CFormat.yOffset >0 then //Если текущий символ надстрочный, то...
begin
S9:=S9+RichEdit1.Text[ii]; //Накапливаем все надстрочные символы в одну переменную
end
но yOffset у меня постоянно = 0 вне зависимости от символа.
Значит, информация о нужном символе не передается в структуру CHARFORMAT2. Все примеры, что я видел или для выдачи символа в RichEdit или для получения информации из RichEdit куда указывает курсор. А у меня:
и все, дальше можно брать символ, например,
а как его передать в CHARFORMAT2 я без понятия.
Я тут
https://docs.microsoft.com/en-us/win...charformat2w_1 пытался что-нибудь выяснить, но это справочник какой-то для спецов, а мне нужен учебник, где бы было показано, что такое FillChar, cbSize, dwMask, Perform, что оно такое, и что туда писать.