DDEAdvise( ) (Función)
Crea un vínculo de notificación o un vínculo automático que se utiliza en el intercambio dinámico de datos (DDE).
DDEAdvise(nChannelNumber, cItemName, cUDFName, nLinkType)
Valores devueltos
Logical
Parámetros
nChannelNumber
Especifica el número de canal.cItemName
Especifica el nombre del elemento. Por ejemplo, Microsoft Excel utiliza la notación de fila y columna para hacer referencia a las celdas de una hoja de cálculo. El nombre de elemento R1C1 designa la celda de la primera fila y la primera columna de la hoja de cálculo.cUDFName
Especifica la función definida por el usuario (FDU) que se ejecuta cuando se establece un vínculo de notificación o un vínculo automático, y se modifica el elemento cItemName. 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 de la aplicación de servidor. Action ADVISE o TERMINATE. Item Nombre del elemento; por ejemplo, R1C1 para una celda de una hoja de cálculo de Microsoft Excel. Data Nuevos datos (vínculo automático) o la cadena vacía (vínculo de notificación). Format Formato de datos; por ejemplo, CF_TEXT. Advise Status Tipo de vínculo (0 = manual, 1 = notificación, 2 = automático). La FDU debería tener seis parámetros en su instrucción LPARAMETER o PARAMETER para aceptar los valores transferidos desde la aplicación de servidor. Si se establece un vínculo de notificación, se ejecutará la FDU y se transferirá la cadena vacía en el parámetro Data. Puede ejecutar DDERequest( ) posteriormente para recuperar los datos. Si se establece un vínculo automático, la FDU se ejecutará y los datos se transferirán en el parámetro Data.
El parámetro Action contiene ADVISE cuando el servidor está actualizando el vínculo. Se llama a la FDU y el parámetro Action contendrá TERMINATE cuando el cliente o el servidor cierre el vínculo.
Se pasa por alto cualquier valor devuelto por la FDU.
nLinkType
Especifica el tipo de vínculo de la forma siguiente:nLinkType Tipo de vínculo 0 Manual 1 Notificación 2 Automático Puede desactivar la notificación desde la aplicación de servidor al especificar 0 en nLinkType. Si cambia el elemento, la FDU no se ejecutará.
Observaciones
DDEAdvise( ) se utiliza para crear un vínculo de notificación o un vínculo automático con un nombre de elemento en una aplicación de servidor. Cuando se crea un vínculo de notificación con DDEAdvise( ), la aplicación de servidor notifica a Visual FoxPro la modificación del nombre del elemento. Si se crea un vínculo automático, la aplicación de servidor notifica a Visual FoxPro la modificación del nombre del elemento y pasa los nuevos datos a Visual FoxPro.
Antes de que pueda crear un vínculo, debe establecer un canal con la aplicación de servidor mediante DDEInitiate( ).
También puede utilizar DDEAdvise( ) para desactivar la notificación desde el servidor.
DDEAdvise( ) devuelve el valor verdadero (.T.) si se ejecuta correctamente; de lo contrario, devuelve falso (.F.).
Ejemplo
El ejemplo siguiente demuestra cómo puede establecer un canal DDE con una hoja de cálculo de Microsoft Excel llamada Sheet1. Se utiliza DDEAdvise( ) para establecer dos vínculos con datos de dos celdas (R1C1 y R1C2) de la hoja de cálculo. La función definida por el usuario NEWDATA se ejecuta cuando cambian los datos de una de estas celdas. Esta función comprueba los parámetros item
y advise
para determinar qué elemento cambió y qué tipo de vínculo se ha establecido.
PUBLIC mchannum
mchannum = DDEInitiate('Excel', 'Sheet1')
IF mchannum != -1
= DDEAdvise(mchannum, 'R1C1', 'newdata', 1) && Notify link
= DDEAdvise(mchannum, 'R1C2', 'newdata', 2) && Automatic link
WAIT WINDOW 'Enter data in first two cells in Excel.'
ENDIF
PROCEDURE newdata
PARAMETERS channel, action, item, data, format, advise
IF action = 'ADVISE'
DO CASE
CASE item = 'R1C1' && Notify link
newvalue = DDERequest(channel, item)
? 'R1C1 notify link: ' + newvalue
CASE item = 'R1C2' && Automatic link
newvalue = data
? 'R1C2 automatic link: ' + newvalue
ENDCASE
ELSE
IF action != "TERMINATE"
= DDETerminate(mchannum)
ENDIF
ENDIF
Vea también
DDEInitiate( ) | DDELastError( ) | DDESetOption( ) | DDETerminate( )