Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

OnClick = Clear1Click

end

end

 end

end

{ *** КОНЕЦ КОДА DDESVRU.DFM *** }

{ *** НАЧАЛО КОДА DDESVRU.PAS *** }

{***************************************************}

{ }

{ Delphi 1.0 DDEML Демонстрационная программа }

{ Copyright (c) 1996 by Borland International }

{ }

{***************************************************}

{
Данный демонстрационный пример использует библиотеку DDEML на стороне сервера кооперативного приложения. Данный сервер является простым приложением для ввода данных и позволяет оператору осуществлять ввод трех элементов данных, которые становятся доступными через DDE "заинтересованным" клиентам.

Данный сервер предоставляет свои услуги (сервисы) для данных со следующими именами:

 Service: 'DataEntry'

 Topic : 'SampledData'

 Items : 'DataItem1', 'DataItem2', 'DataItem3'

В-принципе, в качестве сервисов могли бы быть определены и другие темы. Полезными темами, на наш взгляд, могут быть исторические даты, информация о сэмплах и пр..

Вы должны запустить этот сервер ПЕРЕД тем как запустите клиента (DDEMLCLI.PAS), в противном случае клиент не сможет установить связь.

Интерфейс для этого сервера определен как список имен (Service, Topic и Items) в отдельном модуле с именем DataEntry (DATAENTR.TPU). Сервер делает Items доступными в формате cf_Text; они преобразовываются и хранятся у клиента локально как целые. }

unit Ddesvru;

interface

uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, DDEML, { DDE APi }ShellApi;

const

 NumValues = 3;

 DataItemNames : array [1..NumValues] of PChar = ('DataItem1', 'DataItem2', 'DataItem3');

type

 TDataString = array [0..20] of Char; { Размер элемента как текста }

 TDataSample = array [1..NumValues] of Integer;

{type

{ Структура данных, составляющих образец }

{ TDataSample = array [1..NumValues] of Integer;

{ TDataString = array [0..20] of Char; { Размер элемента как текста }

const

 DataEntryName: PChar = 'DataEntry';

 DataTopicName: PChar = 'SampledData';

type TForm1 = class(TForm)

 MainMenu1: TMainMenu;

 File1: TMenuItem;

 Exit1: TMenuItem;

 Data1: TMenuItem;

 EnterData1: TMenuItem;

 Clear1: TMenuItem;

 Label1: TLabel;

 Label2: TLabel;

 Label3: TLabel;

 Label4: TLabel;

 Label5: TLabel;

 Label6: TLabel;

 Label7: TLabel;

 Label8: TLabel;

 procedure Exit1Click(Sender: TObject);

 function MatchTopicAndService(Topic, Service: HSz): Boolean;

 function MatchTopicAndItem(Topic, Item: HSz): Integer;

 function WildConnect(Topic, Service: HSz; ClipFmt: Word): HDDEData;

 function AcceptPoke(Item: HSz; ClipFmt: Word;Data: HDDEData): Boolean;

 function DataRequested(TransType: Word; ItemNum: Integer; ClipFmt: Word): HDDEData;

 procedure FormCreate(Sender: TObject);

 procedure FormDestroy(Sender: TObject);

 procedure FormShow(Sender: TObject);

 procedure EnterData1Click(Sender: TObject);

 procedure Clear1Click(Sender: TObject);

private

 Inst : Longint;

 CallBack : TCallback;

 ServiceHSz : HSz;

 TopicHSz : HSz;

 ItemHSz : array [1..NumValues] of HSz;

 ConvHdl : HConv;

 Advising : array [1..NumValues] of Boolean;

 DataSample : TDataSample;

public

 { Public declarations }

end;

var Form1: TForm1;

implementation

uses DDEDlg; {
Форма DataEntry }

{$R *.DFM}

procedure TForm1.Exit1Click(Sender: TObject);

begin

 Close;

end;

{ Глобальная инициализация }

const

 DemoTitle: PChar = 'DDEML демо, серверное приложение';

Поделиться с друзьями: