⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ikeyboard.pas

📁 iocopm3.04源码,一套很好的工控开发工具
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    (FButtonList.Objects[i] as TiButton).MouseDown := False;
  inherited;
end;
//****************************************************************************************************************************************************
function TiKeyBoard.GetRowSize(RowList: TStringList): Integer;
var
  x : Integer;
begin
  Result := 0;
  for x := 0 to RowList.Count-1 do
    Result := Result + (RowList.Objects[x] as TiKeyBoardButton).Size;
end;
//****************************************************************************************************************************************************
procedure TiKeyBoard.CalcRects;
var
  x           : Integer;
  Row         : Integer;
  Col         : Integer;
  Button      : TiKeyBoardButton;
  RowIndex    : Integer;
  RowList     : TStringList;
  CurrentLeft : Integer;
  RowSize     : Integer;
  RowSizeMax  : Integer;
  XSizePixels : Integer;
  YSizePixels : Integer;
  XStart      : Integer;
  YStart      : Integer;
begin
  RemoveAllRows;

  for x := 0 to FButtonList.Count-1 do
    begin
      Button := (FButtonList.Objects[x] as TiKeyBoardButton);

      RowIndex := FRowListManager.IndexOf(IntToStr(Button.Row));
      if RowIndex = - 1 then
        begin
          RowList := TStringList.Create;
          FRowListManager.AddObject(IntToStr(Button.Row), RowList);
        end
      else RowList := FRowListManager.Objects[RowIndex] as TStringList;

      RowList.AddObject('', Button);
    end;
                         
  RowSizeMax := 1;
  for x := 0 to FRowListManager.Count-1 do
    begin                       
      RowSize := GetRowSize(FRowListManager.Objects[x] as TStringList);
      if RowSize > RowSizeMax then RowSizeMax := RowSize;
    end;


  XSizePixels := (Width -2*FOuterMargin                 ) div RowSizeMax;
  YSizePixels := (Height-2*FOuterMargin-FSecondRowMargin) div FRowListManager.Count;

  XStart := (Width  - XSizePixels*RowSizeMax                             ) div 2;
  YStart := (Height - YSizePixels*FRowListManager.Count -FSecondRowMargin) div 2;


  for Row := 0 to FRowListManager.Count-1 do
    begin
      CurrentLeft := XStart;
      RowList := FRowListManager.Objects[Row] as TStringList;
      for Col := 0 to RowList.Count-1 do
        begin
          Button := (RowList.Objects[Col] as TiKeyBoardButton);
          if Row = 0 then
            Button.Top    := Button.Row * YSizePixels + YStart
          else
            Button.Top    := Button.Row * YSizePixels + YStart + FSecondRowMargin;

          if Button.DoubleHeight then
            Button.Bottom := Button.Top + 2*YSizePixels
          else
            Button.Bottom := Button.Top + YSizePixels;
            
          Button.Left   := CurrentLeft;
          Button.Right  := CurrentLeft + XSizePixels*Button.Size;

          CurrentLeft := Button.Right;
        end;
    end;
end;
//****************************************************************************************************************************************************
procedure TiKeyBoard.iPaintTo(Canvas: TCanvas);
var
  i      : Integer;
  Button : TiKeyBoardButton;
begin
  with Canvas do
    begin
      CalcRects;
      DrawBackGround(Canvas, BackGroundColor);
      Font.Assign(FFont);
      Brush.Style := bsClear;

      for i := 0 to FButtonList.Count-1 do
        begin
          Button := (FButtonList.Objects[i] as TiKeyBoardButton);
          if not Button.Visible         then Continue;
          if Button.Style = ikbbsSpacer then Continue;
          Button.Draw(Canvas);
        end;
    end;
end;
//*************************************************************************************************************************************
procedure TiKeyBoard.LoadKeyData(Index, VirtualKeyCode: Integer; Style: TiKeyBoardButtonStyle; CaptionStandard, CaptionShift: String; AcceptLock: Boolean);
begin
  KeyDataArray[Index].Style           := Style;
  KeyDataArray[Index].CaptionStandard := CaptionStandard;
  KeyDataArray[Index].CaptionShift    := CaptionShift;
  KeyDataArray[Index].VirtualKeyCode  := Index;
  KeyDataArray[Index].AcceptLock      := AcceptLock;
