MainFrm.pas
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:3k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit MainFrm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, ExtCtrls, FileMap;
  6. type
  7.   TfrmMain = class(TForm)
  8.     btnWriteMap: TButton;
  9.     btnReadMap: TButton;
  10.     btnClear: TButton;
  11.     chkExistsAlready: TCheckBox;
  12.     chkIsMapOpen: TCheckBox;
  13.     btnOpenMap: TButton;
  14.     btnCloseMap: TButton;
  15.     mmoCont: TMemo;
  16.     chkAutoSynchronize: TCheckBox;
  17.     Label5: TLabel;
  18.     lblHelp: TLabel;
  19.     procedure btnWriteMapClick(Sender: TObject);
  20.     procedure btnReadMapClick(Sender: TObject);
  21.     procedure btnClearClick(Sender: TObject);
  22.     procedure btnOpenMapClick(Sender: TObject);
  23.     procedure btnCloseMapClick(Sender: TObject);
  24.     procedure FormCreate(Sender: TObject);
  25.     procedure chkAutoSynchronizeClick(Sender: TObject);
  26.     procedure mmoContKeyDown(Sender: TObject; var Key: Word;
  27.       Shift: TShiftState);
  28.   private
  29.     //定义TFileMap的对象
  30.     FileMap: TFileMap;
  31.     //定义FileMapChange用于赋给FileMap的OnChange事件
  32.     procedure FileMapChange(Sender: TObject);
  33.     procedure Check;
  34.    { Private declarations }
  35.   public
  36.   { Public declarations }
  37.   end;
  38. var
  39.   frmMain: TfrmMain;
  40. implementation
  41. {$R *.DFM}
  42. //检查FileMap的ExistsAlready和IsMapOpen属性
  43. procedure TfrmMain.Check;
  44. begin
  45.   chkExistsAlready.Checked := FileMap.ExistsAlready;
  46.   chkIsMapOpen.Checked := FileMap.IsMapOpen;
  47. end;
  48. //在窗体创建时,初始化FileMap对象
  49. procedure TfrmMain.FormCreate(Sender: TObject);
  50. begin
  51.   //创建对象FileMap
  52.   FileMap := TFileMap.Create(self);
  53.   FileMap.OnChange := FileMapchange;
  54.   chkAutoSynchronize.Checked := FileMap.AutoSynchronize;
  55.   //如果内存对象还未创建,初始化FileMap里的内容
  56.   if not FileMap.ExistsAlready then
  57.   begin
  58.     MmoCont.Lines.LoadFromFile('Project1.dpr');
  59.     FileMap.MapStrings.Assign(MmoCont.Lines);
  60.   end;
  61.   lblHelp.Caption := '使用说明:运行两个或多个此应用程序,按下“打开内存映射”按钮,'
  62.     + #13 + '选中“是否同步”复选框,在备注框里改动,在另外的应用程序中将会'
  63.     + #13 + '该动后的信息,同时也可以读写数据按钮来获取共享信息'
  64. end;
  65. //写入内存文件映射的数据
  66. procedure TfrmMain.btnWriteMapClick(Sender: TObject);
  67. begin
  68.   FileMap.WriteMap;
  69. end;
  70. //读取内存文件映射的数据
  71. procedure TfrmMain.btnReadMapClick(Sender: TObject);
  72. begin
  73.   FileMap.ReadMap;
  74. end;
  75. //清除内存文件数据
  76. procedure TfrmMain.btnClearClick(Sender: TObject);
  77. begin
  78.   Mmocont.Clear;
  79.   FileMap.MapStrings.Clear;
  80.   check;
  81. end;
  82. //打开内存文件映射
  83. procedure TfrmMain.btnOpenMapClick(Sender: TObject);
  84. begin
  85.   FileMap.MapName := 'Delphi 6 ';
  86.   FileMap.OpenMap;
  87.   check;
  88. end;
  89. //关闭内存映射
  90. procedure TfrmMain.btnCloseMapClick(Sender: TObject);
  91. begin
  92.   FileMap.CloseMap;
  93.   Check;
  94. end;
  95. //当内存映射文件的数据改变时,显示最新数据
  96. procedure TfrmMain.FileMapChange(Sender: TObject);
  97. begin
  98.   Mmocont.Lines.Assign(FileMap.MapStrings);
  99.   Check;
  100. end;
  101. //设置是否同步显示
  102. procedure TfrmMain.chkAutoSynchronizeClick(Sender: TObject);
  103. begin
  104.   FileMap.AutoSynchronize := chkAutoSynchronize.Checked;
  105. end;
  106. //在备注框里写时,同时更新进内存映射文件
  107. procedure TfrmMain.mmoContKeyDown(Sender: TObject; var Key: Word;
  108.   Shift: TShiftState);
  109. begin
  110.   FileMap.MapStrings.Assign(MmoCont.Lines);
  111. end;
  112. end.