Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Письмо слева направо и справа налево / 10 сообщений из 10, страница 1 из 1
25.07.2005, 16:05
    #33183083
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо слева направо и справа налево
Такая вот задачка.
В иврите слова пишутся справа налево. Клиент хочет, чтобы при попадании фокуса в определенное поле (edit) в DW программа сама автоматически определяла с какой стороны нужно поставить курсор - слева или справа (в зависимости от того, на каком языке будет клиент писать). Причем можно писать в одной строке на английском, а в другой - на иврите. Вопрос такой: можно ли, в зависимости от языка, переключать положение курсора ТОЛьКО в текущей строке, а не во всех строках? И как добраться к свойству RightToLeft у поля?
...
Рейтинг: 0 / 0
25.07.2005, 16:56
    #33183247
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо слева направо и справа налево
Код: plaintext
1.
2.
3.
4.
if <условие> then
  this.modify (<field> + ".RightToLeft='0'")
else
  this.modify (<field> + ".RightToLeft='1'")
end if
где условие, вероятно, определяется функцией GetKeyboardLayout()
...
Рейтинг: 0 / 0
25.07.2005, 17:16
    #33183325
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо слева направо и справа налево
PL99
Код: plaintext
1.
2.
3.
4.
if <условие> then
  this.modify (<field> + ".RightToLeft='0'")
else
  this.modify (<field> + ".RightToLeft='1'")
end if
где условие, вероятно, определяется функцией GetKeyboardLayout()
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
string ls_column_name
ulong ul_keyboard_lang

ls_column_name = dw_1.GetColumnName()

IF ls_column_name = 'text' THEN
	ul_keyboard_lang = GetKeyboardLayout( 0 )
	IF ul_keyboard_lang =  67961869  THEN // HEB
		dw_1.Object.text.Alignment = '1'
		dw_1.modify ("text.RightToLeft='1'")
	ELSEIF ul_keyboard_lang =  67699721  THEN // ENG
		dw_1.Object.text.Alignment = '0'
		dw_1.modify ("text.RightToLeft='0'")
	END IF
END IF

В этом случае ВСЕ строки переходят слева направо или наоборот. А надо поменять только текущую строку. Можно ли вообще сделать такое? Надо добавить еще поле для галочки (английский или иврит) для проверки при получении из базы данных.
...
Рейтинг: 0 / 0
25.07.2005, 18:43
    #33183541
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо слева направо и справа налево
RiskaМожно ли вообще сделать такое? Надо добавить еще поле для галочки (английский или иврит) для проверки при получении из базы данных.

RightToLeft Property существует ТОЛЬКО у самого DW контрола, а НЕ у элементов dataobjectа.
Насколько я понимаю, сделать это можно только с помощью Subclassing Edit controlа, который РВ вешает над DW.
А вообще, обычно попытки сидеть одной жопой на двух стульях известно чем кончаются :-)
...
Рейтинг: 0 / 0
25.07.2005, 20:18
    #33183681
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо слева направо и справа налево
2 Riska
Ну вот чисто из соображений симметрии :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
dw.modify (<field> + ".RightToLeft='0~tr2l'")
// r2l - поле, принимающее значение  0  или  1 , в зависимости от условия
if <условие> then
  dw.SetItem(ll_row, "r2l",  1 )
else
  dw.SetItem(ll_row, "r2l",  0 )
end if
Сам не проверял...

ФилиппRightToLeft Property существует ТОЛЬКО у самого DW контрола, а НЕ у элементов dataobjectа.Код, приведенный здесь , работает (PB 7.0.3 build 10077, Win2000Prof Eng)
...
Рейтинг: 0 / 0
25.07.2005, 20:55
    #33183707
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо слева направо и справа налево
Надо пожаловаться в Сайбейз :-)
Ни в Хелпе, ни в Datawindow Reference книжке для 8-ки не упоминается...
В таком случае и на .Alignment нужно выставить такой же expression как и на .RightToLeft и всё будет ханки-дори...
...
Рейтинг: 0 / 0
26.07.2005, 12:32
    #33184623
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо слева направо и справа налево
PL992 Riska
Ну вот чисто из соображений симметрии :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
dw.modify (<field> + ".RightToLeft='0~tr2l'")
// r2l - поле, принимающее значение  0  или  1 , в зависимости от условия
if <условие> then
  dw.SetItem(ll_row, "r2l",  1 )
else
  dw.SetItem(ll_row, "r2l",  0 )
end if
Сам не проверял...
Это работает, как часы, например, с ".Background.Color". Но с ".RightToLeft" - полный балаган. Видимо, прав все-таки Филипп по поводу "стульев и прочего"...
...
Рейтинг: 0 / 0
26.07.2005, 13:28
    #33184835
Guest_1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо слева направо и справа налево
Riska PL992 Riska
Ну вот чисто из соображений симметрии :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
dw.modify (<field> + ".RightToLeft='0~tr2l'")
// r2l - поле, принимающее значение  0  или  1 , в зависимости от условия
if <условие> then
  dw.SetItem(ll_row, "r2l",  1 )
else
  dw.SetItem(ll_row, "r2l",  0 )
end if
Сам не проверял...
Это работает, как часы, например, с ".Background.Color". Но с ".RightToLeft" - полный балаган. Видимо, прав все-таки Филипп по поводу "стульев и прочего"...

Можно попробовать добавить два экземпляра одного поля, одному из них проставить .RightToLeft и в зависимости от раскладки менять свойство .Visible
...
Рейтинг: 0 / 0
27.07.2005, 17:18
    #33187591
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо слева направо и справа налево
Можно попробовать добавить два экземпляра одного поля, одному из них проставить .RightToLeft и в зависимости от раскладки менять свойство .Visible Все оказалось проще - объяснили клиенту, что красивей смотрится, когда текст начинается с одной стороны, а не с разных :)
...
Рейтинг: 0 / 0
27.07.2005, 18:50
    #33187813
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо слева направо и справа налево
Riska Можно попробовать добавить два экземпляра одного поля, одному из них проставить .RightToLeft и в зависимости от раскладки менять свойство .Visible Все оказалось проще - объяснили клиенту, что красивей смотрится, когда текст начинается с одной стороны, а не с разных :)
Вот он, элегантный и правильный отказ от сидения одной жопой на двух стульях :-) !!!!!
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Письмо слева направо и справа налево / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]