Программирование в Delphi. Трюки и эффекты - стр. 48
procedure TForm1.lblUnderlineMouseEnter(Sender: TObject);
begin
lblUnderline.Font.Style:= [fsUnderline];
lblUnderline.Font.Color:= RGB(0, 0, 255);
end;
procedure TForm1.lblUnderlineMouseLeave(Sender: TObject);
begin
lblUnderline.Font.Style:= [];
lblUnderline.Font.Color:= RGB(0, 0, 0);
end;
Для надписи, чтобы получилась довольно правдоподобная гиперссылка, осталось добавить только обработчик события Click, правда, выполнять она сможет любое действие, а не только переход по ссылке (достаточно лишь определить обработчик).
Для стандартной кнопки начертание шрифта также можно изменить (листинг 3.15).
procedureTForm1. cmbItalicBoldMouseMove (Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
cmbItalicBold.Font.Style:= [fsItalic, fsBold];
end;
procedure TForm1.lblItalicMouseEnter(Sender: TObject);
begin
lblItalic.Font.Style:= [fsItalic];
end
В листинге 3.15 используется обработчик MouseMove для кнопки потому, что обработчики событий MouseEnter и MouseLeave для нее (по крайней мере, с вкладки Standard) не предусмотрены.
Клавиатура
Клавиатура является основным средством ввода информации в компьютер, поэтому не будем обходить стороной и рассмотрим некоторые не так часто используемые или не такие очевидные возможности работы с ней. В этом разделе вы научитесь определять тип клавиатуры, а также будет разработана программа опроса клавиатуры. Также будет рассказано, как программным способом имитировать нажатия клавиш, и разработана программа «Бегущие огни на клавиатуре».
Получение информации о клавиатуре
Начнем с небольшого примера, позволяющего определить некоторую информацию о клавиатуре (листинг 3.16). Данный пример основан на использовании API-функции GetKeyboardType.
procedure TForm1.FormCreate(Sender: TObject);
begin
//Определяем тип клавиатуры
case GetKeyboardType(0) of
1: txt Type.Text:= 'PC/XT или совместимая (83 клавиши)';
2: txt Type.Text xtxt:= 'Olivetti" ICO " (102 клавиши)';
3: txt Type.Text xtxt:= 'PC/AT (84 клавиши) или похожая';
4: txt Type.Text:= 'Расширенная (101 или 102 клавиши)';
5: txt Type.Text:= 'Nokia 1050 или похожая';
6: txt Type.Text:= 'Nokia 9140 или похожая';
7: txt Type.Text:= 'японская';
end;
//Определяем код типа производителя
txtSubtype.Text:= IntToStr(GetKeyboardType(1));
//Определяем количество функциональных клавиш
txtKeys.Text:= IntToStr(GetKeyboardType(2));
end;
При создании формы происходит заполнение текстовых полей информацией о типе клавиатуры, коде типа, присвоенном производителем, и количестве функциональных клавиш.