Usando interfaces en Delphi. Características de trabajar con interfaces en Delphi. Elementos de interfaz estándar

El artículo fue escrito a partir de los resultados de análisis de programas escritos por jóvenes desarrolladores de nuestro grupo.

Organizamos correctamente la secuencia de componentes de conmutación.

Muchos usuarios, especialmente aquellos que trabajaron anteriormente en DOS, tienen la costumbre de cambiar entre campos de entrada no con el mouse, sino usando el teclado con la tecla Tab. Además, es mucho más rápido que seleccionar cada campo con el mouse. Por lo tanto, el orden de los componentes de conmutación debe configurarse correctamente. Esto se aplica tanto a los componentes dentro de todos los componentes del contenedor (paneles, GroupBoxes y similares) como a los propios componentes del contenedor, si hay varios de ellos en el formulario.

El orden de cambio de componentes dentro del contenedor lo especifica la propiedad TabOrder. El primer componente que se activa es el que tiene TabOrder igual a 0, el segundo a 1, etc., hasta que se enumeren todos los componentes. Además, el componente tiene una propiedad TabStop, que indica si el componente recibirá el foco cuando se alterna con la tecla Tab. Si necesita prohibir el cambio a cualquier componente, establezca TabStop = false. En este caso, sólo podrá cambiar a este componente utilizando el ratón.

Hay casos en que los usuarios que están acostumbrados a cambiar con una determinada clave en un programa, por costumbre, continúan usándola en otros. Esto sucede a menudo con los usuarios de 1C, donde la tecla Intro se puede utilizar para navegar por los campos de entrada. Bueno, les daremos esa oportunidad en nuestros programas si la solicitan. Establezca la propiedad KeyPreview del formulario en verdadero y escriba un controlador de eventos OnKeyPress:

Procedimiento TForm1.FormKeyPress(Remitente: TObject; var Clave: Char);
comenzar
si ord(clave)=vk_Return entonces
Form1.SelectNext(PriemForm.ActiveControl, verdadero, verdadero);
fin;

Este controlador proporciona navegación a través de los elementos del formulario cuando se presiona la tecla Intro. Cabe señalar que este método no funcionará con botones, porque... presionar Enter en un botón hace que se haga clic en él, mientras que presionar Tab da foco de entrada al siguiente componente en la secuencia de alternancia.

Botones predeterminados

Todos los mismos usuarios se acostumbran rápidamente al hecho de que en los cuadros de diálogo de la aplicación, por regla general, puede confirmar su elección con la tecla Enter y cancelar con la tecla Esc. No los decepcionemos con nuestros programas, sobre todo porque es muy fácil de hacer. Para un botón que responde a Enter, establezca la propiedad Predeterminada en verdadero. Para el botón que responde a Esc, establezca la propiedad Cancelar en verdadero. Eso es todo.

sí o no

Todo Cuadros de diálogo, que solicita acciones del usuario, debe tener al menos dos botones: confirmación de la acción y rechazo de la acción (Sí/No, Guardar/Cancelar, etc.). La acción se puede cancelar cerrando la ventana con el botón [X] en el título de la ventana. Es inaceptable si solo hay un botón para confirmar la acción, y para rechazarla se supone que se cierra la ventana con el botón [X] en el título, o no hay posibilidad de rechazarla en absoluto. Esto confunde al usuario y plantea una pregunta lógica: ¿cómo negarse?

Además, no olvides lo dicho anteriormente en el párrafo “Botones predeterminados”.

Todos los cuadros de diálogo deberían abrirse en el centro de la pantalla.

Centrados, no donde fueron creados en modo diseño. En primer lugar, es más visual y, en segundo lugar, elimina automáticamente el problema de las diferentes resoluciones de pantalla para diferentes usuarios.

Se hace una excepción si el cuadro de diálogo no es modal y, como resultado del trabajo del usuario en esta ventana, se producen cambios inmediatamente en la ventana principal (por ejemplo, filtrar un conjunto de datos, volver a dibujar gráficos, etc.).

Los tamaños de las ventanas no deben exceder el tamaño de la pantalla.

En ningún caso. Es una vergüenza que parte de la ventana sobresalga de la pantalla. Este requisito no depende de la resolución de la pantalla del usuario, es decir. excusas como “Que pongan una resolución más alta” no funcionan.

Correcto cambio de tamaño de los elementos de la ventana.

