104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 964
Записей в блоге: 16
1

Как сделать подсветку текста, и привязки кнопки к определенный клавиши клавиатуры?

18.10.2010, 11:17. Показов 3709. Ответов 7
Метки нет (Все метки)

Как сделать подцветку текста, и привязки кнопки к определенный клавиши клавиатуры? например Enter?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2010, 11:17
Ответы с готовыми решениями:

Как сделать подсветку искомого текста в angular, используя directive?
Как сделать подсветку искомого текста в angular, используя структурную директиву? Есть поле поиска...

Как сделать считывание клавиши с клавиатуры в реальном времени?
Хочу написать тетрис, и возник такой вопрос. Я пока знаю только getch, а он стопорит программу пока...

Поддерживать нажатое состояние кнопки/клавиши. Как это сделать?
Нужно сделать так, чтобы по нажатию на элемент сработало событие mousedown, а mouseup было...

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

7
говнокодер
1272 / 296 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
18.10.2010, 13:06 2
Насчет подсветки я недопонял, в каком компоненте? и вообще, что вы имеете ввиду под словом подсветка?

а насчет привязки тут все относительно просто, есть несколько вариантов:

1) В конкретном компоненте Memo/RichEdit/на Форме.. и т.п., там где требуется клик и ведется работа можно воткнуть код:
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if (Key==VK_RETURN)
        {
        Button1->Click();
        }
}
//---------------------------------------------------------------------------
на событие KeyUp данного компонента, проблема в том что срабатывание будет только когда компонент активен.

2) как вариант, наиболее приемлемый - глобальные горячие клавиши:
C++
1
2
3
4
5
6
7
8
9
10
11
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
bool RHKret = RegisterHotKey(Form1->Handle,         // handle окна куда слать сообщение
WM_HOTKEY
                             0x00F,                 // Усл. идентификатор горячего ключа
                             MOD_WIN, // модификаторы (в данном случае win)
                             VK_F11              // код клавиши (f11)
                             );
}
//---------------------------------------------------------------------------
повесим на форму компонент ApplicationEvents и в его событии onMessage пропишем код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
      bool &Handled)
{
if (Msg.message == WM_HOTKEY) 
        {
        if (Msg.wParam == 0x00F) 
                {
                Button1->Click(); //когда юзер жмыхает вин+ф11 нажимается кнопка 1
                }
        }
 
}
//---------------------------------------------------------------------------
минус в том, что даже при неактивном окне проги при нажатии хоткея будет жаться кнопка.

3) можно замутить еще через хуки АПИ, но по мне геморройно при фактически аналогичном пункту 2 результате и код писать лень =)
с уважением sh4d°_°ff
1
104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 964
Записей в блоге: 16
18.10.2010, 13:28  [ТС] 3
Подцветка текста например в Memo, когда текст выделяется разными цветами... А еще лучше подсказать, как сделать, чтобы подцветка текста шла на определенный участок Memo, например приходят данные с сервера "[GREEN]Привет, [RED]юзер"Т.е. подцветка одним цветом идет до тех пор, пока не встретится другой цвет.
0
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
18.10.2010, 13:54 4
Почитай https://www.cyberforum.ru/cpp-... post968857
0
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
18.10.2010, 14:50 5
Вот как то так, только медленно и косяк с сортировкой

0
1
123
13
654
78
795

я думаю, надо нули добавлять вначало
Вложения
Тип файла: zip покраска.zip (561.4 Кб, 33 просмотров)
0
104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 964
Записей в блоге: 16
08.11.2010, 13:32  [ТС] 6
Цитата Сообщение от sh4d°_°ff Посмотреть сообщение
Насчет подсветки я недопонял, в каком компоненте? и вообще, что вы имеете ввиду под словом подсветка?
а насчет привязки тут все относительно просто, есть несколько вариантов: 1) В конкретном компоненте Memo/RichEdit/на Форме.. и т.п., там где требуется клик и ведется работа можно воткнуть код: Код C++1
2
3
4
5
6
7
8
9
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
* * * TShiftState Shift)
{
if (Key==VK_RETURN)
* * * * {
* * * * Button1->Click();
* * * * }
}
//---------------------------------------------------------------------------на событие KeyUp данного компонента, проблема в том что срабатывание будет только когда компонент активен. 2) как вариант, наиболее приемлемый - глобальные горячие клавиши: Код C++1
2
3
4
5
6
7
8
9
10
11
12
13
*
__fastcall TForm1::TForm1(TComponent* Owner)
* * * * : TForm(Owner)
{
bool RHKret = RegisterHotKey(Form1->Handle, * * * * // handle окна куда слать сообщение
WM_HOTKEY
* * * * * * * * * * * * * * *0x00F, * * * * * * * * // Усл. идентификатор горячего ключа
* * * * * * * * * * * * * * *MOD_WIN, // модификаторы (в данном случае win)
* * * * * * * * * * * * * * *VK_F11 * * * * * * *// код клавиши (f11)
* * * * * * * * * * * * * * *);
}
//---------------------------------------------------------------------------
*повесим на форму компонент ApplicationEvents и в его событии onMessage пропишем код: Код C++1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
* * * bool &Handled)
{
if (Msg.message == WM_HOTKEY)
* * * * {
* * * * if (Msg.wParam == 0x00F)
* * * * * * * * {
* * * * * * * * Button1->Click(); //когда юзер жмыхает вин+ф11 нажимается кнопка 1
* * * * * * * * }
* * * * }
*
}
//---------------------------------------------------------------------------
*минус в том, что даже при неактивном окне проги при нажатии хоткея будет жаться кнопка. 3) можно замутить еще через хуки АПИ, но по мне геморройно при фактически аналогичном пункту 2 результате и код писать лень =) с уважением sh4d°_°ff
только сейчас начал разбираться с куском кода под номером два, но не могу найти компонент ApplicationEvents, где он находится?
0
говнокодер
1272 / 296 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
08.11.2010, 18:14 7
в c++ builder 6 на вкладке additional. Иконка имеет вид факела в синем кружке, от которого отходят 3 стрелки.
0
104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 964
Записей в блоге: 16
09.11.2010, 18:53  [ТС] 8
а искал в Events

Добавлено через 3 минуты
пишет ошибку [C++ Error] Unit1.cpp(16): E2121 Function call missing ) в этой строчке 0x00F,
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2010, 18:53
Помогаю со студенческими работами здесь

Как сделать вывод текста по нажатию клавиши Enter
Есть текстовый файл содержащий одну строку, из него надо вывести каждое слово но так чтобы когда...

Как отключить подсветку клавиатуры win 8.1
Проблема заключается в том, что после обновления Win 8.1, когда ноутбук (Asus zenbook ux32)...

Связать нажатие и отжатие клавиши клавиатуры и кнопки на форме
Приветствую! Простейшая с виду задача. Нужно сделать так, чтобы при нажатии на клавишу М,...

Обработать нажатие клавиши клавиатуры и кнопки мыши в документе Word
Доброго времени суток! У меня возник вопрос: как можно обработать нажатие клавиши клавиатуры и...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru