Определить надстрочное или подстрочное положение каретки в richedit

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
Ответить
sergeros
Сообщения: 4
Зарегистрирован: 09 фев 2014, 22:05

09 фев 2014, 22:08

Как определить надстрочное или подстрочное положение каретки в richedit?
sergeros
Сообщения: 4
Зарегистрирован: 09 фев 2014, 22:05

10 фев 2014, 11:03

Как оказалось, программных средств управления надстрочными/подстрочными символами в richedit не предусмотрено.
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

10 фев 2014, 12:02

Вопрос не корректен, если нужно определить ввод в верхнем регистре или нет - проще снять состояние капс лока и шифта, если состояние буквы в месте где каретка стоит уже другой вопрос.
[syntax=Delphi] [/syntax]
sergeros
Сообщения: 4
Зарегистрирован: 09 фев 2014, 22:05

10 фев 2014, 13:32

Мне нужно определить, какой символ после каретки, надстрочный или подстрочный. Думал, что можно это реализовать, если отследить положение каретки.

И я неправильно написал предыдущее свое сообщение.В самой делфи нет возможности программно управлять надстрочными/подстрочными символами, надо использовать команды WinAPI.
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

10 фев 2014, 13:50

Я не видел ни в одном языке чтоб была такая функциональность вшитая, везде нужно брать позицию каретки, следом брать нужный символ и проверять регистр буквы.. Можно на он кей ап повесить событие и собственно выполнять данный цикл действий..
[syntax=Delphi] [/syntax]
sergeros
Сообщения: 4
Зарегистрирован: 09 фев 2014, 22:05

10 фев 2014, 15:08

Тогда такой вопрос: есть ли какая-нибудь другая команда для определения регистра символа, кроме EM_GETCHARFORMAT? Ну или как быть с параметром SCF_Selection, если текст не выделен (выбран)?
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

10 фев 2014, 16:09

Кстати погугли что-нить на тему свойства SelStart.. Дэльфы под рукой нет чтоб посмотреть правильно ли свойство называется, это по поводу взять символ из компонента.
По поводу узнать регистр можно сделать так:
[syntax=Delphi]
if oneChar in ['А'..'Я','A'..'Z'] then Верхний регистр //дэльфи до уникода
if CharInSet(oneChar,['А'..'Я','A'..'Z']) then Верхний регистр //уникод Delphi 2009+
[/syntax]

Всё что остаётся вытащить нужный символ на проверку..
[syntax=Delphi] [/syntax]
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

10 фев 2014, 16:15

Кстати погугли что-нить на тему свойства SelStart.. Дэльфы под рукой нет чтоб посмотреть правильно ли свойство называется, это по поводу взять символ из компонента.
По поводу узнать регистр можно сделать так:
[syntax=Delphi]
if oneChar in ['А'..'Я','A'..'Z'] then Верхний регистр // дэльфи до уникода
if CharInSet(oneChar,['А'..'Я','A'..'Z']) then Верхний регистр //уникод Delphi 2009+
[/syntax]
Всё что остаётся вытащить нужный символ на проверку..
[syntax=Delphi] [/syntax]
Ответить