Los elementos de la ventana deben cambiar de tamaño o moverse correctamente cuando se cambia el tamaño de la ventana, cuando se maximiza la ventana y cuando se restaura la ventana después de la maximización.

Todo es siempre visible

Reducir el tamaño de la ventana no debería provocar la desaparición de los elementos de la ventana y, preferiblemente, no debería provocar la aparición de barras de desplazamiento (desplazadores) en la propia ventana. Puede limitar los tamaños mínimos de ventana para que todos los elementos sean visibles y accesibles. Si no es posible colocar los componentes de manera que todos sean visibles en la ventana, puede usar marcadores (como PageControl) para dividir los componentes en grupos. Tampoco ignoramos las excusas sobre la resolución de la pantalla.

Consejos en todas partes, consejos siempre.

Para los botones, especialmente en las barras de herramientas (como ToolBar), se deben especificar sugerencias para que siempre quede claro por qué se necesita tal o cual botón.

espectro de colores

No debes pintar los componentes del formulario con todos los colores del arco iris. Esto cansa la vista y distrae la atención del usuario. No parece "cool". El resaltado se utiliza cuando es necesario llamar la atención del usuario sobre un elemento específico o una parte específica de la ventana. Por ejemplo, coloree los registros que contienen errores con color rojo claro o, por el contrario, registre registros que se verificaron exitosamente con color verde claro.

Conclusión

Existe un método muy bueno que le permite encontrar fallas en el programa en general y en la interfaz en particular. Es muy sencillo: imagínate en el lugar del usuario y durante media hora intenta trabajar como él trabaja. Es incluso mejor si su usuario está dentro del alcance (por ejemplo, trabaja en la misma organización). En este caso, siéntate a su lado, o mejor aún, en lugar de él, e intenta hacer su trabajo. Introducir datos, modificarlos, mostrar informes, etc. Si no sabes cómo hacerlo bien, pregúntale a tu usuario. No realice solo una o dos operaciones del mismo tipo, como en el modo de depuración, sino entre 20 y 30, o incluso más operaciones diferentes, en diferentes órdenes. Olvídese de ingresar algo o ingréselo incorrectamente y vea cómo reacciona el programa. Verá rápidamente las debilidades de su programa.

El autor del artículo automatizó el trabajo del comité de admisiones de la universidad y, en el primer año de introducción del programa, pasó de 3 a 4 horas al día en el comité de admisiones, registrando a los solicitantes, completando sus datos personales y proporcionándoles informes de examen. y por lo demás tiempo de trabajo errores y deficiencias corregidos. Créame, el año que viene prácticamente no quedarán problemas. Lo mismo ocurrió al introducir el módulo de personal.

Por lo tanto, tenga en cuenta la experiencia del usuario. Haga que les resulte fácil y agradable trabajar con sus programas.

uno y el mas fortalezas ambiente Programación Delphi Es su arquitectura abierta, gracias a la cual Delphi permite una especie de metaprogramación, permitiendo “programar el entorno de programación”. Este enfoque traduce Delphi en alta calidad. nuevo nivel sistemas de desarrollo de aplicaciones y le permite incorporar herramientas adicionales en este producto que admiten casi todas las etapas de creación sistemas de aplicación. Un abanico tan amplio de posibilidades se abre gracias al concepto de las llamadas interfaces abiertas implementadas en Delphi, que son el vínculo entre el IDE (Entorno de desarrollo integrado) y las herramientas externas.

Este artículo está dedicado a las interfaces abiertas de Delphi y proporciona una descripción general de las capacidades que ofrecen. Delphi define seis interfaces abiertas: interfaz de herramienta, interfaz de diseño, interfaz experta, interfaz de archivo, interfaz de edición e interfaz de control de versiones. Es poco probable que en el marco de este artículo podamos cubrir e ilustrar en detalle las capacidades de cada uno de ellos. Los textos fuente de Delphi le ayudarán a comprender mejor los problemas que se están considerando; afortunadamente, los desarrolladores les han proporcionado comentarios detallados. Las declaraciones de clases que representan interfaces públicas están contenidas en los módulos correspondientes en el directorio...\Delphi\Source\ToolsAPI. La interfaz de diseño (módulo DsgnIntf.pas) proporciona herramientas para crear editores de propiedades y editores de componentes.

Los editores de propiedades y componentes son un tema que merece una discusión aparte, así que recordemos que el editor de propiedades controla el comportamiento del Inspector de objetos cuando se intenta cambiar el valor de la propiedad correspondiente, y el editor de componentes se activa cuando haga doble clic botón izquierdo del mouse sobre la imagen del componente colocado en el formulario. La interfaz de control de versiones (módulo VCSIntf.pas) está diseñada para crear sistemas de control de versiones. Desde la versión 2.0, Delphi admite el sistema de control de versiones integrado Intersolv PVCS, por lo que en la mayoría de los casos no es necesario desarrollar su propio sistema. Por este motivo, también omitiremos la consideración de la interfaz de control de versiones. La interfaz de archivos (módulo FileIntf.pas) le permite anular el sistema de archivos en funcionamiento del IDE, lo que permite elegir su propio método para almacenar archivos (en los campos Memo en el servidor de la base de datos, por ejemplo). Editar interfaz (módulo EditIntf.pas) proporciona acceso al búfer de texto fuente, que le permite analizar y generar código, determinar y cambiar la posición del cursor en la ventana del editor de código y también controlar el resaltado sintáctico del texto fuente.

Las clases especiales proporcionan interfaces a los componentes colocados en el formulario (definiendo el tipo de componente, obteniendo referencias a los componentes padre e hijo, accediendo a propiedades, transfiriendo foco, eliminando, etc.), al formulario en sí y al archivo de recursos del proyecto. Editar interfaz también le permite identificar los llamados notificadores modulares que determinan la reacción a eventos como cambiar el texto fuente de un módulo, modificar un formulario, cambiar el nombre de un componente, guardar, cambiar el nombre o eliminar un módulo, cambiar un archivo de recursos del proyecto, etc. La interfaz de herramientas (módulo ToolIntf. pas) proporciona un medio para que los desarrolladores obtengan información general sobre el estado del IDE y realizar acciones tales como abrir, guardar y cerrar proyectos y archivos individuales, crear un módulo, obtener información sobre el proyecto actual (número de módulos y formularios, sus nombres, etc.), registro sistema de archivos, organización de interfaces para módulos individuales, etc. Además de los notificadores modulares, Tool Interface define notificadores complementarios que notifican sobre eventos como abrir/cerrar archivos y proyectos, cargar y guardar un archivo de proyecto de escritorio, agregar/excluir módulos de proyecto, instalar/desinstalar paquetes, compilar un proyecto y A diferencia de los notificadores modulares, los notificadores complementarios le permiten cancelar la ejecución de algunos eventos.

Además, la interfaz de herramientas proporciona un medio para acceder al menú principal de Delphi IDE, lo que le permite incorporar elementos adicionales en él. La interfaz experta (módulo ExtIntf.pas) es la base para crear expertos: módulos de software integrados en el IDE para ampliar su funcionalidad. Un ejemplo de experto es el Asistente de formulario de base de datos de Delphi, que genera un formulario para ver y cambiar el contenido de una tabla de base de datos. Una vez definida la clase de experto, debemos asegurarnos de que Delphi "aprenda" sobre nuestro experto. Para hacer esto, debe registrarlo llamando al procedimiento RegisterLibraryExpert y pasándole una instancia de la clase experta como parámetro. A modo de ilustración, creemos un experto simple en el estilo esStandard, que, cuando selecciona el elemento del menú Delphi correspondiente, muestra un mensaje que indica que se está ejecutando. Como puede ver en la tabla anterior, el estilo esStandard requiere anular seis métodos:

Para que el experto se "ponga en acción", debe seleccionar el elemento de menú Componente/Instalar componente..., seleccionar el módulo que contiene el experto (en nuestro caso exmpl_01.pas) en el cuadro de diálogo Examinar, hacer clic en Aceptar y después de compilar el paquete dclusr30.dpk En el menú principal de Delphi, en la sección Ayuda, debería aparecer el elemento Simple Expert 1, cuando se selecciona, aparece el mensaje informativo “¡Experto estándar iniciado!”. Por qué Delphi coloca el elemento del menú de expertos en la sección Ayuda sigue siendo un misterio. Si no le gusta el hecho de que el elemento del menú aparezca donde quiera Delphi, y no donde usted quiera, es posible la siguiente opción: crear un experto en el estilo del complemento, lo que elimina la creación automática del elemento del menú, y agregue el elemento del menú “manualmente” usando la interfaz de herramientas. Esto le permitirá establecer la ubicación del nuevo elemento en el menú principal de forma arbitraria.

