DDESetTopic( ) (Función)

En una conversación de intercambio dinámico de datos (DDE), crea o libera un nombre de tema de un nombre de servicio.

DDESetTopic(cServiceName, cTopicName [, cUDFName])

Valores devueltos

Logical

Parámetros

  • cServiceName
    Especifica el nombre de servicio. Pueden crearse nombres de servicio adicionales mediante DDESetService( ).

  • cTopicName
    Especifica el nombre de tema que se va a crear o liberar. Si incluye cUDFName, DDESetTopic( ) creará el nombre de tema cTopicName. Si omite cUDFName, se liberará el nombre de tema cTopicName. Si cTopicName es una cadena vacía, la FDU especificada con cUDFName se ejecutará para cualquier nombre de tema que no se declare explícitamente.

  • cUDFName
    Especifica el nombre de la función definida por el usuario que se ejecutará cuando una aplicación cliente realice una petición al nombre del tema. Si omite cUDFName, el nombre de tema cTopicName se liberará del nombre de servicio.

    Cuando se ejecuta la FDU, se transfieren los seis parámetros siguientes, en el orden que se indica a continuación:

    Parámetro Contenido
    Channel Number Número de canal del cliente.
    Action ADVISE, EXECUTE, INITIATE, POKE, REQUEST, o TERMINATE.
    Item Nombre del elemento; por ejemplo, R1C1 para una celda de una hoja de cálculo de Microsoft Excel.
    Data Datos del cliente.
    Formato Formato de datos; por ejemplo, CF_TEXT.
    Advise Status Tipo de vínculo (0 = manual, 2 = notificación o automático).

    Los valores de los parámetros Item, Data y Advise Status dependen del parámetro Action. La tabla siguiente muestra los valores del parámetro Action y los valores contenidos en los parámetros Item, Data y Advise Status. Un guión (–) indica que el valor del parámetro es la cadena nula.

    Valor de Action Valor de Item Valor de Data Advise Status
    INITIATE Nombre del tema
    TERMINATE
    POKE Nombre de elemento Nuevos datos
    REQUEST Nombre de elemento
    EXECUTE Nuevo comando
    ADVISE Nombre de elemento Tipo de vínculo

    Si la función definida por el usuario logra controlar la petición del cliente, deberá devolver verdadero (.T.). Si no es posible controlar la petición o surge un error, la función definida por el usuario deberá devolver falso (.F.). Si se devuelve falso cuando el valor del parámetro Action es INITIATE, se rechazará la petición de nombre de tema del cliente. Si se devuelve falso cuando el valor es POKE, REQUEST o EXECUTE, se pasará por alto la petición. Si se devuelve falso cuando el valor es ADVISE, se rechazará la petición del cliente para un vínculo de notificación o automático.

Observaciones

Después de crear un nombre de tema, cualquier petición de cliente realizada para ese nombre de tema hará que Visual FoxPro ejecute la función definida por el usuario especificada mediante cUDFName. A esta función se le transfiere un conjunto de parámetros cuyos valores están determinados por la petición del cliente. El valor de retorno de la función definida por el usuario se transfiere al cliente mediante DDEPoke( ). El valor de retorno es un valor lógico que indica si el nombre del tema puede proporcionar el servicio solicitado por el cliente.

DDESetTopic( ) devolverá verdadero (.T.) si logra crear o liberar el nombre de tema. Devolverá falso (.F.) si el nombre de tema no puede crearse o liberarse. Utilice DDELastError( ) ) para determinar la causa por la que no se puede crear o liberar un nombre de tema.

Ejemplo

El ejemplo siguiente crea un servidor básico de ejemplo llamado myserver que permite la ejecución de comandos de Visual FoxPro desde una aplicación cliente. La aplicación cliente hace peticiones a myserver a través del tema DO y se utiliza la sustitución de macros para ejecutar el comando del cliente.

** Set Visual FoxPro up as a DDE server ** = DDESetService('myserver', 'DEFINE') = DDESetService('myserver', 'EXECUTE', .T.) = DDESetTopic('myserver', 'DO', 'DOTOPIC') WAIT WINDOW 'Server portion service setup ... ' NOWAIT ** Use Visual FoxPro as a DDE client ** gnChannel = DDEInitiate('myserver','DO') =DDEExecute(gnChannel, 'WAIT WINDOW "Command Executed ... "') =DDETerminate(gnChannel) PROCEDURE dotopic PARAMETERS gnChannel, gcAction, gcItem, gData, gcFormat, gnAdvise glResult = .F. ** It's necessary to return .T. from an ** ** INITIATE action or no connection is made ** IF gcAction = 'INITIATE' glResult = .T. ENDIF IF gcAction = 'EXECUTE' &gData glResult = .T. ENDIF IF gcAction = 'TERMINATE' WAIT WINDOW 'Goodbye ... ' NOWAIT glResult = .T. ENDIF RETURN glResult

Después de ejecutar este programa de ejemplo, habrá instalado el servicio Visual FoxPro, al que pueden tener acceso otras aplicaciones. Si tiene Microsoft Excel, podrá ejecutar la macro siguiente:

gnMyChan = INITIATE("myserver","DO")
=EXECUTE(MyChan,"WAIT WINDOW 'Hi, this is EXCEL speaking'")
=RETURN( )

Vea también

DDEEnabled( ) | DDELastError( ) | DDEPoke( ) | DDESetService( )