Форум: "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