![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
La filosofía es la siguiente:
Cualquier programa puede registrarse como Visor del portapapeles. Cuando el usuario copia algo en el portapapeles, windows mira quien es el primer programa "visor del portapapeles" (obviamente el programa de windows) y le pasa un mensaje indicando que el contenido del portapapeles ha cambiado. Ese programa, debe continuar la cadena, es decir, seguir informando al resto de programas que son visores del portapapeles del cambio surgido. Por tanto tenemos que: - Registrar nuestro programa para que capture cosas del Portapapeles automaticamente, y guardar quien es el siguiente programa "visor del portapapeles". Además debemos quitarnos de esa lista al cerrar nuestro programa:
- Obviamente necesitamos responder cuando cambie el portapapeles:
El error que yo veo, es que la linea tienes que ponerlo al final de la rutina ¿por qué?, porque un programa "visor del portapapeles" puede cambiar el contenido del mismo, y si lo hace, tu línea está desfasada con el contenido real del portapapeles. Es más yo lo modificaba y solo ponía esto:
Tu procedimiento WMChangeCBCHain creo que es inconsistente, simplemente elimínalo. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#2
|
||||
|
||||
|
Gracias por tu respuesta... pero...
Cita:
__________________
Herr Heins Faust |
|
#3
|
||||
|
||||
|
Hola,
Cita:
Cita:
|
|
#4
|
||||
|
||||
|
Gracias por sus respuestas camaradas, aunque he usado la solución de Lepe han continuado los errores en Office, por lo que yo creo que la solución es en saber si algún otro programa ha bloqueado temporalmente el portapapeles, pues así antes de extraer el contenido del portapapeles puedo preguntar si está disponible, y evitar el error de Office.
De nuevo gracias por su ayuda y les mando un afectuoso saludo.
__________________
Herr Heins Faust |
|
#5
|
||||
|
||||
|
Te propongo una solución, no utilizar la unit clipbrd y copiar el contenido del portapapeles usando solo funciones de la API. Para copiar el texto podemos usar una función como esta:
La funcion anterior intentara copiar el texto del portapapeles, si no lo consigue devolvera una cadena vacia, pero no mostrara ningun error. Asi que podriamos utilizarla de la siguiente manera:
¿Que te parece? por lo menos a mi ya no me sale ningún error al arrastrar en excel. |
|
#6
|
||||
|
||||
|
Tengo un programa como he dicho, y me lee todo el contenido cada vez que se copia algo. Uso office 2002.
En casos de arrastrar y soltar, no me lee el portapapeles, ya no se "copia nada en esos momentos", incluso arrastrando desde excel a word y viceversa. Puede que un office de versión superior esté "haciendo virguerías". Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#7
|
||||
|
||||
|
Lepe yo tampoco entiendo porque da ese error, así que monte el código tal como describíais y en el excel al arrastrar texto de una celda a otra me daba un error en mi aplicación. Con la función que puse ya no da errores mi aplicación, pero una de cada 3 veces (aproximadamente, no las conte
) excel muestra el error "No se puede vaciar el portapapeles", así que volvemos a estar en la misma ![]() |
|
#8
|
||||
|
||||
|
Pues yo tampoco sé que pasa.
Acabo de hacer la prueba como dices, seoane, y efectivamente si se copia texto en el portapapeles con el office 2002. Mi programa hace uso del Microsoft Agent y habla por los altavoces (parlantes) el texto que se copia. acabo de escribir en una celda "quillo no me asustes que me da una flojera del copon" y moviendo la celda 15 veces consecutivas, le ha dado una flojera... ![]() En serio, al menos en mi ordenador no puedo reproducir el error. Me funciona correctamente. Ahora mismo no sé como tendrá el código nuestro compañero, yo al menos no toco el Result del TMessage para nada. Tengo el presentimiento de que si el siguiente "visor del portapapeles" no es válido, se está devolviendo false en ese parámetro lo cual "podría provocar" que excel mostrase ese error ... no sé... Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| copiar texto sin formato en un TRichEdit!!!! | aranel | OOP | 1 | 20-12-2005 19:24:17 |
| Copiar texto en RichEdit | darkerbyte | Varios | 4 | 16-11-2005 01:37:17 |
| Copiar el texto de un RichEdit | soul6301 | Varios | 5 | 11-11-2005 03:31:24 |
| Copiar las columnas en un archivo de texto | Paulina | DelphiPACK | 0 | 08-10-2004 18:54:07 |
| Copiar texto de un RichEdit a otro | SCH | Varios | 2 | 11-08-2003 08:16:26 |
|