home *** CD-ROM | disk | FTP | other *** search
/ BUG 15 / BUGCD1998_06.ISO / desktop / hotkey / hotkey95.exe / Source / hkList.pas < prev    next >
Pascal/Delphi Source File  |  1998-02-13  |  4KB  |  146 lines

  1. unit hkList;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ComCtrls, ExtCtrls, IniFiles;
  8.  
  9. type
  10.   TfrmHotkeyList = class(TForm)
  11.     pnlHotkeys: TPanel;
  12.     lvHotkeys: TListView;
  13.     procedure FormShow(Sender: TObject);
  14.     procedure FormCreate(Sender: TObject);
  15.     procedure FormDestroy(Sender: TObject);
  16.     procedure lvHotkeysDblClick(Sender: TObject);
  17.     procedure lvHotkeysKeyPress(Sender: TObject; var Key: Char);
  18.   private
  19.     procedure PerformHotkey;
  20.   public
  21.     procedure ReadHotkeys;
  22.     { Public declarations }
  23.   end;
  24.  
  25. var
  26.   frmHotkeyList: TfrmHotkeyList;
  27.  
  28. implementation
  29.  
  30. uses hkEdit;
  31.  
  32. {$R *.DFM}
  33.  
  34. procedure TfrmHotkeyList.ReadHotkeys;
  35. var
  36.   Stream   : TFileStream;
  37.   Reader   : TReader;
  38.   Index    : Integer;
  39.   Descript,
  40.   Action,
  41.   Command,
  42.   Hotkey   : String;
  43.   iIndex   : Integer;
  44. begin
  45.   try
  46.     Stream := TFileStream.Create(ChangeFileExt(Application.ExeName, '.hkd'), fmOpenRead);
  47.     try
  48.       Reader := TReader.Create(Stream, 4096);
  49.       try
  50.         lvHotkeys.Items.Clear;
  51.         Reader.ReadString; // version
  52.         Reader.ReadListBegin;
  53.         iIndex := 0;
  54.         while not Reader.EndOfList do
  55.          begin
  56.            Descript := Reader.ReadString;
  57.            Index    := Reader.ReadInteger;
  58.            Action   := frmHotkeyEdit.cboActions.Items[Index];
  59.            case Index of
  60.              0, 1: Command := Reader.ReadString;
  61.              2   : Command := frmHotkeyEdit.cboParams.Items[Reader.ReadInteger];
  62.              else  Command := '';
  63.            end;
  64.            Hotkey := frmHotkeyEdit.ReadHotkey(Reader);
  65.            if Reader.ReadBoolean then
  66.             begin
  67.               with lvHotkeys.Items.Add do
  68.                begin
  69.                  Caption := Descript;
  70.                  SubItems.Add(Action);
  71.                  SubItems.Add(Command);
  72.                  SubItems.Add(Hotkey);
  73.                  SubItems.Add(IntToStr(iIndex));
  74.                  inc(iIndex);
  75.                end;
  76.             end;
  77.          end;
  78.         Reader.ReadListEnd;
  79.       finally
  80.         Reader.Free;
  81.       end;
  82.     finally
  83.       Stream.Free;
  84.     end;
  85.   except                                  
  86.   end;
  87. end;
  88.  
  89. procedure TfrmHotkeyList.FormShow(Sender: TObject);
  90. begin
  91.   SetWindowPos(Application.Handle, 0, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_HIDEWINDOW);
  92.   ReadHotkeys;
  93. end;
  94.  
  95. procedure TfrmHotkeyList.FormCreate(Sender: TObject);
  96. var
  97.   i : integer;
  98. begin
  99.   with TInifile.Create(ChangeFileExt(Application.ExeName, '.ini')) do
  100.    begin
  101.      Width := ReadInteger('ViewWindow', 'Width', Width);
  102.      Height := ReadInteger('ViewWindow', 'Height',  Height);
  103.      for i:=0 to lvHotkeys.Columns.Count-1 do
  104.       with lvHotkeys.Columns[i] do
  105.        Width := ReadInteger('VWColumns', Caption, Width);
  106.      Free;
  107.    end;
  108. end;
  109.  
  110. procedure TfrmHotkeyList.FormDestroy(Sender: TObject);
  111. var
  112.   i : integer;
  113. begin
  114.   with TInifile.Create(ChangeFileExt(Application.ExeName, '.ini')) do
  115.    begin
  116.      WriteInteger('ViewWindow', 'Width', Width);
  117.      WriteInteger('ViewWindow', 'Height',  Height);
  118.      for i:=0 to lvHotkeys.Columns.Count-1 do
  119.       with lvHotkeys.Columns[i] do
  120.        WriteInteger('VWColumns', Caption, Width);
  121.      Free;
  122.    end;
  123. end;
  124.  
  125. procedure TfrmHotkeyList.PerformHotkey;
  126. begin
  127.   if lvHotkeys.Selected<>nil then
  128.    frmHotkeyEdit.HotkeyPressed(StrToInt(lvHotkeys.Selected.SubItems[2]));
  129. end;
  130.  
  131. procedure TfrmHotkeyList.lvHotkeysDblClick(Sender: TObject);
  132. begin
  133.   PerformHotkey;
  134. end;
  135.  
  136. procedure TfrmHotkeyList.lvHotkeysKeyPress(Sender: TObject; var Key: Char);
  137. begin
  138.   if Key=#13 then
  139.    begin
  140.      Key := #0;
  141.      PerformHotkey;
  142.    end;
  143. end;
  144.  
  145. end.
  146.