home *** CD-ROM | disk | FTP | other *** search
/ Delphi 4 Bible / Delphi_4_Bible_Tom_Swan_IDG_Books_1998.iso / source / KEYINFO / MAIN.PAS < prev   
Pascal/Delphi Source File  |  1998-04-04  |  2KB  |  97 lines

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, SysUtils, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, Buttons, StdCtrls, ExtCtrls;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     Label2: TLabel;
  12.     CharLabel: TLabel;
  13.     Label3: TLabel;
  14.     Label4: TLabel;
  15.     ValueLabel: TLabel;
  16.     ShiftLabel: TLabel;
  17.     Bevel1: TBevel;
  18.     Bevel2: TBevel;
  19.     Bevel3: TBevel;
  20.     Label1: TLabel;
  21.     Bevel4: TBevel;
  22.     Bevel5: TBevel;
  23.     Bevel6: TBevel;
  24.     Bevel7: TBevel;
  25.     CloseButton: TBitBtn;
  26.     procedure FormKeyDown(Sender: TObject; var Key: Word;
  27.       Shift: TShiftState);
  28.     procedure FormKeyPress(Sender: TObject; var Key: Char);
  29.     procedure FormKeyUp(Sender: TObject; var Key: Word;
  30.       Shift: TShiftState);
  31.   private
  32.     { Private declarations }
  33.   public
  34.     { Public declarations }
  35.   end;
  36.  
  37. var
  38.   MainForm: TMainForm;
  39.  
  40. implementation
  41.  
  42. {$R *.DFM}
  43.  
  44. const
  45.   ctrl_A = 1;     { ASCII value for Ctrl+A }
  46.   ctrl_Z = 26;    { ASCII value for Ctrl+Z }
  47.  
  48.   FunctionKeys: array [vk_f1 .. vk_f12] of string[3] =
  49.     ('F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8',
  50.      'F9', 'F10', 'F11', 'F12');
  51.  
  52. procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
  53.   Shift: TShiftState);
  54. var
  55.   s: string;
  56. begin
  57. {- Show integer Key value }
  58.   ValueLabel.Caption := IntToStr(Key);
  59. {- Show Key shift state }
  60.   s := '';
  61.   if ssShift  in Shift then s := s + 'Shift+';
  62.   if ssAlt    in Shift then s := s + 'Alt+';
  63.   if ssCtrl   in Shift then s := s + 'Ctrl+';
  64.   if Length(s) > 0 then
  65.     Delete(s, Length(s), 1); { Delete final '+' }
  66.   ShiftLabel.Caption := s;
  67. {- Do function key labels }
  68.   if Key in [vk_f1 .. vk_f12] then
  69.     CharLabel.Caption := FunctionKeys[Key]
  70.   else
  71.     CharLabel.Caption := '';  { Erase old character label }
  72. {- Disable Spacebar to prevent selecting Close button }
  73.   if Key = vk_space then
  74.     Key := 0;
  75. end;
  76.  
  77. procedure TMainForm.FormKeyPress(Sender: TObject; var Key: Char);
  78. begin
  79.   if Ord(Key) in [ctrl_A .. ctrl_Z] then
  80.     CharLabel.Caption := '^' + Chr(Ord(Key) + Ord('A') - 1)
  81.   else
  82.     CharLabel.Caption := Key;
  83.   ValueLabel.Caption := IntToStr(Ord(Key));
  84. end;
  85.  
  86. procedure TMainForm.FormKeyUp(Sender: TObject; var Key: Word;
  87.   Shift: TShiftState);
  88. begin
  89. {- Erase the three labels when user releases key(s) }
  90.   CharLabel.Caption := '';
  91.   ValueLabel.Caption := '';
  92.   ShiftLabel.Caption := '';
  93. end;
  94.  
  95. end.
  96.  
  97.