412

Параметр Cmd содержит строку макроса (в ExecuteMacro) или набор макросов
(в ExecuteMacroLines), которые должны передаваться на сервер. Параметр Wa-
itFIg определят, должен ли клиент ждать завершения выполнения сервером всех
макросов. Если WaitFIg = true, то последующие вызовы методов ExecuteMacrn
ExecuteMacroLines, PokeData, PokeDataLines и RequestData не будут успей'
ми, пока сервер не обработает всех переданных ему макросов. Проверить, з;>;

шил ли сервер обработку предыдущих макросов, можно, обратившись к свойг ;,,
WaitStat компонента DdeClientConv. Пока WaitStat = true, вызов методов Execu- |
teMacro, ExecuteMacroLines, PokeData, PokeDataLines и RequestData не имеет |
смысла, так как сервер занят и эти методы все равно не будут выполнены.     |
Функции возвращают true при успешной передаче макросов серверу.
Обработчик события OnExecuteMacro компонента TDdeServerConv, котор'
передан макрос, имеет заголовок вида:

void ...(TObject *Sender, TStrings *Msg)

Параметр Msg содержит тексты переданных макросов.

Чтобы ввести передачу макросов в наш тестовый пример, сделайте следующее.
В приложении-клиенте в обработчик щелчка на кнопке Выполнить вставьте код:

if(!DdeClientConvl->ExecuteMacro(EMacro->Text.c_str(),false))
ShowMessage("Макрос не выполнен, нет контакта с сервером");

Этот оператор передает на сервер в качестве макроса строку, набранную поль-
зователем в окне редактирования ЕМасго.

На серверах надо ввести обработчики событий OnExecuteMacro компонентов
TDdeServerConv. Давайте в нашем тестовом примере просто ограничимся отобра-
жением переданного макроса в надписи метки Label 1. Тогда обработчик события
OnExecuteMacro обоих компонентов TDdeServerConv сервера может иметь вид:

void_fastcall TFServer::TopiclExecuteMacro(TObject *Sender,

TStrings *Msg)
{

if(Msg->Count == 0 )
ShowMessage(Application->ExeName + ": Макрос не получен");

else
Labell->Caption = "Получен макрос '" + Msg->Strings[0] + "'";

)

Теперь запустите вне C++Builder ваши серверы (не обязательно), запустите на
выполнение приложение-клиент и проверьте его работу по передаче макросов и во
всех остальных режимах.