Para agregar un elemento de menú, use la clase TIToolServices, la base de la interfaz de herramientas, y las clases TIMainMenuIntf, TIMenuItemIntf, que implementan interfaces para el menú principal del IDE y sus elementos. El propio IDE crea una instancia de la clase TIToolServices de ToolServices cuando se inicializa. Tenga en cuenta que la responsabilidad de publicar interfaces para el menú principal de Delphi y sus elementos recae enteramente en el desarrollador. De paso, compliquemos un poco la carga funcional del experto: cuando active su elemento de menú, emitirá un certificado sobre el nombre del proyecto abierto en este momento en el entorno: En este ejemplo, el lugar central lo ocupa la función AddIDEMenuItem, que agrega un elemento de menú al menú principal del IDE de Delphi. Como parámetros, recibe el texto del nuevo elemento del menú, su identificador, el identificador del elemento antes del cual se inserta el nuevo elemento, la representación simbólica de la tecla, que, junto con la tecla Ctrl, puede usarse para acceso rapido a un nuevo elemento, y un controlador de eventos correspondiente a la selección de un nuevo elemento. Hemos agregado un nuevo elemento de menú en la sección Ver antes del elemento Relojes.

Ahora conozcamos los notificadores. Definamos un notificador complementario que rastree el cierre/apertura de proyectos y ajuste el campo que almacena el nombre del proyecto activo en consecuencia (omitiremos la implementación de métodos que no hayan sufrido cambios en comparación con el ejemplo anterior por brevedad): Para implementar el notificador, hemos definido la clase TAddInNotifier, que es un TIAddInNotifier descendiente, y hemos anulado el método FileNotification. El IDE llamará a este método cada vez que ocurra un evento al que el notificador del complemento pueda responder (cada evento de este tipo se indica mediante una constante correspondiente de tipo TFileNotification). El campo Expert en la clase TAddInNotifier se utiliza para comentario con un experto (método TAddInNotifier.FileNotification). En el destructor del experto, el notificador se anula del registro y se destruye. Ahora ilustraremos el uso de notificadores modulares. Creemos un complemento experto que emita mensajes sobre cada acto de guardar un archivo de proyecto (en aras de la brevedad, no presentamos la implementación de métodos que ya conocemos): En este ejemplo, el complemento experto monitorea eventos correspondientes a la apertura/cierre de proyectos.

Cada vez que se abre un proyecto, se registra un notificador modular correspondiente al archivo del proyecto. En términos de implementación, los notificadores modulares son similares a los notificadores complementarios: definimos la clase TModuleNotifier, que es descendiente de TIModuleNotifier, y anulamos sus métodos Notify y ComponentRenamed. El IDE llama al método Notify cuando ocurren ciertos eventos relacionados con este módulo; Dentro de este método, se determina la reacción ante un evento particular. El método ComponentRenamed se llama cuando se cambia el nombre de un componente en el formulario del módulo. Tenga en cuenta que no utilizamos este método, pero debemos anularlo; de lo contrario, cuando cambie el nombre del componente, se llamará a un método abstracto de la clase base, lo que tendrá consecuencias impredecibles.

Registrar un notificador modular es un proceso un poco más complejo en comparación con registrar un notificador complementario: primero obtenemos la interfaz del módulo (TIModuleInterface) y luego registramos el notificador usando la interfaz del módulo. Cuando se cierra el proyecto, se cancela el registro del notificador modular (nuevamente usando TIModuleInterface) y se destruye. En conclusión, mostraremos cómo determinar la posición del cursor en la ventana del editor de código. Creemos un experto que, al seleccionar el elemento de menú apropiado, muestre un mensaje que contenga el nombre del archivo activo y la posición del cursor en él (se muestra la implementación de solo los métodos esenciales para este ejemplo): Para determinar la posición del cursor, debemos obtener la siguiente secuencia de interfaces: interfaz modular (TIModuleInterface); interfaz del editor de código (TIEditorInterface); Interfaz de presentación del módulo en la ventana del editor (TIEditView).

