FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
ghEnable
Con la función ghEnable, de la unidad GHFUtils, podemos habilitar o inhabilitar un grupo de controles (componentes visuales), sin tener que escribir una instrucción "Control.Enabled := ..." por cada uno.
Tomo como ejemplo este caso, donde el código que se propone es esencialmente: Usando GHF, podría reducirse a: Como puede apreciarse, pasamos de siete a sólo dos instrucciones y nos ahorramos la variable de tipo Boolean. Así pues, escribimos menos código sin restarle demasiada comprensibilidad. Además, cuando se tenga la necesidad de agregar otro botón al grupo, tan sólo habremos de añadir una coma, un espacio y el nombre del botón, por ejemplo ", BTN7", en lugar de una sentencia completa "BNT7.Enabled := ...". El uso de estas simplificaciones de código permite generar programas más concisos, y también más manejables a través del tiempo: No es lo mismo comenzar a modificar una unidad de 700 líneas de código que no habíamos abierto en cinco años, que hacer lo mismo con una unidad de 250 líneas. El código repetitivo puede ser un obstáculo importante a la hora de dar mantenimiento a los sistemas. Saludos cordiales. |
#2
|
||||
|
||||
Una función muy útil, muchas veces uno necesita algo así y no se detiene a pensar que podría ayudarle, gracias Al .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
||||
|
||||
Una duda, curiosidad: ¿por qué el espacio en blanco tras la coma?
|
#4
|
||||
|
||||
Cita:
Hola Casi, es sólo una cuestión de estilo, para mayor legibilidad. |
#5
|
||||
|
||||
ghLastErrorMsg y ghRaiseLastError
Quienes han usado directamente la API de Windows tendrán muy presente que esta no suele elevar excepciones al ocurrir una situación de error. En lugar de eso, la API de Windows establece un código de error numérico que podemos recuperar con la función GetLastError. A veces es necesario convertir este código de error a algo que sea relativamente comprensible para el usuario de la aplicación (aunque más útil para el programador que recibirá el reporte del usuario), y para ello Delphi cuenta con la función SysErrorMessage, la cual envuelve a la función FormatMessage del sistema operativo.
También es común que, una vez obtenido el texto del error, queramos elevar una excepción Delphi con él. Así ocurre por ejemplo en este caso: Con GHF, para obtener el texto del error, podemos usar la función ghLastErrorMsg: Pero podemos simplificar un poco más toda la sentencia usando la función ghRaiseLastError: Internamente, esta función llama a ghLastErrorMsg y eleva una excepción con el texto del error. Además, ghRaiseLastError admite un parámetro opcional de tipo String para indicar el formato a dar al mensaje de error. Si no se especifica el formato, se utiliza el predeterminado '%s (GetLastError %d).', viéndose el mensaje de excepción como en este ejemplo: El formato se aplica con la función estándar Format que todos conocemos. "%s" indica en qué parte del mensaje de excepción debe ghRaiseLastError poner el texto del error devuelto por ghLastErrorMsg. "%d" significa que en esa posición debe aparecer el código de error numérico que arrojó GetLastError. Cualquiera de los dos comodines puede ser omitido, por lo que el formato de la excepción es totalmente flexible. Sólo considerar que en la llamada interna a Format, el texto del error es el primer parámetro y el código numérico el segundo. Otro ejemplo: Resultado: Posteriormente agregaré la documentación detallada de estas dos funciones al manual de referencia. Un saludo. Al González. Última edición por Al González fecha: 22-10-2013 a las 00:40:04. |
#6
|
||||
|
||||
Me alegra saber que en el club hay compañeros que sí aprecian y valoran de buena fe los ejemplos que he venido escribiendo sobre el uso de GH Freebrary.
Pongamos uno más, simplificando ligeramente este código del compañero wilcg: La función ghQuotedSQLDate convierte un valor de tipo fecha en su representación literal SQL, es decir, bajo el formato universal aaaa-mm-dd y con una comilla a cada lado. La fecha de hoy, por ejemplo, queda como '2014-08-22' lo cual permite añadirla a cualquier sentencia SQL como el Select del ejemplo. Sin el potencial problema de la configuración regional del sistema operativo o del motor de la base de datos. |
#7
|
||||
|
||||
Cita:
¡¡Gracias, compadre!!
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively... "Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum. Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco |
#8
|
||||
|
||||
. Tengo que dedicarle algo de tiempo, pero a veces somos tan cabezotas....
__________________
http://www.gestionportable.com |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Sondeo sobre la biblioteca GH Freebrary | Al González | [GH Freebrary] | 23 | 08-02-2015 21:12:03 |
GH Freebrary para Delphi XE4 | Al González | [GH Freebrary] | 18 | 22-09-2014 18:24:04 |
GH Freebrary para Delphi XE2 | Al González | [GH Freebrary] | 7 | 12-01-2014 08:49:35 |
Avanzando con GH Freebrary | Al González | [GH Freebrary] | 13 | 23-03-2013 07:08:03 |
Introducción a GH Freebrary | Al González | [GH Freebrary] | 0 | 18-03-2013 10:11:54 |
|