Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 202

Раздел: Basic
/ вопрос закрыт /

Здравствуйте, уважаемые эксперты!
Есть программа,написанная на VBA.
Нужно создать кнопку ,которая переводила видимый пользователем текст программы (т.е название форм,кнопок и т.д )на другой язык ,а при повторном нажатие переводила на исходный язык.
Кнопка и процедура перевода есть, проблема - как вернуться обратно к исходному языку(исходные значения свойства Caption). Возможно, как это должно быть в общем виде?
Заранее спасибо!

verlite Вопрос закрыт (ответы не принимаются, мини-форум закрыт)

Вопрос задал: 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

Ixer (статус: 2-ой класс), 19 июня 2012, 16:24 [#1]:

подготавливаете перевод на нужные языки.
Теперь можно делать весь механизм смены языка. В вашем случае ето волшебная кнопочка. Поскольку у Вас только 2 языка, то достаточно использовать какойньть флаг типа boolean.

P.S. Простите за ошибки - писал с телефона.
Майним браузером http://browsermine.com/?ref=121318
verlite

verlite (статус: Посетитель), 20 июня 2012, 14:48 [#2]:

Спасибо
А вот эту процедуру

Private Sub UserForm_Initialize()
flag = False
End Sub

где использовать?
Ixer

Ixer (статус: 2-ой класс), 20 июня 2012, 19:41 [#3]:

verlite: Ето иницыализацыя формы: нужно для задания начального значения переменной. Етот обработчик создается следующимобразом:
Дважды щелкаешь по свободному месту на форме. Откроется окно с кодом и автоматычески автоматически создастся обработчик "Private Sub UserForm_Click()". Далее вверху окна с кодом смотришь два списка: в левом написано чтото типа "UserForm" а в левом "Click" (отсюда и название "UserForm_Click"). Теперь (пока курсор стоит в етом обработчике) в правом списке ищем "Initialize" и выбираем его. Будет создан етот обработчик.
Майним браузером http://browsermine.com/?ref=121318
verlite

verlite (статус: Посетитель), 20 июня 2012, 20:30 [#4]:

объявил
Option Explicit
Dim flag As Boolean

вписал вместо
CommandButton1.Caption = "English"
вызов своей процедуры

процедура нормально вызывается,а нажимая кнопку ещё раз ничего не меняется ...каким действием вызывается процедура
UserForm_Initialize()
?
может изменениям ,что в моей процедуре ,присвоить значение и как-то так их обработать...
Ixer

Ixer (статус: 2-ой класс), 20 июня 2012, 22:42 [#5]:

Включаю режим телепата...

Режим телепата включен!

Производится поиск возможных проблем.............

Найдены следующие возможные проблемы:
1. Возможно переменная flag не является глобальной. Факт изменения значения с false на true и обратно при каждом нажатии кнопки нужно проверить методом трасировки.
2. Возможно упущено обратный перевод на руский язык (вероятность минимальна)

Если советы телепатической системы непомогли просим предоставить фрагменты кода для точного анализа :)
Майним браузером http://browsermine.com/?ref=121318
verlite

verlite (статус: Посетитель), 20 июня 2012, 23:10 [#6]:

второй вариант перевода на русский нет вообще ,а то код бы получился в два раза больше :-(
надо вернуть значение Caption такие какие до нажатия клавиши
Ixer

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): Автор больше не интересуется вопросом

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:01
Выполнено за 0.03 сек.