Комбинация клавиш ALT-? в диалоговом окне О ПРОГРАММЕ
...во всяком случае этот код делает что-то похожее. Тем не менее, если у вас имеется условие shift=[ssalt], то это означает, что нажатие клавиши интерпретируется обработчиком по-умолчанию, и каждое нажатие вызывает сигнал динамика. На форме вам нужно выставить флажок previewkey.
Разместите следующий код в обработчике события OnKeyDown:
procedure TAboutBox.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i:integer; working:integer; begin if (shift=[ssalt]) and (key>=$41) and (key<=$5A) then begin s:=s+chr(key); working:=0; for i:=1 to 4 do begin if (s=copy(strings[i],1,length(s))) then working:=-i; if (s=strings[i]) then working:=i; end; if working=0 then s:=''; if working>0 then showmessage(strings[working]); end; end; |
Создайте обработчик события создания формы: {для проверки на то, что первоначально строка будет пустая}
procedure TAboutBox.FormCreate(Sender: TObject); begin s:=''; end; |
В верхней части модуля формы для определения различных сообщений:
type Tst=array[1..4] of string; const strings:Tst= ('ПРИВЕТ','ПОКА','ВЕРСИЯ','ПРОГРАММИСТ'); |
В секции public вашей формы:
public s:string; |
Разместите вне экрана кнопку с комбинацией горячих клавиш Alt-?. Поскольку речь идет о диалоговом окне "О программе", то, по всей видимости, окно не ресайзится, и значит пользователь никогда не увидит вашу кнопку. Все, что вы хотели бы сделать по этим горячим клавишам, поместите в обработчик события OnClick. [001989]