Si, al seleccionar un elemento del menú experto, el archivo de texto fuente (*.pas) está activo, se muestra un mensaje que contiene el nombre del archivo activo y la posición actual del cursor en él. Si el archivo activo no es un archivo pas, entonces no se emite el mensaje. Para obtener el nombre del archivo activo, utilice el método GetCurrentFile de la clase TIToolServices. Con esto concluye nuestra consideración de las formas de utilizar interfaces abiertas. El CD-ROM contiene el código fuente de todos los ejemplos dados. El CD-ROM también contiene un ejemplo más complejo y detallado, que contiene un complemento experto que permite al usuario marcar el texto fuente de los módulos Delphi. El archivo bkmrks97.htm contiene una breve guía para instalar y utilizar Bookmarks Expert. Por lo tanto, este artículo proporciona una descripción general de las interfaces abiertas y proporciona ejemplos de su uso. Repetimos una vez más: gracias a la disponibilidad de códigos fuente para interfaces abiertas, podrás comprender fácilmente los detalles que te interesan. Esperamos que la variedad de posibilidades que ofrecen las interfaces abiertas le proporcione más de una idea audaz y útil.

solo por el resultado

estricto cumplimiento de los plazos

Transparencia

implementacion de proyecto

soporte técnico como regalo

Programación, modificaciones, consultas en 1C.

como estamos trabajando

1. Hablamos del problema por teléfono. En la presencia de acceso remoto- mostrar en la pantalla de su computadora.

2. Estimamos el trabajo en rublos si el proyecto es grande, en caso contrario, el número aproximado de horas.

3. Hacemos el trabajo.

4. Aceptas el trabajo en tu programa, si hay alguna deficiencia la corregimos.

5. Nosotros emitimos una factura, tú pagas.

costo del trabajo

1. Todo el trabajo se divide en 3 categorías: consulta, actualización de una configuración estándar, desarrollo o programación de un nuevo informe, procesamiento, botón, etc.

3. Los trabajos de más de 10 horas deberán prepararse con antelación. tarea técnica con descripción y costo del trabajo. El trabajo comienza después de acordar con usted las especificaciones técnicas.

Apoyo técnico

1. Si encuentra algún error en un trabajo previamente aceptado dentro de los 3 meses, lo corregimos sin cargo.

2. Para los clientes habituales, corregimos los defectos de nuestro trabajo de forma gratuita en el plazo de un año.

Software para gestionar tu negocio.

Comprar 1C:Empresa

Somos distribuidor oficial Empresa 1C, puede comprarnos varios productos de software y licencias. Además de comprar la “caja”, lo ayudaremos a configurar el programa, le brindaremos asesoramiento y realizaremos ajustes básicos.

  • Contabilidad
  • Automatización de tiendas
  • Venta al por mayor
  • Asistencia de instalación y configuración inicial incluido en el paquete!
  • Ajustar las configuraciones a las necesidades del cliente, desarrollando nuevos módulos en ausencia de las funciones necesarias en la configuración estándar.
contabilidad 1c 1C: Gestión comercial 1C: Comercio minorista 1C: Gestión de salarios y personal
Desde 3300 rublos. Desde 6700 rublos. Desde 3300 rublos. Desde 7400 rublos.

Provisión de servidor.

Configuración instantánea del servidor + 1C.

¿Sin servidor? No hay problema, seleccionaremos y configuraremos rápidamente un servidor en la nube. Por un módico precio obtendrá una solución muy fiable.

  • Disponibilidad 24\7
  • No es necesario que te quedes con el tuyo administrador de sistema(los ahorros cubrirán los costos de su servidor).
  • Configuración e instalación rápida de 1C en el servidor, en 3 días ya tendrás un sistema en pleno funcionamiento.
  • Puedes moverte a servidor local, si la solución no es satisfactoria.

SMS desde tu 1C

¿Quieres que tus clientes se enteren de promociones y descuentos? ¿Los clientes no regresan? ¡Configure el envío de SMS directamente desde 1C!

Nuestra empresa podrá configurar rápidamente el envío de SMS a sus clientes directamente desde 1C. Ejemplos de eventos que se pueden automatizar:

  • Gracias por la compra y los bonos se otorgan inmediatamente después de la siguiente compra.
  • Acumulación de bonificaciones a la tarjeta como regalo de cumpleaños u otro evento importante o festivo.
  • Notificación de llegada de mercancías al almacén.
  • Caducidad de los bonos regalo.
  • Notificación de recepción de pago anticipado y reserva de mercancía.
  • Dirección con indicaciones para llegar a la tienda/oficina, números de teléfono.
  • Etcétera.

