powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Письмо слева направо и справа налево
10 сообщений из 10, страница 1 из 1
Письмо слева направо и справа налево
    #33183083
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая вот задачка.
В иврите слова пишутся справа налево. Клиент хочет, чтобы при попадании фокуса в определенное поле (edit) в DW программа сама автоматически определяла с какой стороны нужно поставить курсор - слева или справа (в зависимости от того, на каком языке будет клиент писать). Причем можно писать в одной строке на английском, а в другой - на иврите. Вопрос такой: можно ли, в зависимости от языка, переключать положение курсора ТОЛьКО в текущей строке, а не во всех строках? И как добраться к свойству RightToLeft у поля?
...
Рейтинг: 0 / 0
Письмо слева направо и справа налево
    #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
Письмо слева направо и справа налево
    #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
Письмо слева направо и справа налево
    #33183541
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RiskaМожно ли вообще сделать такое? Надо добавить еще поле для галочки (английский или иврит) для проверки при получении из базы данных.

RightToLeft Property существует ТОЛЬКО у самого DW контрола, а НЕ у элементов dataobjectа.
Насколько я понимаю, сделать это можно только с помощью Subclassing Edit controlа, который РВ вешает над DW.
А вообще, обычно попытки сидеть одной жопой на двух стульях известно чем кончаются :-)
...
Рейтинг: 0 / 0
Письмо слева направо и справа налево
    #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
Письмо слева направо и справа налево
    #33183707
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо пожаловаться в Сайбейз :-)
Ни в Хелпе, ни в Datawindow Reference книжке для 8-ки не упоминается...
В таком случае и на .Alignment нужно выставить такой же expression как и на .RightToLeft и всё будет ханки-дори...
...
Рейтинг: 0 / 0
Письмо слева направо и справа налево
    #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
Письмо слева направо и справа налево
    #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
Письмо слева направо и справа налево
    #33187591
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать добавить два экземпляра одного поля, одному из них проставить .RightToLeft и в зависимости от раскладки менять свойство .Visible Все оказалось проще - объяснили клиенту, что красивей смотрится, когда текст начинается с одной стороны, а не с разных :)
...
Рейтинг: 0 / 0
Письмо слева направо и справа налево
    #33187813
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Riska Можно попробовать добавить два экземпляра одного поля, одному из них проставить .RightToLeft и в зависимости от раскладки менять свойство .Visible Все оказалось проще - объяснили клиенту, что красивей смотрится, когда текст начинается с одной стороны, а не с разных :)
Вот он, элегантный и правильный отказ от сидения одной жопой на двух стульях :-) !!!!!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Письмо слева направо и справа налево
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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