PDA

Ver la Versión Completa : StringGrid -> Portapapeles


acertij022
16-10-2003, 19:29:47
Hola foro a alguien se le ocurre como podria en una grilla seleccionar campos y guardarlo en el portapapeles (Ctrl + C) y luego pegarlo en otra grilla (Ctrl + V):o

Gracias

Lepe
17-10-2003, 08:20:01
Creo recordar que existe una funcion para registrar tipos de datos en el portapapeles, es algo complicado, pero desde luego haría lo que tu quieres.

al inicio de tu aplicacion tendrías que resgistrar un nuevo tipo de formato, y al finalizar, destruirlo. Claro, esto solo funcionaria dentro de tu programa, si quieres pegarlo en word..... la cagamos :D

RegisterClipboardFormat

Mira la ayuda de Win32 Developer's Reference, la ayuda tambien te da otras funciones relacionadas:

CountClipboardFormats, EnumClipboardFormats, GetClipboardFormatName

Suerte !!

delphi.com.ar
17-10-2003, 16:23:55
En http://www.torry.net/stringgrids.htm tienes mas de una StringGrid que soportan acciones del portapapeles

Saludos!

roman
17-10-2003, 17:14:16
Ayer que vi este mensaje pensé lo que indica Lepe pero no se me ocurrión nada en concreto. No creo que sea muy dificil en realidad.

RegisterClipboardFormat simplemente registra un nombre de formato y nos devuelve un identificadir con el que nuestra aplicación puede determinar si hay datos del tipo adecuado en el portapapeles mediante el método HasFormat del objeto global Clipboard. Los métodos SetTextBuffer y GetTextBuffer permiten escribir y leer datos del portapapeles. Ambos métodos reciben un PChar de manera que, básicamente hay que acomodar los datos en un formato de cadena que nosotros mismos elijamos. Pienso que lo más conveniente sería acomodarlos en un formato CSV pero habrá que ver qué se hace cuando el portapapeles tenga más columnas que la rejilla destino.

Por otro lado, dado que Excel maneja el formato CSV es posible que en lugar de crear un formato nuevo podamos usar el que usa Excel para pegar datos.

Sería interesante además intenar aplicar este copiado a rejillas DB.

// Saludos