Nuestros especialistas o sus empleados pueden realizar la configuración en 1C. Puedes consultar las tarifas en la página de tarifas de SMS.

  • Entrega de SMS garantizada, se cobra dinero solo por los SMS entregados.
  • Precios separados para cada SMS.
  • Recarga tu saldo de diferentes formas.
  • Vea el historial de todos los SMS enviados en cualquier momento.
  • El nombre del remitente en lugar del número digital en el teléfono del destinatario del mensaje.

La programación orientada a objetos (POO), además del concepto de clase, también prevé el concepto fundamental de interfaz.

¿Qué es una interfaz y cuáles son las características de trabajar con ella en el lenguaje de programación Delphi?

La interfaz es una construcción semántica y sintáctica en el código de un programa que se utiliza para especificar los servicios proporcionados por una clase o componente (Wikipedia).

Esencialmente, una interfaz define una lista de propiedades y métodos que deben usarse cuando se trabaja con la clase que implementa esta interfaz, así como su firma (nombre, tipo de datos, parámetros aceptados (para procedimientos y funciones), etc.). Por tanto, una clase que implementa una interfaz particular debe implementar todos sus componentes. Además, en estricta conformidad con cómo se describen en el mismo.

Las interfaces a menudo se comparan con clases abstractas, pero a pesar de todas las similitudes, esta comparación no es del todo correcta. Como mínimo, las clases abstractas le permiten controlar la visibilidad de los miembros. Al mismo tiempo, los ámbitos no están definidos para las interfaces.

Las interfaces le permiten hacer la arquitectura más flexible, ya que unifican el acceso a tal o cual funcionalidad, y también le permiten evitar una serie de problemas asociados con la herencia de clases (las interfaces también se pueden heredar entre sí).

Para declarar una interfaz en Delphi, utilice la palabra clave interfaz. Esta es la misma palabra clave que define la sección del módulo a la que se puede acceder desde fuera (entre las palabras clave de interfaz y de implementación). Sin embargo, al declarar una interfaz, se utiliza una sintaxis diferente, similar a la declaración de clases.

Delfos/Pascal

IMyNewInterface = procedimiento de interfaz InterfaceProc; fin;

IMyNewInterface = interfaz

procedimiento InterfaceProc;

fin ;

Por lo tanto, la sintaxis de declaración de interfaz en sí no es fundamentalmente diferente de otros lenguajes de programación (las características de la sintaxis basada en Pascal no cuentan). Al mismo tiempo, la implementación de interfaces tiene una serie de características.

El hecho es que las interfaces Delphi se introdujeron originalmente para admitir la tecnología COM. Por lo tanto, la interfaz IInterface, que en Delphi es el antepasado de todas las demás interfaces (una especie de análogo de TObject), ya contiene tres métodos básicos para trabajar con esta tecnología: QueryInterface, _AddRef, _Release. Como resultado, si una clase implementa cualquier interfaz, también debe implementar estos métodos. Incluso si esta clase no está destinada al trabajo COM.

Debido a esta característica de la interfaz IInterface, en Delphi el uso de interfaces, en la mayoría de los casos, conduce a la adición de capacidades obviamente no utilizadas a la clase.

Existe una clase de biblioteca TInterfaceObject que ya contiene la implementación de estos métodos y, al heredar de ella, no es necesario implementarlos usted mismo. Pero como Delphi no soporta la herencia de clases múltiples, su uso a menudo sólo causa dificultades adicionales en el diseño y la implementación de la funcionalidad ya requerida.

Todo esto llevó a que, a pesar de todas las posibilidades que ofrecen las interfaces, ellas uso práctico En Delphi, casi nada ha ido más allá de trabajar con COM.

Al estar optimizadas para trabajar principalmente con esta tecnología, las interfaces, o más bien las restricciones de funcionalidad y arquitectura que necesariamente agregan, no se justifican a la hora de resolver otros problemas.

Por lo tanto, muchos programadores de Delphi todavía se ven privados de una herramienta poderosa y flexible para desarrollar arquitectura de aplicaciones.

Creación interfaz el usuario se ve reducido a seleccionar entre una paleta de componentes necesarios para el funcionamiento del programa Componentes Delphi, empleados interfaz gestión, así como interfaz mostrar información y transferirla al formulario con su posterior diseño.

La interfaz de usuario que cree debe utilizar elementos estándar familiares para los usuarios y proporcionar la máxima comodidad. Todo esto está determinado en última instancia por un criterio como la eficacia de la interfaz: resultados máximos con el mínimo esfuerzo.
Se conocen los principios para crear una interfaz fácil de usar. Como principios más generales a la hora de crear. interfaces de usuario Se pueden considerar tres puntos principales:

  1. El programa debería ayudar a completar una tarea y no convertirse en esa tarea.
  2. Al trabajar con el programa, el usuario no debe sentirse tonto.
  3. El programa debería funcionar de tal manera que el usuario no considere tonto a la computadora.
Primer principio- esta es la llamada "transparencia" de la interfaz. La interfaz de usuario debe ser intuitiva, fácil de aprender y no crear problemas al usuario que tendrá que superar durante el proceso de trabajo. Utilice componentes estándar sin adornos innecesarios, utilice técnicas de control familiares utilizadas por programas similares y alcanzará los criterios de rendimiento. primer principio.

Segundo principio es descuidar las capacidades intelectuales de los usuarios. Por mi propia experiencia, sé que a menudo los usuarios no sólo no saben cómo trabajar en una computadora, sino que simplemente tienen miedo de hacer algo por su cuenta. Por tanto, la interfaz de usuario debe ser lo más amigable posible.
Además, los temores de los usuarios suelen estar justificados, porque el coste del programa, e incluso del propio ordenador, no se puede comparar con el coste, por ejemplo, de una base de datos creada tras muchos años de esfuerzo. Es por eso que, al crear una interfaz de usuario, un programador siempre debe incorporar una "protección infalible" en el programa, contra acciones incorrectas y la entrada de datos incorrectos por parte del usuario. Pero algunos programadores se dejan llevar por esta protección, la hacen demasiado intrusiva y, como resultado, el funcionamiento del programa se parece al famoso "un paso a la izquierda, un paso a la derecha se considera un escape". Y lo que el programador crea como solución a un problema comienza a crear problemas por sí mismo.
Para cumplir segundo principio no es necesario permitir que el programa "corrija" las acciones del usuario e indique exactamente cómo debe actuar, obligándolo a entrar en un marco estrecho. Además, no debe dejarse llevar por la visualización de mensajes informativos, especialmente de diálogo, ya que esto distrae al usuario del trabajo. Sería mejor ofrecer la posibilidad de desactivar las sugerencias por completo.

Tercer principio es crear un programa con las mayores capacidades "mentales" posibles. A pesar del rápido desarrollo equipo de computadora, incluso los programas más utilizados sólo pueden considerarse de forma muy condicional como si tuvieran inteligencia artificial. Interfieren en el trabajo del usuario al mostrar cuadros de diálogo con preguntas estúpidas que causan confusión incluso en las situaciones más simples. Como resultado, los usuarios exclaman en sus corazones: “¡Qué máquina más estúpida!”
A mí personalmente me irritan las constantes preguntas de casi todo el mundo. editores de texto sobre si guardar el texto modificado, aunque el texto original y el actual no difieren en ningún símbolo. Sí, escribí algo, pero luego devolví todo, ¿es realmente imposible entenderlo? Tengo que comprobar si después de todo no he arruinado nada.

Intente cumplir con las siguientes reglas:

