|
Вопрос # 6 202/ вопрос закрыт / |
|
Здравствуйте, уважаемые эксперты!
Есть программа,написанная на VBA.
Нужно создать кнопку ,которая переводила видимый пользователем текст программы (т.е название форм,кнопок и т.д )на другой язык ,а при повторном нажатие переводила на исходный язык.
Кнопка и процедура перевода есть, проблема - как вернуться обратно к исходному языку(исходные значения свойства Caption). Возможно, как это должно быть в общем виде?
Заранее спасибо!
 |
Вопрос задал: verlite (статус: Посетитель)
Вопрос отправлен: 19 июня 2012, 13:19
Состояние вопроса: закрыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Ixer
Здравствуйте, verlite!
Вот набросал вам пример на VBA:
Dim flag As Boolean
Private Sub CommandButton1_Click()
If flag Then
CommandButton1.Caption = "Russian"
Else
CommandButton1.Caption = "English"
End If
flag = Not flag
End Sub
Private Sub UserForm_Initialize()
flag = False
End Sub
Первая строка - ето глобальная переменная, должна бить обявлена раньше всех процедур.
Вам, собственно, остается лишь заменить текст "CommandButton1.Caption = "English"" на вызов вашей процедуры, которая выполнит перевод формы.
 |
Ответ отправил: Ixer (статус: 2-ой класс)
Время отправки: 19 июня 2012, 22:56
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 21 июня 2012, 11:14; участников в обсуждении: 3.
|
Ixer (статус: 2-ой класс), 19 июня 2012, 16:24 [#1]:
подготавливаете перевод на нужные языки.
Теперь можно делать весь механизм смены языка. В вашем случае ето волшебная кнопочка. Поскольку у Вас только 2 языка, то достаточно использовать какойньть флаг типа boolean.
P.S. Простите за ошибки - писал с телефона.
Майним браузером http://browsermine.com/?ref=121318
|
|
verlite (статус: Посетитель), 20 июня 2012, 14:48 [#2]:
Спасибо
А вот эту процедуру
Private Sub UserForm_Initialize()
flag = False
End Sub
где использовать?
|
|
Ixer (статус: 2-ой класс), 20 июня 2012, 19:41 [#3]:
verlite: Ето иницыализацыя формы: нужно для задания начального значения переменной. Етот обработчик создается следующимобразом:
Дважды щелкаешь по свободному месту на форме. Откроется окно с кодом и автоматычески автоматически создастся обработчик "Private Sub UserForm_Click()". Далее вверху окна с кодом смотришь два списка: в левом написано чтото типа "UserForm" а в левом "Click" (отсюда и название "UserForm_Click"). Теперь (пока курсор стоит в етом обработчике) в правом списке ищем "Initialize" и выбираем его. Будет создан етот обработчик.
Майним браузером http://browsermine.com/?ref=121318
|
|
verlite (статус: Посетитель), 20 июня 2012, 20:30 [#4]:
объявил Option Explicit
Dim flag As Boolean
вписал вместо CommandButton1.Caption = "English" вызов своей процедуры
процедура нормально вызывается,а нажимая кнопку ещё раз ничего не меняется ...каким действием вызывается процедура UserForm_Initialize() ?
может изменениям ,что в моей процедуре ,присвоить значение и как-то так их обработать...
|
|
Ixer (статус: 2-ой класс), 20 июня 2012, 22:42 [#5]:
Включаю режим телепата...
Режим телепата включен!
Производится поиск возможных проблем.............
Найдены следующие возможные проблемы:
1. Возможно переменная flag не является глобальной. Факт изменения значения с false на true и обратно при каждом нажатии кнопки нужно проверить методом трасировки.
2. Возможно упущено обратный перевод на руский язык (вероятность минимальна)
Если советы телепатической системы непомогли просим предоставить фрагменты кода для точного анализа
Майним браузером http://browsermine.com/?ref=121318
|
|
verlite (статус: Посетитель), 20 июня 2012, 23:10 [#6]:
второй вариант перевода на русский нет вообще ,а то код бы получился в два раза больше
надо вернуть значение Caption такие какие до нажатия клавиши
|
|
Ixer (статус: 2-ой класс), 21 июня 2012, 07:38 [#7]:
Ето невозможно! Нужно именно 2 варианта перевода. Нету такого языка програмирования в котором можно отменить присвоеное значение переменной, вернув прежнее. Можно только заново присвоить такое же.
П.С. Если у Вас уже есть процедура для перевода на английский, то сделать такуюже, для перевода на руский не проблема.
Майним браузером http://browsermine.com/?ref=121318
|
|
Толяныч (статус: 4-ый класс), 21 июня 2012, 11:14 [#8]:
Ну почему же ? Сохранить в буфере или файле прежнее значение. А как же "откат" - Undo во всех редакторах ?
|
25 июля 2012, 13:17: Вопрос закрыт (решение принял DNK): Автор больше не интересуется вопросом
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|