Использование переменной в нескольких форм

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
KeYpa
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.10.2012 (Вт) 13:19

Использование переменной в нескольких форм

Сообщение KeYpa » 09.10.2012 (Вт) 0:11

Подскажите можно ли использовать одну и ту же переменную в нескольких формах...

(делаю обучающую программу. есть несколько разделов которые реализовал в разных формах. эта прога имеет в себе информацию на англ языке. добавил в каждый раздел по кнопочке ПЕРЕВОД. нужно чтобы все эти кнопки с разных форм были синхронизированны...)

надеюсь понятно изъяснился... если что я новичок...

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Re: Использование переменной в нескольких форм

Сообщение burik » 09.10.2012 (Вт) 1:23

Я бы делал примерно так:
Сделал модуль с процедурой аля:
Код: Выделить всё
Public Sub TranslateApplication(toLang As String)

    Dim Form As Form
    For Each Form In Forms
        CallByName Form, "Translate", VbMethod, toLang
    Next Form

End Sub

Ну и в каждой форме должна быть процедура вида Public Sub Translate(toLang As String) которая меняет язык в рамках этой формы.
Тогда кнопка смены языка, например, на русский должна вызвать TranslateApplication "ru".
Вложения
translate.zip
Вот простейший пример.
(3 Кб) Скачиваний: 64
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

KeYpa
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.10.2012 (Вт) 13:19

Re: Использование переменной в нескольких форм

Сообщение KeYpa » 10.10.2012 (Ср) 22:20

решил проблему объявив переменную через Public... а этим методом не смог воспользоватся, мне нужно было чтобы несколько labelov меняли visible на true false, видимо я чтото не так понял, это немного сложновато для меня)) но всеравно спс за помощь!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Использование переменной в нескольких форм

Сообщение Хакер » 11.10.2012 (Чт) 5:23

Блин, один делает страшную фигню, другой фигню советует.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

KeYpa
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.10.2012 (Вт) 13:19

Re: Использование переменной в нескольких форм

Сообщение KeYpa » 11.10.2012 (Чт) 13:06

ну я новичок в этом деле... было бы лучше если ты посоветовал чтонибуть...

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Использование переменной в нескольких форм

Сообщение ark » 12.10.2012 (Пт) 9:47

Запихни тексты в ресурсы через определённый промежуток, например
101 English text_1
102 English text_2
.....
10101 Русский текст_1
10102 Русский текст_2
.....
20101 un texte français_1
20102 un texte français_2
А дальше для смены текста lbl.Caption = LoadResString(LangID+LabelID), где LangID (глобальная) 0 для английского, 10000 для русского и т.д. LabelID можно хранить в свойстве Tag. Ну и что-нить вроде
Код: Выделить всё
Sub Translate(f As Form)
   For Each ctrl In f.Controls
      If Type Of ctrl Is Label Then
          If ctrl.Tag<>"" Then ctrl.Caption =  LoadResString(LangID+ctrl.Tag)
          'Если язык экзотичесикй, возможно, придется ещё поменять ctrl.Font.Charset
      End If
   Next
End Sub

Для спортивного интереса и чтоб поупражняться в использовании API можно пойти стандартным путём

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Использование переменной в нескольких форм

Сообщение Хакер » 13.10.2012 (Сб) 7:17

KeYpa писал(а):ну я новичок в этом деле... было бы лучше если ты посоветовал чтонибуть...

Если бы всё было так просто, если бы можно было просто посоветовать что-нибудь, я бы именно это и сделал — просто посоветовал что.
Но я вижу пугающую картину: не отсутствие знаний и понимания, а наличие неправильного знания и искажённого понимания. Тут ничего не посоветуешь, с этим надо тщательно бороться.

ark писал(а):А дальше для смены текста lbl.Caption = LoadResString(LangID+LabelID), где LangID (глобальная) 0 для английского, 10000 для русского и т.д. LabelID можно хранить в свойстве Tag. Ну и что-нить вроде

Зачем эта мура, когда ресурсы (все) от рождения имеют подуровень для разделения по локалям.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Использование переменной в нескольких форм

Сообщение ger_kar » 15.10.2012 (Пн) 18:33

Хакер писал(а):а наличие неправильного знания и искажённого понимания. Тут ничего не посоветуешь, с этим надо тщательно бороться.
А как бороться то, если не правильным советом и показом как правильно?
Бороться и искать, найти и перепрятать

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Использование переменной в нескольких форм

Сообщение ark » 18.11.2012 (Вс) 4:53

Хакер писал(а):Зачем эта мура, когда ресурсы (все) от рождения имеют подуровень для разделения по локалям
Затем, чтоб использовать родные VB-шные функции для работы с ресурсами. Иначе или АПИ, или MsgBox "Пожалуйста, выйдите из программы, измените язык интерфейса на ... в панели управления и перезапустите программу"

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Использование переменной в нескольких форм

Сообщение ger_kar » 18.11.2012 (Вс) 12:23

Сейчас посмотрел, и действительно родные VB-шные функции для работы с ресурсами не позволяют указать локаль. Вот лажа то!
Бороться и искать, найти и перепрятать


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 36

    TopList