Copiar texto e exportarlo a otra aplicación

Estoy haciendo una aplicación tipo enciclopedia. Quisiera que el usuario pueda copiar alguno de los artículos y exportarlos a otra aplicación, como word o el block de notas.
Actualmente estoy trabajando con un personaje field donde se vacía el texto y que puede ser copiado con la siguiente instrucción:
On mouseUp
put member ("Texto01C").text into field "Copia01"
member ("Copia01").copytoclipboard()
open "C:/Archivos de programa/Accesorios/WORDPAD.EXE "
end mouseUp
Funciona bien, solo que se el wordpad en blanco. Por tanto hay que manualmente pulsar control + v o apretar pegar, para que aparezca el texto.
Quisiera obviar este ultimo paso. Quisiera que se abra el wordpad y que automáticamente se pegue el texto. He visto este recurso en otras aplicaciones y me gustaría usarlo. También me gustaría que fuera word y no el wordpad el que se abra.
1

1 Respuesta

274.425 pts.
Lo que deseas hacer no se puede tal como lo describes.
Efectivamente puedes usar copytoclipboard() pero siempre tendrás que hacer Control+V.
Lo que puedes hacer es solo exportar el contenido del TextField a un archivo .TXT o .DOC, pero utilizando el Xtra "FileIO Xtra" que se incluye en el sistema.
Solo necesitas usar:
displaySave( instance, string title, string defaultFileName )
createFile( instance, string fileName )
Estimado experto, no entiendo el código que me enviaste. ¿Debo usarlo con la instrucción on mouse up?, ¿Dónde indico el nombre del archivo a copiar? ¿Y dónde indico que deseo abrir word para ese documento?
Revise el archivo de macromedia y no me es útil, puesto que trabaja con texto editable y mi texto es fijo.
Gracias.
Alexander
Agrega este script al botón exportar.
On mouseDown me
fileIO = new (xtra "FileIO")
fileIO.setFilterMask ("Archivo de Texto, *.txt")
nombreDefault = "Sin nombre"
nombreArchivo = ""
nombreArchivo = fileIO.displaySave ("", nombreDefault)
fileIO = VOID
if nombreArchivo <> "" Then
--aquí indicas el nombre del cast de texto que se grabará
texto = member("readme").text
escribeArchivo (nombreArchivo, texto)
end if
end
on escribeArchivo nombreArchivo, texto
nombreFile = nombreArchivo
textoFile = texto
objetoFileIO = new (xtra "FileIO")
objetoFileIO.createFile (nombreFile)
ObjetoFileIO. OpenFile (nombreFile, 2)
objetoFileIO. WriteString (textoFile)
objetoFileIO. CloseFile ()
objetoFileIO = VOID
end
Estimado experto, el código funciono bien, pero me gustaría que FileIo llamara a word o wordpad, pues el archivo que crea en el block de notas elimina el formato apiñando el texto sin separación de párrafos y otras características del texto original. ¿Cómo puedo hacer que FileIO llame a word? ¿O qué al menos conserve el formato original en el block de notas?
Muchas gracias y disculpa la molestia,
Alexander
Estimado experto: Use el código y el documento se crea en word, ¿pero cuándo lo abro en word me sale un mensaje de error que dice "Microsoft Word no puede importar el formato especificado" Que puedo hacer?
No me importaría usar el block de notas (txt), ¿pero cómo puedo evitar que apiñe las palabras y elimine el formato original del texto?
Saludos y gracias, disculpa la molestia otra vez.
Alexander
No puedes grabar con formato de Word ya que el texto debería tener la codificación que utiliza Word.
Lo que puedes hacer es cambiar
FileIO. SetFilterMask ("Archivo de Texto, *.txt")
Por
FileIO. SetFilterMask ("Archivo de Texto, *.doc")
Reemplaza el handler on mouseDown que te envié por este otro.
On mouseDown me
fileIO = new (xtra "FileIO")
fileIO.setFilterMask ("Archivo de Texto, *.txt")
nombreDefault = "Sin nombre"
nombreArchivo = ""
nombreArchivo = fileIO.displaySave ("", nombreDefault)
fileIO = VOID
if nombreArchivo <> "" Then
--aqui indicas el nombre del cast de texto que se grabará
texto = member("readme").text
i=0
textoLimpio=""
repeat while i<>texto.length
i=i+1
letra=texto.char
if letra=numtochar(13) then letra=RETURN & numtoChar (10)
textoLimpio=textoLimpio&letra
end repeat
escribeArchivo (nombreArchivo, textoLimpio)
end if
end
lo que hice es agregar un cliclo que reemplaza el return por otro
i=0
textoLimpio=""
repeat while i<>texto.length
i=i+1
letra=texto.char
if letra=numtochar(13) then letra=RETURN & numtoChar (10)
textoLimpio=textoLimpio&letra
end repeat

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas