Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "KOL";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.05 c
15-1235165401
Юрий
2009-02-21 00:30
2009.04.19
С днем рождения ! 21 февраля 2009 суббота


2-1235812626
Strate
2009-02-28 12:17
2009.04.19
Интересное поведение компонента TTrayIcon (D2009)


3-1219316977
Евгений Р.
2008-08-21 15:09
2009.04.19
свойства tIbTransaction


2-1236068306
Евгений Р.
2009-03-03 11:18
2009.04.19
Добавление tToolButton в RunTime


15-1235035785
Kerk
2009-02-19 12:29
2009.04.19
Нижегородцы!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский