Quitar borde de selección a TStringGrid
Buenas tardes,
tengo un pequeño problemilla estoy seguro que podéis resolverlo. Me gustaría quitarle el borde que se genera alrededor de una celda que tienes seleccionada, en mi caso es un borde punteado. Esta es la captura: http://es.zimagez.com/zimage/captura440.php No se si se puede eliminar o cambiar el color, lo pondría del mismo color que el relleno y sobraría. Muchas gracias por vuestra ayuda. Un saludo! |
Hola Catublipas.
Cita:
Saludos :) |
Buenas ecfisa,
gracias por tu respuesta pero no consigo implementarla, no me reconoce ni el método paint tampoco. ¿Cómo implemento el método? Muchas gracias de nuevo! |
Firemonkey o VCL?
|
Estoy programandolo en VCL Form :P.
|
Hola Catublipas.
Cita:
Saludos :) |
Buenas ecfisa efectivamente con esto me deja pero me da los siguientes errores en el procedimiento procedure TStringGrid.Paint;
muchas gracias de nuevo! |
Pon tu código.
|
|
Hola Catublipas.
Lo que sucede que has copiado mal... Esta es tu declaración de TStringGrid: Cita:
Cita:
Creo que el código final debería ser algo como esto:
Saludos :) |
Otra alternativa es, si tu Delphi soporta los class helpers, es esto:
Luego, podes implementar el metodo Paint; Los class helper se agregaron justamente para no seguir utilizando el "truco" de la interposer class y resolver este tipo de problemas (acceder a funcionalidad protegida de una clase) de una manera mas elegante |
Buenas, os comento
he probado las dos maneras la respuesta de ecfisa me da error en la declaracion del procedimiento Paint. Y he probado la respuesta de AgustinOrtu que no me da error en la declaracion de la clase TStringGrid pero me da el siguiente error:
Uso Delphi xe7 ¿tiene algo que ver? |
Hola Catublipas
Cita:
Para salir de dudas, proba este ejemplo que funciona correctamente en Delphi 7:
Muestra: Saludos :) |
Buenas ecfisa,
me ha funcionado al parecer me faltaba incorporar la libreria Vcl.grids, ya no me da el error pero no me quita el borde. Es posible que sea porque el StringGrid lo he creado en tiempo de diseño, o ¿no tiene nada que ver? Muchas gracias de veras por vuestra ayuda de nuevo! :) |
Cita:
preceda (esté mas arriba) a la definición de la variable de tipo TStringGrid que uses en el formulario. Otra opción es que hagas una nueva unidad, y luego en el formulario en que la vayas a usar la incluyas en la última posición en el uses de la sección interface:
Nota: Para todos los casos toma en cuenta las diferencias que tiene Delphi XE7 con Delphi 7 cuando se hace referencia a las unidades y clases, vg.: Código:
Delphi 7 : Grids.TStringGrid |
3 Archivos Adjunto(s)
Perdón corrijo, no termina de quitar el borde jajajaja.
Os paso las imagenes a ver si se os ocurre algo. |
He probado creando la unidad nueva, hago referencia en la otra unidad y sigo en las mismas, no me da problemas, pero sigue sin quitar el borde.
Por cierto he probado a desactivar Default Drawing pero es un caos aunque si que quita el borde, pero se desconfigura todo. |
La verdad, estoy imposibilitado de probar el código sobre XE7 así que ando a tientas :(.
Lo último que se me ocurre es que pruebes calificando la función DrawFocusRect:
Saludos :) |
Ecfisa funciona perfecto, he hecho lo que has puesto y he desactivado el Default Drawing y va clavado!
Muchas gracias de nuevo!:) Un saludo! |
La franja horaria es GMT +2. Ahora son las 12:28:04. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi