Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.19;
Скачать: CL | DM;

Вниз

BidiMode   Найти похожие ветки 

 
=BuckLr=   (2008-01-07 23:39) [0]

Как реализовать для edit контрола? Кто-нибудь знает? Я пробовал SetWindowLong с флагами WS_EX_LEFT, WS_EX_RTLREADING, WS_EX_LEFTSCROLLBAR, WS_EX_LAYOUT_RTL, но это имеет не совсем правильный эффект - каретка находится на противоположной стороне, т.е. так как будто включен обычный режим, не справа - налево.


 
Дмитрий К ©   (2008-01-08 00:38) [1]

WS_EX_NOINHERITLAYOUT ?


 
Дмитрий К ©   (2008-01-08 00:56) [2]


> Дмитрий К ©   (08.01.08 00:38) [1]
>
> WS_EX_NOINHERITLAYOUT ?

Пардон, это я не про то.
У меня каретка отображается справа если подключить манифест.


 
=BuckLr=   (2008-01-08 10:34) [3]


> У меня каретка отображается справа если подключить манифест.

Т.е.? Если установить WS_EX_LEFT, WS_EX_RTLREADING, WS_EX_LEFTSCROLLBAR и WS_EX_LAYOUT_RTL, то при отключенном манифесте каретка будет слева, а при подключенном - справа? Но такого не должно быть! В ВСЛ работает даже без подключенного манифеста.

И ещё. За что отвечает WS_EX_NOINHERITLAYOUT?


 
Jon ©   (2008-01-08 15:17) [4]

EditBox.ExStyle := EditBox.ExStyle or WS_EX_RIGHT; ?


 
=BuckLr=   (2008-01-08 18:13) [5]


> EditBox.ExStyle := EditBox.ExStyle or WS_EX_RIGHT;

I tried to do so, but it don"t work for me. What about you?


 
D[u]fa   (2008-01-08 18:20) [6]

=BuckLr=, только что создал МСК проект. кинул на него едитбокс выставил TextAlign на taRight и все нормально. текст справа каретка там же. Прбовал и с манифестом и без него


 
=BuckLr=   (2008-01-08 18:23) [7]

В общем... Я оперирую с richedit. там это сложнее... Имеется свойство RE_TextAlign но оно применяется к области форматирования. TextAlign кажется не работает для richedit.


 
D[u]fa   (2008-01-08 18:38) [8]

тож не сложно:

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;


 
=BuckLr=   (2008-01-08 18:41) [9]

Супер! Сейчас попробую. Спасибо! Надеюсь, это будет работать...


 
D[u]fa   (2008-01-08 18:42) [10]

ну я ж проверил у себя =)


 
=BuckLr=   (2008-01-08 19:46) [11]

К слову, D[u]fa. Ты не знаешь случаем, какие интерфейсы и как использовать для вставки объектов. Если я буду использовать olerichedit - там нужный интерфейс имеется.


 
=BuckLr= ©   (2008-01-08 21:20) [12]

Спасибо, D[u]fa. Работает!


 
D[u]fa   (2008-01-08 21:25) [13]

=BuckLr=, насчет интерфейс хз даже. Я кроме как картинок через RTF ничего не вставлял =)


 
=BuckLr= ©   (2008-01-08 21:30) [14]


> Я кроме как картинок через RTF ничего не вставлял

Да вот я тоже :) А в сях оно есть, но только я в сях полный дЭбил


 
=BuckLr= ©   (2008-01-08 22:06) [15]

Возникла проблема с другой стороны - мне кажется, что не работает TRichFmtArea - raWord. Т.е. если я устанавливаю область форматирования в raWord, то не происходит никаких изменений со словами, на которых расположен курсор. По-моему, глюк KOL


 
=BuckLr= ©   (2008-01-09 01:18) [16]

Между тем, D[u]fa, это можно было сделать при помощи RE_TextAlign. И имеется недостаток - если сделать такой BidiMode, то всё работает. но стоит только удалить весь текст, как каретка снова становится на левый край. Чувствую, что-то нужно делать не так... По крайней мере на VCL такое можно было сделать (и я делал) перекрытием создания контрола. Блин, ну как же сделать нормальный двунаправленный режим?


 
D[u]fa   (2008-01-09 10:48) [17]

мда.. я вместо того чтоб найти встроенную RE_TextAlign изобрел велосипед))

а как удаляешь весь текст?


 
D[u]fa   (2008-01-09 10:49) [18]

собсно кажись понял... если текст в риче был, а потом сделали алигн и стерли его, то он восстанавливается. попробуй так:

 RichEdit1.Clear;
 RichEdit1.RE_TextAlign := raRight;

вроде не соскакивает обратно


 
=BuckLr= ©   (2008-01-09 14:15) [19]

Ну да... Правда, это костыли. Сейчас ищу способ сделать это средствами api. Ведь на VCL как-то работает...


 
D[u]fa   (2008-01-09 15:55) [20]

дык а чем не нравится способ то? по моему ниче не нормального нету в нем


 
=BuckLr= ©   (2008-01-09 21:52) [21]

Да, пока сделал так. Но вообще я думаю что VCL делает несколько иначе - я же смотрел исходники. Ну да ладно. Похоже, кроме нас с тобой тема больше никого не интересует, так что закрываем :)


 
=BuckLr= ©   (2008-01-09 23:27) [22]

D[u]fa, слушай сюда :)

Прочитал на Королевстве Делфи ответ на похожий вопрос by Vasily Mulukov:


> К сожалению, у тебя ничего не выйдет - все расширенные свойства окон > и Би-Ди моде поддерживаются только в локализованной (Арабской) версии
> винды.


Так что похоже я делал всё правильно, только вот винда сама не хотела устанавливать эти стили :)


 
=BuckLr= ©   (2008-01-09 23:28) [23]

Хотя странно... По идее, винда должна же поддерживать всякие тайские языки... Странно это всё


 
=BuckLr= ©   (2008-01-09 23:47) [24]

Блин, вот как надо-то было:

const
  PFM_ALIGNMENT                       = $00000008;
  EM_SETPARAFORMAT                    = WM_USER + 71;
var
 Paragraph: TParaFormat2;

begin
 FillChar(Paragraph, SizeOf(Paragraph), 0);
 Paragraph.cbSize := SizeOf(Paragraph);
 with Paragraph do
 begin
   dwMask := PFM_ALIGNMENT;
   wAlignment := Ord(raRight) + 1;
 end;
 SendMessage(MFBox.Handle, EM_SETPARAFORMAT, 0, LPARAM(@Paragraph));

 Perform(CM_BASE + 60{CM_BIDIMODECHANGED}, 0, 0);
end;


И всё работает! Подгляел у RxLib


 
D[u]fa   (2008-01-10 16:13) [25]

т.е после CM_BASE + 60 уже неважно стер текст или нет все работает нормально?


 
=BuckLr= ©   (2008-01-10 19:56) [26]


> все работает нормально?

Да! Запиши на стикере. Пригодится!



Страницы: 1 вся ветка

Текущий архив: 2009.04.19;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.021 c
2-1235994425
Neket
2009-03-02 14:47
2009.04.19
Проблема с задание Range в Диаграмах Excel


8-1192723012
hahol_64_rus
2007-10-18 19:56
2009.04.19
доступ к файлам


2-1235724440
D@nger
2009-02-27 11:47
2009.04.19
Почему отсекается первый символ?


15-1234990250
Кое кто
2009-02-18 23:50
2009.04.19
have been + третья форма глагола...


2-1236238302
Drowsy
2009-03-05 10:31
2009.04.19
А удалить запись не получается.