Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 06.11.2013
Сообщений: 32

Изменить язык по щелчку на лейбл

20.01.2014, 16:21. Показов 2124. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, помогите пожалуйста сделать смену языка по щелчку мыши на лейбл. Т.е. кликая на лейбл "язык" менялся "русский/английский. Также когда пишешь окне мемо, что бы было видно на каком языке пишешь по тому же лейблу.
Получилось только это сделать
C++
1
2
3
4
5
6
7
void __fastcall TForm1::FormShortCut(TWMKey &Msg, bool &Handled)
{
    if(Msg.CharCode == 27) Form1->Close();
    if((Msg.CharCode >= 65)&&(Msg.CharCode <= 90)) Label4->Caption = "Àíãëèéñêèé";
    if(Msg.CharCode > 127) Label4->Caption = "Êàæèñü ðóññêèé";
}
int delta = 0;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2014, 16:21
Ответы с готовыми решениями:

По каждому щелчку мыши изменить цвет формы
Уважаемые, с языком С# сталкиваюсь впервые, и со средой разработки Visual Studio - в частности. Стоит передо мной, в общем, довольно-таки...

По щелчку мыши изменить значение в двух ячейках одновременно
нужно чтобы по щелчку мыши изменить значение в двух ячейках одновременно В методе click() объекта пишу Range('F10').Value = '12' ...

Изменить язык
Скажите, каким способом изменить язык всей программы? Думаю через .dll, но увы нет пособия, как им пользоваться! Если у вас есть какие-то...

10
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.01.2014, 16:54
Попробуй так:__
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Label1Click(TObject *Sender)
{
    if (Label1->Caption.SubString(1,2)=="En") { Label1->Caption="Ðóññêèé";
      LoadKeyboardLayout("00000419", KLF_ACTIVATE); }
    else { Label1->Caption="English";
      LoadKeyboardLayout("00000409", KLF_ACTIVATE); }
}
2
1 / 1 / 0
Регистрация: 06.11.2013
Сообщений: 32
20.01.2014, 17:23  [ТС]
nick42, спасибо работает, но теперь щёлкая на окно мемо нужно что бы в этом же лейбле отображал текущий язык
у меня пишет только "английский", "кажись русский" не пишет.
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.01.2014, 17:39
Ну, если на скорую руку, то вот так можно:__
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Memo1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    char kl[11]={0};
    GetKeyboardLayoutName(kl);
    String Kb=kl;
    Label2->Caption = Kb.ToIntDef(0)== 409 ? "English" : "Ðóññêèé";
}
хотя думаю, что есть способ попроще.
2
1 / 1 / 0
Регистрация: 06.11.2013
Сообщений: 32
20.01.2014, 18:02  [ТС]
Во, но Memo1KeyDown занята, сделал по onclick. Ну последние штрихи остались. После запуска программы, в поле лейбл отображается "Label", после того как щёлкнешь на лейбл меняется название. Как отображать текущий язык после запуска программы в лейбл. Если менять раскладку клавиатуры Shift+Alt рус/анг, то лейбл не меняется, как исправить?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.01.2014, 18:25
.. а что мешает вставить код отображения раскладки на событие FormCreate?
0
1 / 1 / 0
Регистрация: 06.11.2013
Сообщений: 32
20.01.2014, 19:37  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
.. а что мешает вставить код отображения раскладки на событие FormCreate?
Если я вас правильно понял, то у меня по заданию именно:"Необходимо в метку выводить текущее названия языка ввода символов в текстовое поле Memo. При щелчке по метке язык ввода меняется на противоположный (русский/английский)." Может я вообще не правильно понял суть первого предложения, как вы считаете?
0
☆ Форумчанин(FSC)☆
 Аватар для 2ima
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10
20.01.2014, 22:10
relic34ru, nick42 все верно написал, не раз так делал
0
1 / 1 / 0
Регистрация: 06.11.2013
Сообщений: 32
21.01.2014, 17:52  [ТС]
Ребята кто поможет реализовать смену раскладки клавиатуры по лейблу. А именно кликая мышкой по мемо должен показывать текущий язык в лейбле, также при переключении языка shift+ctrl показывал на лейбле состояние языка рус/анг.
Цитата Сообщение от FSC Посмотреть сообщение
relic34ru, nick42 все верно написал, не раз так делал
я и не спорю, но щёлкая по лейблу получается смена языка это пол беды(

Добавлено через 1 час 6 минут
В общем разобрался. Большое спасибо nick42 за помощь
ответ такой
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Memo1KeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
   char kl[11]={0};
    GetKeyboardLayoutName(kl);
    String Kb=kl;
    Label4->Caption = Kb.ToIntDef(0)== 409 ? "English" : "Русский";
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.01.2014, 18:10
.. ну вот вам вариант с перехватом (работает даже при потере фокуса формой):__
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//---------------------------------------------------------------------------
int  KeyboardProc(int nCode, DWORD wParam, DWORD lParam)
{
  static KBDLLHOOKSTRUCT *p;
  p = (KBDLLHOOKSTRUCT *)lParam;
  if (p->scanCode==0x1D || p->scanCode==0x2A)
 {
    char kl[11]={0};
    GetKeyboardLayoutName(kl);
    String Kb=kl;
    Form1->Label1->Caption = Kb.ToIntDef(0)== 409 ? "English" : "Ðóññêèé";
  }
 return 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 SetWindowsHookEx(WH_KEYBOARD_LL,
    (HOOKPROC)&KeyboardProc, GetModuleHandle(NULL), 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1Click(TObject *Sender)
{
    if (Label1->Caption.SubString(1,2)=="En") { Label1->Caption="Ðóññêèé";
      LoadKeyboardLayout("00000419", KLF_ACTIVATE); }
    else { Label1->Caption="English";
      LoadKeyboardLayout("00000409", KLF_ACTIVATE); }
}
//---------------------------------------------------------------------------
Добавлено через 4 минуты
P.S. ...хотя нет, - при потере фокуса раскладку не показывает
1
1 / 1 / 0
Регистрация: 06.11.2013
Сообщений: 32
21.01.2014, 19:36  [ТС]
nick42, Мне как раз нужно что бы в фокусе было, так по заданию.
В общем Спасибо большое, так к я написал выше пойдёт.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.01.2014, 19:36
Помогаю со студенческими работами здесь

По щелчку левой кнопки мыши должен меняться цвет формы, а по щелчку правой кнопки мыши – восстанавливаться предыдущий
Добрый день) Пишу одну программку, которая позволяла бы при перемещении курсора мыши менять его форму, в зависимости от четверти экрана,...

Изменить язык открытия БД
подключаю бд,которая заполнена на русском языке, выводится информация в виде иероглифов. Подскажите пожалуйста где это можно устранить?

Изменить язык TextBox
Как изменить язык при нажатии клавиши Enter в TextBox? тоесть если печатать не меняя в ручную язык, то первая строчка будет англ,...

Изменить язык системы
Как сменить язык системы? Не региональные настройки!

Изменить язык в шаблоне
Здравствуйте! Скачала данный шаблон http://www.templatemonster.com/free-templates/free-website-template-photographer-portfolio.php Незнаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru