![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 03.01.2011
Сообщений: 233
|
![]()
Доброго времени суток. Я работаю с компонентом TRichEdit, тесты провожу на Win7 в Delphi XE7 и Delphi 7.
Создаю на форме RichEdit и кнопку, далее пишу в обработчике нажатия по кнопке Код:
И вот на этом моменте, я убираю выделение с текста который уже Times New Roman и стоит мне нажать Shift + Alt (сменить язык) и набрать любой символ, как уже введенный текст в строке RichEdit'а меняется на Tahoma, т.е. ладно бы я выделил тот текст и он заменился на текст с шрифтом по умолчанию, но я ввожу текст в другом месте строки, старый текст НЕ должен меняться! При этом вот это Код:
Пробовал вместо RICHED20.DLL использовать MSFTEDIT.DLL (написал раньше модуль подключения к более новой библиотеке для работы с таблицами), всё тоже самое. И даже ничего не делая с делфой - кладу компонент на форму, рядом кнопку и эффект тот же. При этом есть еще две машины, тоже Win7 на одной всё так же как у меня, а на другой работает без ошибок, попробовал взять RICHED20 и RICHED32 c неё и положить рядом с .exe файлом, но эффект тот же. Причем иногда после того как шрифт сбрасывается на Tahoma, происходят такие спецэффекты: меняя стиль текста на курсивный или перебирая шрифт текст всё же начинает рисоваться как Times New Roman. Но на нужном размере текста, всё еще обрисовывается как Tahoma. Delphi XE7 использует RICHED20.DLL, а Delphi 7 использует еще и версию RICHED32.DLL и там эта ситуация обрабатывается иначе, текст в строке так же становится шрифтом Tahoma, но если его выделить, он перерисовывается в Times New Roman. И тоже самое происходит если в RichEdit'е изначально был проставлен Font.Name = 'Times New Roman' и вписан текст я ставлю курсор в эту строку, меняю язык, и всё что в ней было введено в Times New Roman сбрасывается в Tahoma проект нулёвый, буквально один RichEdit в нём, никакого моего кода там нет. Положил RichEdit, сменил в Properties Font.Name и запустил, нажал Shift + Alt, ввёл символ -всё сломалось. Самое смешное, что выделяя изменившуюся строку и нажимая кнопку с событием ShowMessage(RichEdit1.SelAttributes .Name); - выводится Times New Roman. Если скопировать эту неправильную строку (в Tahoma), и вставить в MS Word 2007, она вставится и обрисуется как Times New Roman, а если скопировать её и вставить обратно, RichEdit будет нормально дописывать английский текст в русский, но при дальнейшей работе обрисовка о5 собьётся. Но если вырезать шрифт в псевдотахоме и вставить его обратно, он таким и останется. А ингода могут сочетания Shift + Alt (смена языка) перестать работать. Что за дурдом с этим RichEdit'ом??? ![]() Поставил на форму таймер с Код:
тогда я вырезал и вставл строку в MS Word, а потом обратно - строка нормализовалась и продолжала моргать потом я снова попытался её "испортить", сменил язык, дописал букву "d" теперь строка моргает с Tahoma на Times New Roman. Кто-то в делфе хреного рисует это точно... Причем у меня этот баг во всех RichEdit'ах, включая виндовый wordpad.
пыжок
Последний раз редактировалось maloun; 15.12.2014 в 12:34. |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 27.10.2014
Сообщений: 594
|
![]() Цитата:
А ответ вы уже дали сами: Вот отсюда и пляшите - скорее всего у вас что-то подпорчено в самой винде... |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хук на смену активного окна | VikaR | Win Api | 1 | 21.09.2012 10:30 |
Странная реакция среды на ссылки | Darth.Vader | Общие вопросы C/C++ | 4 | 06.12.2009 01:57 |
странная реакция FloatToStr | CrazyXaoc | Общие вопросы C/C++ | 6 | 29.05.2009 17:35 |
Странная реакция | drknn | Помощь студентам | 2 | 02.09.2007 15:51 |