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

ЖАНРЫ

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

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

Шрифт:

object PokeSomeData: TMenuItem

Caption = '&Пропихивание данных'

OnClick = PokeSomeDataClick

end

end

 end

end

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

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

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

{ }

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

{ Copyright (c) 1996 by Borland International }

{ }

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

{ Это демонстрационное приложение, демонстрирующее использование DDEML API в клиентском приложении. Оно использует серверное приложение DataEntry, которое является частью данной демонстрации, и служит для ввода данных и отображения их на графической панели.

Сначала вы должны запустить приложение-сервер (в DDEMLSRV.PAS), а затем стартовать клиента. Если сервер не запущен, клиент при попытке соединения потерпит неудачу.

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

unit Ddemlclu;

interface

uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, VBXCtrl, ExtCtrls, DDEML, Menus, StdCtrls;

const NumValues = 3;

type

 { Структура данных, представленная в примере }

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

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

 { Главная форма }

 TForm1 = class(TForm)

MainMenu1: TMainMenu;

File1: TMenuItem;

exit1: TMenuItem;

DDE1: TMenuItem;

RequestUpdate1: TMenuItem;

AdviseofChanges1: TMenuItem;

PokeSomeData: TMenuItem;

N1: TMenuItem;

PaintBox1: TPaintBox;

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure RequestUpdate1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure AdviseofChanges1Click(Sender: TObject);

procedure PokeSomeDataClick(Sender: TObject);

procedure Request(HConversation: HConv);

procedure exit1Click(Sender: TObject);

procedure PaintBox1Paint(Sender: TObject);

 private

{ Private declarations }

 public

Inst: Longint;

CallBackPtr: ^TCallback;

ServiceHSz : HSz;

TopicHSz : HSz;

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

ConvHdl : HConv;

DataSample : TDataSample;

 end;

var Form1: TForm1;

implementation

const

 DataEntryName : PChar = 'DataEntry';

 DataTopicName : PChar = 'SampledData';

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

{$R *.DFM}

{
Локальная функция: Процедура обратного вызова для DDEML }

function CallbackProc(CallType, Fmt: Word; Conv: HConv; hsz1, hsz2: HSZ; Data: HDDEData; Data1, Data2: Longint): HDDEData; export;

begin

 CallbackProc := 0; { В противном случае смотрите доказательство }

 case CallType of

 xtyp_Register:

begin

{ Ничего ... Просто возвращаем 0 }

end;

 xtyp_Unregister:

begin

{ Ничего ... Просто возвращаем 0 }

end;

 xtyp_xAct_Complete:

begin

{ Ничего ... Просто возвращаем 0 }

end;

 xtyp_Request, Xtyp_AdvData:

begin

Form1.Request(Conv);

CallbackProc := dde_FAck;

end;

 xtyp_Disconnect:

begin

ShowMessage('Соединение разорвано!');

Form1.Close;

end;

 end;

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