end;
//*************************************************************************************************************************************
procedure TiKeyBoard.LoadKeyDataArray;
begin
  LoadKeyData(iVK_BACK,         8, ikbbsStandard, 'bksp', '',  False);
  LoadKeyData(iVK_TAB,          9, ikbbsStandard, 'Tab',  '',  False);
  //                           10 Undefined
  //                           11 Undefined
  //                           12 iVK_Clear
  LoadKeyData(iVK_RETURN,      13, ikbbsStandard, 'Enter','',  False);
  //                           14 Undefined
  //                           15 Undefined
  LoadKeyData(iVK_SHIFT,       16, ikbbsShift,    'Shift','',  False);
  LoadKeyData(iVK_CONTROL,     17, ikbbsCtrl,     'Ctrl', '',  False);
  LoadKeyData(iVK_MENU,        18, ikbbsAlt,      'Alt',  '',  False);
  LoadKeyData(iVK_PAUSE,       19, ikbbsStandard, 'brk',  '',  False);
  LoadKeyData(iVK_CAPITAL,     20, ikbbsLock,     'Lock', '',  False);
  //                           21 iVK_KANA or iVK_HANGUEL or iVK_HANGUL
  //                           22 Undefined
  //                           23 iVK_JUNJA
  //                           24 iVK_FINAL
  //                           25 iVK_HANJA or iVK_KANJI
  //                           26 Undefined
  LoadKeyData(iVK_ESCAPE,      27, ikbbsStandard, 'Esc',  '',  False);
  //                           28 iVK_CONVERT (IME)
  //                           29 iVK_NONCONVERT(IME)
  //                           30 iVK_ACCEPT(IME)
  //                           31 iVK_MODECHANGE(IME)
  LoadKeyData(iVK_SPACE,       32, ikbbsStandard, '',     '',  False);
  LoadKeyData(iVK_PRIOR,       33, ikbbsStandard, 'pup',  '',  False);
  LoadKeyData(iVK_NEXT,        34, ikbbsStandard, 'pdn',  '',  False);
  LoadKeyData(iVK_END,         35, ikbbsStandard, 'end',  '',  False);
  LoadKeyData(iVK_HOME,        36, ikbbsStandard, 'hm',   '',  False);
  LoadKeyData(iVK_LEFT,        37, ikbbsStandard, 'L',    '',  False);
  LoadKeyData(iVK_UP,          38, ikbbsStandard, 'U',    '',  False);
  LoadKeyData(iVK_RIGHT,       39, ikbbsStandard, 'R',    '',  False);
  LoadKeyData(iVK_DOWN,        40, ikbbsStandard, 'D',    '',  False);
  //                           41 iVK_SELECT
  //                           42 iVK_PRINT
  //                           43 iVK_EXECUTE
  LoadKeyData(iVK_SNAPSHOT,    44, ikbbsStandard, 'psc',  '',  False);
  LoadKeyData(iVK_INSERT,      45, ikbbsStandard, 'ins',  '',  False);
  LoadKeyData(iVK_DELETE,      46, ikbbsStandard, 'del',  '',  False);
  //                           47 iVK_HELP
  LoadKeyData(iVK_0,           48, ikbbsStandard, '0',   ')',  False);
  LoadKeyData(iVK_1,           49, ikbbsStandard, '1',   '!',  False);
  LoadKeyData(iVK_2,           50, ikbbsStandard, '2',   '@',  False);
  LoadKeyData(iVK_3,           51, ikbbsStandard, '3',   '#',  False);
  LoadKeyData(iVK_4,           52, ikbbsStandard, '4',   '$',  False);
  LoadKeyData(iVK_5,           53, ikbbsStandard, '5',   '%',  False);
  LoadKeyData(iVK_6,           54, ikbbsStandard, '6',   '^',  False);
  LoadKeyData(iVK_7,           55, ikbbsStandard, '7',   '&',  False);
  LoadKeyData(iVK_8,           56, ikbbsStandard, '8',   '*',  False);
  LoadKeyData(iVK_9,           57, ikbbsStandard, '9',   '(',  False);
  //                           58 Undefined
  //                           59 Undefined
  //                           60
  //                           61
  //                           62
  //                           63
  //                           64
  LoadKeyData(iVK_A,           65, ikbbsStandard, 'a',   'A',  True);
  LoadKeyData(iVK_B,           66, ikbbsStandard, 'b',   'B',  True);
  LoadKeyData(iVK_C,           67, ikbbsStandard, 'c',   'C',  True);
  LoadKeyData(iVK_D,           68, ikbbsStandard, 'd',   'D',  True);
  LoadKeyData(iVK_E,           69, ikbbsStandard, 'e',   'E',  True);
  LoadKeyData(iVK_F,           70, ikbbsStandard, 'f',   'F',  True);
  LoadKeyData(iVK_G,           71, ikbbsStandard, 'g',   'G',  True);
  LoadKeyData(iVK_H,           72, ikbbsStandard, 'h',   'H',  True);
  LoadKeyData(iVK_I,           73, ikbbsStandard, 'i',   'I',  True);
  LoadKeyData(iVK_J,           74, ikbbsStandard, 'j',   'J',  True);
  LoadKeyData(iVK_K,           75, ikbbsStandard, 'k',   'K',  True);
  LoadKeyData(iVK_L,           76, ikbbsStandard, 'l',   'L',  True);
  LoadKeyData(iVK_M,           77, ikbbsStandard, 'm',   'M',  True);
  LoadKeyData(iVK_N,           78, ikbbsStandard, 'n',   'N',  True);
  LoadKeyData(iVK_O,           79, ikbbsStandard, 'o',   'O',  True);
  LoadKeyData(iVK_P,           80, ikbbsStandard, 'p',   'P',  True);
  LoadKeyData(iVK_Q,           81, ikbbsStandard, 'q',   'Q',  True);
  LoadKeyData(iVK_R,           82, ikbbsStandard, 'r',   'R',  True);
  LoadKeyData(iVK_S,           83, ikbbsStandard, 's',   'S',  True);
  LoadKeyData(iVK_T,           84, ikbbsStandard, 't',   'T',  True);
  LoadKeyData(iVK_U,           85, ikbbsStandard, 'u',   'U',  True);
  LoadKeyData(iVK_V,           86, ikbbsStandard, 'v',   'V',  True);
  LoadKeyData(iVK_W,           87, ikbbsStandard, 'w',   'W',  True);
  LoadKeyData(iVK_X,           88, ikbbsStandard, 'x',   'X',  True);
  LoadKeyData(iVK_Y,           89, ikbbsStandard, 'y',   'Y',  True);
  LoadKeyData(iVK_Z,           90, ikbbsStandard, 'z',   'Z',  True);

  LoadKeyData(iVK_LWIN,        91, ikbbsStandard, 'W',    '',  False);
  LoadKeyData(iVK_RWIN,        92, ikbbsStandard, 'W',    '',  False);
  LoadKeyData(iVK_APPS,        93, ikbbsStandard, 'L',    '',  False);
  //                           94 Reserved
  //                           95 iVK_SLEEP
  LoadKeyData(iVK_NUMPAD0,     96, ikbbsStandard, '0',    '',  False);
  LoadKeyData(iVK_NUMPAD1,     97, ikbbsStandard, '1',    '',  False);
  LoadKeyData(iVK_NUMPAD2,     98, ikbbsStandard, '2',    '',  False);
  LoadKeyData(iVK_NUMPAD3,     99, ikbbsStandard, '3',    '',  False);
  LoadKeyData(iVK_NUMPAD4,    100, ikbbsStandard, '4',    '',  False);
  LoadKeyData(iVK_NUMPAD5,    101, ikbbsStandard, '5',    '',  False);
  LoadKeyData(iVK_NUMPAD6,    102, ikbbsStandard, '6',    '',  False);
  LoadKeyData(iVK_NUMPAD7,    103, ikbbsStandard, '7',    '',  False);
  LoadKeyData(iVK_NUMPAD8,    104, ikbbsStandard, '8',    '',  False);
  LoadKeyData(iVK_NUMPAD9,    105, ikbbsStandard, '9',    '',  False);
  LoadKeyData(iVK_MULTIPLY,   106, ikbbsStandard, '*',    '',  False);
  LoadKeyData(iVK_ADD,        107, ikbbsStandard, '+',    '',  False);
  //                          108 iVK_SEPARATOR
  LoadKeyData(iVK_SUBTRACT,   109, ikbbsStandard, '-',    '',  False);
  LoadKeyData(iVK_DECIMAL,    110, ikbbsStandard, '.',    '',  False);
  LoadKeyData(iVK_DIVIDE,     111, ikbbsStandard, '/',    '',  False);
  LoadKeyData(iVK_F1,         112, ikbbsStandard, 'F1',   '',  False);
  LoadKeyData(iVK_F2,         113, ikbbsStandard, 'F2',   '',  False);
  LoadKeyData(iVK_F3,         114, ikbbsStandard, 'F3',   '',  False);
  LoadKeyData(iVK_F4,         115, ikbbsStandard, 'F4',   '',  False);
  LoadKeyData(iVK_F5,         116, ikbbsStandard, 'F5',   '',  False);
  LoadKeyData(iVK_F6,         117, ikbbsStandard, 'F6',   '',  False);
  LoadKeyData(iVK_F7,         118, ikbbsStandard, 'F7',   '',  False);
  LoadKeyData(iVK_F8,         119, ikbbsStandard, 'F8',   '',  False);
  LoadKeyData(iVK_F9,         120, ikbbsStandard, 'F9',   '',  False);
  LoadKeyData(iVK_F10,        121, ikbbsStandard, 'F10',  '',  False);
  LoadKeyData(iVK_F11,        122, ikbbsStandard, 'F11',  '',  False);
  LoadKeyData(iVK_F12,        123, ikbbsStandard, 'F12',  '',  False);
  //                          124 iVK_F13
  //                          125 iVK_F14
  //                          126 iVK_F15
  //                          127 iVK_F16
  //                          128 iVK_F17
  //                          129 iVK_F18
  //                          130 iVK_F19
  //                          131 iVK_F20
  //                          132 iVK_F21
  //                          133 iVK_F22
  //                          134 iVK_F23
  //                          135 iVK_F24
  //                          136 Unassigned
  //                          ... ...
  //                          143 Unassigned
  LoadKeyData(iVK_NUMLOCK,    144, ikbbsNumLock,  'nlk',  '',  False);
  LoadKeyData(iVK_SCROLL,     145, ikbbsScroll,   'slk',  '',  False);
  //                          146 OEM Specific
  //                          ... OEM Specific
  //                          150 OEM Specific
  //                          151 Unassigned
  //                          ... Unassigned
  //                          159 Unassigned
  LoadKeyData(iVK_LSHIFT,     160, ikbbsShift,    'Shift','',  False);
  LoadKeyData(iVK_RSHIFT,     161, ikbbsShift,    'Shift','',  False);
  LoadKeyData(iVK_LCONTROL,   162, ikbbsCtrl,     'Ctrl', '',  False);
  LoadKeyData(iVK_RCONTROL,   163, ikbbsCtrl,     'Ctrl', '',  False);
  LoadKeyData(iVK_LMENU,      164, ikbbsAlt,      'Alt',  '',  False);
  LoadKeyData(iVK_RMENU,      165, ikbbsAlt,      'Alt',  '',  False);

  LoadKeyData(iVK_OEM_1,      186, ikbbsStandard, ';',    ':', False);

  LoadKeyData(iVK_OEM_PLUS,   187, ikbbsStandard, '=',    '+', False);
  LoadKeyData(iVK_OEM_COMMA,  188, ikbbsStandard, ',',    '<', False);
  LoadKeyData(iVK_OEM_MINUS,  189, ikbbsStandard, '-',    '_', False);
  LoadKeyData(iVK_OEM_PERIOD, 190, ikbbsStandard, '.',    '>', False);
  LoadKeyData(iVK_OEM_2,      191, ikbbsStandard, '/',    '?', False);
  LoadKeyData(iVK_OEM_3,      192, ikbbsStandard, '`',    '~', False);

  LoadKeyData(iVK_OEM_4,      219, ikbbsStandard, '[',    '{', False);
  LoadKeyData(iVK_OEM_5,      220, ikbbsStandard, '\',    '|', False);
  LoadKeyData(iVK_OEM_6,      221, ikbbsStandard, ']',    '}', False);
  LoadKeyData(iVK_OEM_7,      222, ikbbsStandard, '''',   '"', False);
end;
//****************************************************************************************************************************************************
procedure TiKeyBoard.Setup104;
var
  Row : Integer;
begin
  RemoveAllButtons;

  Row := 0;
  CreateButton(iVK_ESCAPE,     Row,  2, False);
  CreateSpacer(                Row,  2);
  CreateButton(iVK_F1,         Row,  2, False);
  CreateButton(iVK_F2,         Row,  2, False);
  CreateButton(iVK_F3,         Row,  2, False);
  CreateButton(iVK_F4,         Row,  2, False);
  CreateSpacer(                Row,  1);
  CreateButton(iVK_F5,         Row,  2, False);
  CreateButton(iVK_F6,         Row,  2, False);
  CreateButton(iVK_F7,         Row,  2, False);
  CreateButton(iVK_F8,         Row,  2, False);
  CreateSpacer(                Row,  1);
  CreateButton(iVK_F9,         Row,  2, False);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -