-
Как реализовать для edit контрола? Кто-нибудь знает? Я пробовал SetWindowLong с флагами WS_EX_LEFT, WS_EX_RTLREADING, WS_EX_LEFTSCROLLBAR, WS_EX_LAYOUT_RTL, но это имеет не совсем правильный эффект - каретка находится на противоположной стороне, т.е. так как будто включен обычный режим, не справа - налево.
-
WS_EX_NOINHERITLAYOUT ?
-
> Дмитрий К © (08.01.08 00:38) [1]
>
> WS_EX_NOINHERITLAYOUT ?
Пардон, это я не про то.
У меня каретка отображается справа если подключить манифест.
-
> У меня каретка отображается справа если подключить манифест.
Т.е.? Если установить WS_EX_LEFT, WS_EX_RTLREADING, WS_EX_LEFTSCROLLBAR и WS_EX_LAYOUT_RTL, то при отключенном манифесте каретка будет слева, а при подключенном - справа? Но такого не должно быть! В ВСЛ работает даже без подключенного манифеста.
И ещё. За что отвечает WS_EX_NOINHERITLAYOUT?
-
EditBox.ExStyle := EditBox.ExStyle or WS_EX_RIGHT; ?
-
> EditBox.ExStyle := EditBox.ExStyle or WS_EX_RIGHT;
I tried to do so, but it don't work for me. What about you?
-
=BuckLr=, только что создал МСК проект. кинул на него едитбокс выставил TextAlign на taRight и все нормально. текст справа каретка там же. Прбовал и с манифестом и без него
-
В общем... Я оперирую с richedit. там это сложнее... Имеется свойство RE_TextAlign но оно применяется к области форматирования. TextAlign кажется не работает для richedit.
-
тож не сложно:
procedure RE_AlignText2(RichEdit: PControl; alignment: TTextAlign);
var
pf2: PARAFORMAT2;
begin
ZeroMemory(@pf2, SizeOf(pf2));
pf2.cbSize := SizeOf(PARAFORMAT2);
pf2.dwMask := PFM_ALIGNMENT;
pf2.wAlignment := Byte(alignment) + 1;
RichEdit.Perform(EM_SETPARAFORMAT, 0, Integer(@pf2));
end;
procedure TForm1.Button1Click(Sender: PObj);
begin
RE_AlignText2(RichEdit1, taCenter);
end;
-
Супер! Сейчас попробую. Спасибо! Надеюсь, это будет работать...
-
ну я ж проверил у себя =)
-
К слову, D[u]fa. Ты не знаешь случаем, какие интерфейсы и как использовать для вставки объектов. Если я буду использовать olerichedit - там нужный интерфейс имеется.
-
Спасибо, D[u]fa. Работает!
-
=BuckLr=, насчет интерфейс хз даже. Я кроме как картинок через RTF ничего не вставлял =)
-
> Я кроме как картинок через RTF ничего не вставлял
Да вот я тоже :) А в сях оно есть, но только я в сях полный дЭбил
-
Возникла проблема с другой стороны - мне кажется, что не работает TRichFmtArea - raWord. Т.е. если я устанавливаю область форматирования в raWord, то не происходит никаких изменений со словами, на которых расположен курсор. По-моему, глюк KOL
-
Между тем, D[u]fa, это можно было сделать при помощи RE_TextAlign. И имеется недостаток - если сделать такой BidiMode, то всё работает. но стоит только удалить весь текст, как каретка снова становится на левый край. Чувствую, что-то нужно делать не так... По крайней мере на VCL такое можно было сделать (и я делал) перекрытием создания контрола. Блин, ну как же сделать нормальный двунаправленный режим?
-
мда.. я вместо того чтоб найти встроенную RE_TextAlign изобрел велосипед))
а как удаляешь весь текст?
-
собсно кажись понял... если текст в риче был, а потом сделали алигн и стерли его, то он восстанавливается. попробуй так:
RichEdit1.Clear;
RichEdit1.RE_TextAlign := raRight;
вроде не соскакивает обратно
-
Ну да... Правда, это костыли. Сейчас ищу способ сделать это средствами api. Ведь на VCL как-то работает...