Страница 1 из 1

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 10:44
NewUser
Здравствуйте!
CW6.3, ABC
Исходные данные: стандартные Browse, кнопки шаблона редактирования ?Insert, ?Change, ?Delete без названия, с иконками.
Получаю: в ниспадающем меню соответствующие пункты меню в виде иконок кнопок и их наименование на английском: Insert, Change, Delete.
Хочу: заменить английские надписи на русские.
Как это сделать?
Может с помощью SetItem? Тогда как правильно задать первые два параметра в SELF.SetItem(SELF.LocateName(NameToFollow),Level,Name,MenuText) (UNSIGNED AddAfter,UNSIGNED Level,STRING BaseName,STRING MenuText)?

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 10:56
Игорь Столяров
Привет !

Если "нисподающее меню" - это контекстное меню на BROWSE, то можно сделать вот так:

Код: Выделить всё

  ....
  ! Prepare Alert Keys
  SELF.SetAlerts()
   
  ! Вот здесь вставляем русификацию кнопок шаблона
  BRW1.Popup.SetText('Insert','Добавить<9>Ins')
  BRW1.Popup.SetText('Change','Изменить<9>Ctrl+Enter')
  BRW1.Popup.SetText('Delete','Удалить<9>Del')

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 11:11
NewUser
Спасибо, Игорь, за быстрый ответ!
Все получилось. Но тогда у меня вопрос. Почему название горячей клавиши (Del) в третьей строке, в отличии от двух предыдущих верхних строк, не сместилось на такую же величину вправо? Может из-за наличия вслед идущей разделительной линии?
PopUp.jpg.jpg
PopUp.jpg.jpg (6.69 КБ) 3174 просмотра

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 11:44
NewUser
Разделительная линия оказалась здесь не причем, а проблема разрешилась добавлением еще одного знака табуляции <9>. Хотя причина так и осталась не выясненной. Наверное она исходит из-за длины русских названий этих пунктов меню. Слово Удалить (7) короче слов Добавить и Изменить (8).

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 12:09
Игорь Столяров
NewUser писал(а): а проблема разрешилась добавлением еще одного знака табуляции <9>.
Бесполезно, это известный косяк RTL С63. Не лечится.
Все равно под другой темой оформления, системным шрифтом, Windows и т.д. будет смещаться.
Тот же самый код в сборке под C10 работает идеально:
PopUp10.jpg

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 12:51
kreator
Наличие в тексте пункта меню символа табулирования должно провоцировать выравнивание части строки после символа табулирования по правому краю. Не дело выравнивать разным количеством табов. И в С10 это реализовано правильно. С некоторых пор :mrgreen: .

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 14:31
Yufil
Там есть ещё одна проблема. В ряде случаев происходит переход не на тот пункт меню
В Browse это не видно, потому что слова Добавить, Изменить, Удалить расположены по алфавиту, а вот если надписи на кнопках не по алфавиту - может и взглюкнуть :(

Надо в abpopup.clw найти метод GetUniqueName, а там (строка примерно 674)

Код: Выделить всё

      CASE VAL (ThisItem[C])
      OF VAL('A') TO VAL('Z')
      OROF VAL('a') TO VAL('z')

И добавить пару строк

Код: Выделить всё

 
      OROF VAL('А') TO VAL('Я')   
      OROF VAL('а') TO VAL('я')   
и всё будет :P ...

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 15:10
NewUser
Спасибо всем откликнувшимся участникам!
И спасибо Юрию за освещение лежащих в дальнем углу граблей, наступить на которые совсем не хотелось бы!

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 16:11
kreator
Yufil писал(а):Там есть ещё одна проблема. В ряде случаев происходит переход не на тот пункт меню
В Browse это не видно, потому что слова Добавить, Изменить, Удалить расположены по алфавиту, а вот если надписи на кнопках не по алфавиту - может и взглюкнуть :(

Надо в abpopup.clw найти метод GetUniqueName, а там (строка примерно 674)

Код: Выделить всё

      CASE VAL (ThisItem[C])
      OF VAL('A') TO VAL('Z')
      OROF VAL('a') TO VAL('z')

И добавить пару строк

Код: Выделить всё

 
      OROF VAL('А') TO VAL('Я')   
      OROF VAL('а') TO VAL('я')   
и всё будет :P ...
Да это перестраховка, eсли вызывать метод AddItem вот так:

Код: Выделить всё

	BRW1.Popup.AddItem('Добавить')
Где и кто так делает?

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 16:58
Yufil
Ну да, возможно... Но у меня и самый обычный Browse глючил (кажется, если прятал кнопку, но могу и ошибаться), иначе нафиг бы я эту правку вноcил много-много лет назад. Кстати, эта тема уже обсуждалась, можно поиском на форуме по abpopup найти

Как исправить на русские надписи в PopUp меню

Добавлено: 13 Январь 2017, 21:04
kreator
Yufil писал(а):Ну да, возможно... Но у меня и самый обычный Browse глючил (кажется, если прятал кнопку, но могу и ошибаться), иначе нафиг бы я эту правку вноcил много-много лет назад. Кстати, эта тема уже обсуждалась, можно поиском на форуме по abpopup найти
Теоретически возможно. Нужно перелопатить классы и шаблоны. А что качается формирования меню для броуза, то там используется метод AddMimicButton, в котором нет вызова проблемного метода. Могу ошибаться, конечно.