Elementos de interfaz estándar
Utilice componentes que sean estándar para este elemento de interfaz. Al encontrar su programa, el usuario no perderá el tiempo para conocerse, sino que comenzará a trabajar inmediatamente; este es uno de los signos de un programa creado profesionalmente.
Pequeña paleta de herramientas.
Trate de no utilizar demasiados componentes diferentes. Y, por supuesto, después de haber utilizado un componente estándar en algún lugar de un mismo lugar, en un caso similar, utilícelo también.
Espaciado igual entre controles
Coloque los elementos de la interfaz a la misma distancia entre sí. Los componentes esparcidos al azar crean la sensación de un producto fabricado de forma poco profesional. Y viceversa, la ubicación cuidadosamente verificada de botones, interruptores, casillas de verificación y otros componentes que componen la interfaz en el Formulario es una señal de trabajo de alta calidad.
Orden de pestañas. "Orden correcto
Orden de tabulación es el orden en el que el cursor de la pantalla se mueve a través de los controles cuando se presiona una tecla Pestaña. En un programa escrito correctamente, el cursor se mueve siguiendo la lógica del trabajo del usuario con el programa. Al crear un programa, el programador suele cambiar componentes, eliminar algunos y agregar otros según sea necesario. Como resultado, en el programa terminado, el cursor salta caóticamente alrededor del formulario. Después de completar el programa, no olvides configurar Orden de tabulación.
Selección de fuente
Simplemente deja las fuentes en paz. Las fuentes predeterminadas de Delphi son adecuadas para cualquier sistema en el que se pueda ejecutar su programa. Utilice fuente en negrita sólo para resaltar elementos importantes. Solicitud cursiva y especialmente subrayado, que el usuario podría confundir con un hipervínculo es de mala educación.
Elección de colores
En cuanto a los colores de los elementos de la interfaz, al igual que en el caso de las fuentes, es mejor dejarlos estándar, por defecto. Delphi utiliza la paleta del sistema de Windows y el usuario puede personalizar fácilmente los colores cambiándolos.
Gestión alternativa
Un programa creado profesionalmente debería poder controlarse no sólo con el ratón, sino también con el teclado. No debe haber funciones que sólo se puedan realizar con el ratón (dibujar con editores gráficos¡no cuenta!). Para las funciones más utilizadas, debe proporcionar "teclas de acceso rápido" para un acceso rápido.
Ladrillos de interfaz
En cuanto a elementos específicos de la interfaz de usuario, la calidad de la interacción del usuario con el programa depende de:
  • cumplimiento del elemento de control con la tarea que realiza;
  • reglas por las cuales opera el elemento de control.
    Esta página analiza las reglas para crear algunos elementos de la interfaz.
Y ahora quiero mostrar qué herramientas ofrece Delphi para administrar componentes en el formulario, su posición relativa y el comportamiento del cursor cuando se presiona una tecla. Pestaña.

Para organizar los componentes entre sí en el orden correcto, primero es necesario resaltarlos. Simplemente puede rodear el área del formulario que contiene los componentes seleccionados. O manteniendo presionado " Cambio", use el mismo mouse para indicar cada componente a seleccionar. Haga clic nuevamente con el mouse en el componente seleccionado (mientras presiona " Cambio") lo deselecciona.

Los componentes seleccionados se pueden administrar como un todo: moverlos por el formulario, asignar valores a las mismas propiedades, copiarlos (para instalarlos, por ejemplo, en otro formulario) e incluso eliminarlos.

Ahora haga clic derecho en uno de los componentes y seleccione en el menú emergente Posición -> Alinear... Aparecerá un cuadro de diálogo que le permitirá ajustar la posición horizontal y vertical de los componentes del grupo. Por ejemplo, necesitamos alinear nuestros cuatro botones hacia la izquierda y asegurarnos de que tengan la misma distancia vertical entre ellos. Para hacer esto, seleccione los botones de radio Horizontal: lados izquierdos Y Vertical: Espacio igualmente.

Al seleccionar el elemento Centro, organizaremos los componentes de modo que sus centros queden ubicados en la misma línea horizontal o verticalmente, y el elemento Centro en ventana mueve los componentes al centro de la ventana, también horizontal o verticalmente.

En la misma línea del menú Pestaña oh orden... hace que aparezca un cuadro de diálogo que controla cómo se mueve el cursor a través de los elementos de la interfaz cuando se presiona una tecla Pestaña. Cuando el formulario aparece en la pantalla, el cursor estará naturalmente en el componente ubicado en la primera línea del cuadro de diálogo. Y luego bajará en la lista. En el cuadro de diálogo, dos flechas azules hacia arriba y hacia abajo controlan la posición del componente seleccionado. Seleccione el componente requerido, use las flechas para moverlo a la línea deseada en la lista, y así sucesivamente.

Al seleccionar un elemento del menú Controlar -> Aparece un submenú que consta de dos elementos:

  • Traer al frente
  • Enviar al fondo
Estos son métodos de componentes que también están disponibles mediante programación. Botón1.EnviarDetrás mueve el botón al "fondo" y Botón 1.Traer al frente- Traer al frente". Es decir, si un componente se coloca encima de otro, estos métodos intercambian sus posiciones. Los casos en los que esto podría aplicarse son bastante obvios.


Arriba