home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programming Unleashed / Delphi_Programming_Unleashed_SAMS_Publishing_1995.iso / chap32 / cli-serv / mainc.pas < prev    next >
Pascal/Delphi Source File  |  1995-03-20  |  3KB  |  121 lines

  1. unit Mainc;
  2.  
  3. { Program copyright (c) 1995 by Charles Calvert }
  4. { Project Name: CLI-SERV }
  5.  
  6. {
  7.   Every call to LoadResource needs to be followed
  8.   by a call to FreeResource. Also, LockResource is
  9.   paired with UnLockResource. I provide examples
  10.   below that demonstrate how this works.
  11. }
  12.  
  13. interface
  14.  
  15. uses
  16.   SysUtils, WinTypes, WinProcs,
  17.   Messages, Classes, Graphics,
  18.   Controls, Forms, Dialogs,
  19.   DdeMan, StdCtrls, ExtCtrls,
  20.   Buttons, Menus;
  21.  
  22. type
  23.   TClientOne = class(TForm)
  24.     Panel1: TPanel;
  25.     Label1: TLabel;
  26.     Label2: TLabel;
  27.     Label3: TLabel;
  28.     Label4: TLabel;
  29.     Label5: TLabel;
  30.     Label6: TLabel;
  31.     Conv1: TDdeClientConv;
  32.     Client1: TDdeClientItem;
  33.     Client2: TDdeClientItem;
  34.     Client3: TDdeClientItem;
  35.     Poke1: TBitBtn;
  36.     Poke2: TBitBtn;
  37.     Poke3: TBitBtn;
  38.     MainMenu1: TMainMenu;
  39.     Options1: TMenuItem;
  40.     Clear1: TMenuItem;
  41.     Close1: TMenuItem;
  42.     procedure Client1Change(Sender: TObject);
  43.     procedure FormCreate(Sender: TObject);
  44.     procedure Poke1Click(Sender: TObject);
  45.     procedure Poke2Click(Sender: TObject);
  46.     procedure Poke3Click(Sender: TObject);
  47.     procedure Clear1Click(Sender: TObject);
  48.     procedure Close1Click(Sender: TObject);
  49.     procedure FormDestroy(Sender: TObject);
  50.   private
  51.     { Private declarations }
  52.     Resource: THandle;
  53.   public
  54.     { Public declarations }
  55.   end;
  56.  
  57. var
  58.   ClientOne: TClientOne;
  59.  
  60. implementation
  61.  
  62. {$R *.DFM}
  63. {$R MILTON1.RES}
  64.  
  65. procedure TClientOne.Client1Change(Sender: TObject);
  66. begin
  67.   Label1.Caption := Client1.Text;
  68.   Label4.Caption := Client2.Text;
  69.   Label6.Caption := Client3.Text;
  70. end;
  71.  
  72. procedure TClientOne.FormCreate(Sender: TObject);
  73. begin
  74.   Client1.DDEItem := 'DDEItem1';
  75.   Client2.DDEItem := 'DDEItem2';
  76.   Client3.DDEItem := 'DDEItem3';
  77.   Resource := LoadResource(hInstance,
  78.               FindResource(hInstance, 'Milton', 'TEXT'));
  79. end;
  80.  
  81. procedure TClientOne.FormDestroy(Sender: TObject);
  82. begin
  83.   FreeResource(Resource);
  84. end;
  85.  
  86. procedure TClientOne.Poke1Click(Sender: TObject);
  87. begin
  88.   Conv1.PokeData('DDEItem1', 'Sambo');
  89. end;
  90.  
  91. procedure TClientOne.Poke2Click(Sender: TObject);
  92. var
  93.   S: string;
  94.   SPtr: array[0..200] of Char;
  95. begin
  96.   S := '';
  97.   InputQuery('Talk to a DDE Server', 'Enter Data to Poke', S);
  98.   Conv1.PokeData('DDEItem2', StrPCopy(SPtr, S));
  99. end;
  100.  
  101. procedure TClientOne.Poke3Click(Sender: TObject);
  102. var
  103.   Poem: PChar;
  104. begin
  105.   Poem := PChar(LockResource(Resource));
  106.   Conv1.PokeData('DDEItem3', Poem);
  107.   UnLockResource(Resource);
  108. end;
  109.  
  110. procedure TClientOne.Clear1Click(Sender: TObject);
  111. begin
  112.   Conv1.ExecuteMacro('Clear', True);
  113. end;
  114.  
  115. procedure TClientOne.Close1Click(Sender: TObject);
  116. begin
  117.   Conv1.ExecuteMacro('Close', True);
  118. end;
  119.  
  120. end.
  121.