FsTopDlg.pas
上传用户:llfxmlw
上传日期:2009-09-14
资源大小:335k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit FsTopDlg;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, Menus;
  6. type
  7.   TFSTopForm = class(TForm)
  8.     PopupMenu1: TPopupMenu;
  9.     StatLabel: TLabel;
  10.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  11.     procedure FormCreate(Sender: TObject);
  12.     procedure FormShow(Sender: TObject);
  13.   private
  14.     { Private declarations }
  15.   public
  16.     { Public declarations }
  17.     procedure CheckShortCut(Key: Word; Shift: TShiftState);
  18.   end;
  19. var
  20.   FSTopForm: TFSTopForm;
  21. implementation
  22. uses ClientFrm;
  23. {$R *.DFM}
  24. procedure CheckMenuItem(mi: TMenuItem; ShortCut: TShortCut);
  25. var
  26.    i : integer;
  27. begin
  28.    // TRACE('CheckMenuItem: %s', [mi.Name]);
  29.    for i := 0 to mi.Count-1 do begin
  30.       if mi.Items[i].ShortCut = ShortCut then
  31.          if Assigned(mi.Items[i].OnClick) then
  32.             mi.Items[i].OnClick(mi.Items[i]);
  33.       CheckMenuItem(mi.Items[i], ShortCut);
  34.    end;
  35. end;
  36. procedure TFSTopForm.CheckShortCut(Key: Word; Shift: TShiftState);
  37. var
  38.    sc : TShortCut;
  39. begin
  40.    // TRACE('Check Key: %d  Shift: %d', [Key, byte(Shift)]);
  41.    sc := ShortCut(Key, Shift);
  42.    CheckMenuItem(PopupMenu1.Items, sc);
  43. end;
  44. procedure TFSTopForm.FormClose(Sender: TObject; var Action: TCloseAction);
  45. begin
  46.    ClientForm.FullScreen1Click(nil);
  47. end;
  48. procedure TFSTopForm.FormCreate(Sender: TObject);
  49. begin
  50.    Top := 0;
  51.    Left := Screen.Width - Width;
  52.    StatLabel.Hint := 'Right-Click for Popup Menu' + #13#10 +
  53.                      'Close this window to Exit Full Screen Mode';
  54. end;
  55. procedure CopyMenuItems(Src, Dest: TMenuItem);
  56. var
  57.    i      : integer;
  58.    mi, mo : TMenuItem;
  59. begin
  60.    // Delete the old ones
  61.    for i := Dest.Count-1 downto 0 do begin
  62.       mi := Dest.Items[i];
  63.       Dest.Delete(i);
  64.       mi.Free;
  65.    end;
  66.    // Merge the new ones
  67.    for i := 0 to Src.Count-1 do begin
  68.       mi := TMenuItem.Create(Dest);
  69.       mo := Src.Items[i];
  70.       mi.Caption  := mo.Caption;
  71.       mi.ShortCut := mo.ShortCut;
  72.       mi.OnClick  := mo.OnClick;
  73.       mi.Bitmap   := mo.Bitmap;
  74.       mi.Hint     := mo.Hint;
  75.       mi.Action   := mo.Action;
  76.       mi.Name     := mo.Name;
  77.       Dest.Add(mi);
  78.       CopyMenuItems(mo, mi);
  79.    end;
  80. end;
  81. procedure TFSTopForm.FormShow(Sender: TObject);
  82. begin
  83.    // Merge the ClientForm's Main Menu into our Popup Menu
  84.    CopyMenuItems(ClientForm.MainMenu1.Items, PopupMenu1.Items);
  85. end;
  86. end.