La opción que me recomiendas exige abrir un Formulario que contenga un “Control de Edición Alfabética” con el texto a copiar.
Lo que necesito es que dentro de un Proceso (sin necesidad de abrir un formulario) se pueda copiar el contenido de una Variable Alfabética hacia el Portapapeles.
Supongo que se debe crear una función JavaScript a la cual pasarle la Variable Alfabética como parámetro.
Según esto, habría que crear un archivo de texto con el contenido de la Variable Alfabética
(por ejemplo: aux_clip.txt en sysCacheClientPath o en tempPath() ).
Y luego ejecutar en esa ruta el comando de MS-DOS: type auxiliar.txt | clip
Esta ya es una solución. Hasta se podría crear una función de Velneo para ese fin pasándole la variable alfabética.
Efectívamente, el único método que hay en Velneo es usando la función copy() del VTextEdit o VLineEdit del API.
Como otras veces, podemos recurrir a una chapucilla con javascript:
Crea un Formulario FRM_CLIP con una Caja de Texto cuyo contenido sea la Variable local CTEXTO
En el evento POS_INI ejecuta un Manejador de javascript COPIAR_TEXTO_JS
// Seleccionamos el Texto de la Caja y copiamos al portapapeles
var oForm = theRoot.dataView()
// Solo podemos acceder a los controles en el evento POS_INI
var oTexto = oForm.control("TXT_TEXTO")
// Seleccionamos el texto de la Caja
oTexto.selectAll()
// Copiamos al portapapeles
oTexto.copy()
// Cerramos el formulario
oForm.cancel()
Fija el Ancho y Alto del control y formulario a 0 para que no se vea en pantalla
En el Estilo quita la barra de Título y Botones (marca todos los Sin…)
En el proceso principal ejecuta un código javascript como el siguiente:
// Instanciamos el formulario FRM_CLIP
var oForm = new VDataViewDialog(theRoot)
oForm.setDataView(VObjectInfo.TypeForm, "proy_app/FRM_CLIP")
// Le pasamos el Texto a copiar al portapapeles
oForm.setVar("CTEXTO", "texto a copiar")
// Ejecutamos el formulario (no se mostrará nada porque el tamaño es cero)
oForm.exec()
Y ahora la bronca a Velneo, “y todo este rollo por no disponer de una función nativa StringToClip(string) y no creo que la excusa sea que no es multiplataforma”.