Desarrollo de software para paneles de control para salas de Windows Tablet – Formulario

Domótica eHouse .
Crear el formulario principal (diseño de la pantalla de la tablet . Colocado en el formulario principal paneles 24 campos TPanel para todos los tipos de salidas digitales RM .
Estos formarán los botones para apagar RoomManager (o eléctrico) .
Además , el color dependerá del estado de la lectura .
Por esta razón se han utilizado los botones estándar o TButton tipo similar , porque no tienen la posibilidad de cambiar el color .
Los llamamos ” outputX ” donde X es el número de salida .
No necesitan ser desplegados , porque lo hará automáticamente , esta solicitud . Para cada botón , la salida debe ser asignado al mismo evento (onClick) – output1Click .
Puesto en el formulario principal 24 campos de paneles tipo TPanel para todos los programas se ejecuten RM .
Estos serán los botones para cambiar el RoomManager actual (es decir , ON / OFF dispositivos eléctricos del grupo con un cambio en las entradas de medición de los umbrales usados ​​para la regulación de tales . temperatura) .
Los llamamos ” programX ” donde X es el número de la tecla .
Del mismo modo , no hay necesidad de desplegar , porque lo hará automáticamente , esta solicitud .
Para cada botón , el programa debe ser asignado al mismo evento (onClick) – program1Click .
En el formulario principal de las etiquetas de texto son 16 tipos TLabel para mostrar todos los resultados de las mediciones de RoomManager (numeradas Label1 a Label16) .
Del mismo modo como en los casos anteriores, no es necesario desplegar .
Ver la forma final de la  formar para crear panel de sala de control
La inicialización de la forma:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
procedimiento TForm1 . FormCreate (Sender: TObject) ;
var AlignX , buttonindex , fila , columna , k , i: integer ;
comenzar
GetComputerName ; / / Obtener el nombre del equipo o panel – lee el
path: GetCurrentDir = () ; / / Obtiene el directorio actual de aplicación local trayectoria – lee el directorio en el que el programa
path: = stringreplace (ruta , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Obtiene la ruta de eHouse aplicación
RemotePath: = ruta ; / / El mismo camino para remoteaccess de inicialización de – al comienzo de la vía trazada por el mismo acceso remoto
loadnames_rm ; / / Carga nombres de los controladores ehouse1
init_heat_temperature_names ; / / Init nombres HeatManager
readethernetdevs ; / / Cargar controladores ethernet nombres eHouse
i: = 1 ;
mientras i < ; ParamCount = a / / realizar argumento de línea de comandos – procesa la línea de comandos
comenzar
si pos ( ‘ / X: ‘ , minúsculas (ParamStr (i))) = 1, entonces / / panel ancho – anchura del panel
form1 . Ancho: = chk_int (stringreplace (ParamStr (i) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
si pos ( ‘ / S: ‘ , minúsculas (ParamStr (i))) = 1 then / / panel de altura – altura del panel
form1 . altura: = chk_int (stringreplace (ParamStr (i) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
si pos ( ‘ / R: ‘ , minúsculas (ParamStr (i))) = 1, entonces el nombre / / dispositivo (RoomManager) – RoomManger nombre
deviceindex: = RMDeviceIndexByName ((stringreplace (ParamStr (i) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
si pos ( ‘ / A: ‘ , minúsculas (ParamStr (i))) = 1, entonces la dirección / / dispositivo (RoomManager) – RoomManager dirección
deviceindex: = (get_index_rm (stringreplace (ParamStr (i) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
si pos ( ‘ / P: ‘ , minúsculas (ParamStr (i))) = 1, entonces el acceso / / remoto vía – camino de acceso remoto
RemotePath: = ((stringreplace (ParamStr (i) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
inc (i) ;
final ;
si form1 . anchura < ; 100 entonces form1 . anchura: = 800 ; / / Si los parámetros incorrectos para el tamaño por defecto establece – por defecto
si form1 . altura < ; 100 entonces form1 . altura: = 600 ;
devicestoupdatestatus: = IntToStr (rm [deviceindex] . ADRHA) + ‘ – ‘ + IntToStr (rm [deviceindex] . ADRL) ;
/ / Límite de la búsqueda de RoomManager estado / filtrar otros dispositivos
/ / Buscar solo dispositivo pannel para la Utilización de limitación
/ / Fecha solamente el estado de la CPU seleccionada RoomManager veces menos y eHouse servidor
outputbuttonnames (deviceindex) ; / / Inicializar botones y los nombres de las etiquetas – botas , botones y etiquetas de texto
form1 . Leyenda: = ‘ eHouse Panel de control: ‘ + Rm [deviceindex] . devname ; / / Establecer el título de las principales formas de Nombre RoomManager – encabezado muestra el nombre de la forma RoomManager
timer1 . Intervalo: = 3000 ; / Cíclico / Set tarea intervalo en milisegundos
timer1 . Habilitado: = true ; / / Start tareas automáticas (actualización de estado
k: = 1 ;
buttonindex: = 0 ; / / Botón de corriente (visible) índice de – el número actual de la (aparente)
fila: = 0 ; Botón / / actual en la fila – número de la clave actual en la línea actual
/ / Column: = 0 ;
AlignX: = (form1 . clientWidth – (Filas) * (buttonWidth + Xspace)) div 2 ; / / Centrar los botones del panel – centrado bloques botones
para i: = 0 a form1 . ComponentCount – 1 / / Output setup botón automático – automáticamente configurar el botón Salir
begin / / para cada objeto en form1 – para todos los elementos de la Form1
if (form1 . Componentes [i] es TPanel) entonces / / si el objeto es TPanel (nuestro botón) – si el TPanel tipo de objeto (botón)
comenzar
si CompareText ((form1 . componentes [i] como TPanel) . nombre , ‘ salida ‘ + IntToStr (k)) = 0 then / / si el nombre CONSISTE (salida)
comenzar
fila: = buttonindex mod (filas) ; / / Cálculo de filas y columnas de índices – calcula las coordenadas de la columna y fila
columna: = buttonindex div (filas) ;
si la longitud (OutputNames [k – 1])> ; 0 then / / Sólo muestra los botones ouput con el nombre – sólo muestra botones con el nombre
comenzar
(Form1 . Componentes [i] como TPanel) . izquierda: = AlignX fila + * (+ buttonWidth Xspace) ; / / Calcular el eje X possition – calcula su posición en el eje X
(Form1 . Componentes [i] como TPanel) . top: = + yoffsetouts columna * (buttonheight + yspace) ; / / Calcular el possition eje Y – calcula su posición en el eje Y
(Form1 . Componentes [i] como TPanel) . anchura: = buttonWidth ; / / Set Botones Ancho – Ancho de los botones
(Form1 . Componentes [i] como TPanel) . altura: = buttonheight ; / / Set Botones Altura – La cantidad de botones
(Form1 . componentes [i] como TPanel) . Leyenda: = Outputnames [k – 1] ; / Botón / Set Leyenda – establece el texto del botón
(Form1 . componentes [i] como TPanel) . Bevelinner: = bvRaised ;
(Form1 . componentes [i] como TPanel) . BevelOuter: = bvRaised ;
(Form1 . componentes [i] como TPanel) . fuente . Tamaño: = tamaño del texto ; / / Set Button Tamaño de la Fuente – establece el tamaño de fuente para el botón
inc (buttonindex) ; / / Next botón visible – ver la siguiente
final
más
comenzar
(Form1 . componentes [i] como TPanel) . visibles: = False ; / / No = nombre no muestran botón – eliminar las claves sin nombre
final ;
inc (k) ; / / Botón Siguiente – botón siguiente
final ;
final ;
final ;
/ / / / / / / / / / / / Los mismos botones para el programa de – Del mismo modo para los botones para poner en marcha programas
buttonindex: = 0 ;
k: = 1 ;
para i: = 0 a form1 . ComponentCount – 1 a
comenzar
if (form1 . Componentes [i] es TPanel) entonces
comenzar
si CompareText ((form1 . componentes [i] como TPanel) . nombre , ‘ programa ‘ + IntToStr (k)) = 0 entonces
comenzar

fila: = buttonindex mod (filas) ;
columna: = buttonindex div (filas) ;
si la longitud (ProgramNames [k – 1])> ; 0 entonces
comenzar
(Form1 . Componentes [i] como TPanel) . izquierda: = AlignX fila + * (+ buttonWidth Xspace) ;
(Form1 . Componentes [i] como TPanel) . top: = + yoffsetprograms columna * (buttonheight + yspace) ;
(Form1 . Componentes [i] como TPanel) . anchura: = buttonWidth ;
(Form1 . Componentes [i] como TPanel) . altura: = buttonheight ;
(Form1 . componentes [i] como TPanel) . Leyenda: = Programnames [k – 1] ; / / Definir botones Botón de título para el programa de – establece el nombre de los botones de programa
(Form1 . componentes [i] como TPanel) . Bevelinner: = bvRaised ;
(Form1 . componentes [i] como TPanel) . BevelOuter: = bvRaised ;
(Form1 . componentes [i] como TPanel) . fuente . Tamaño: = tamaño del texto ;
inc (buttonindex) ;
final
más
comenzar
(Form1 . componentes [i] como TPanel) . visibles: = False ;
final ;

inc (k) ;
final ;
final ;
final ;

k: = 1 ;
buttonindex: = 0 ;
/ / AlignX: = (form1 . clientWidth – (Labelrows * (labelWidth + + labelresultsize Xspace))) div 2 ;
/ / / / / / / Analogicaly para etiquetas – Del mismo modo , la etiqueta
para i: = 0 a form1 . ComponentCount – 1 a
comenzar
if (form1 . Componentes [i] es TLabel) entonces
comenzar
si CompareText ((form1 . componentes [i] como TLabel) . nombre , ‘ etiqueta ‘ + IntToStr (k)) = 0 entonces
comenzar

fila: = buttonindex mod (labelrows) ;
columna: = buttonindex div (labelrows) ;
si la longitud (LabelNames [k – 1])> ; 0 then / / si la longitud del texto label> ; ; 0 – si la descripción es
comenzar
(Form1 . Componentes [i] como TLabel) . izquierda: = AlignX fila + * (labelWidth + + labelresultsize Xspace) ; / / Calcular X ubicación
(Form1 . Componentes [i] como TLabel) . top: = + yoffsetlabel columna * (labelheight + yspace) ; / / Calcular la ubicación Y
(Form1 . Componentes [i] como TLabel) . anchura: = labelWidth ;
(Form1 . Componentes [i] como TLabel) . altura: = labelheight ;
(Form1 . componentes [i] como TLabel) . Leyenda: = LabelNames [k – 1] ; / / / Asignar títulos de etiqueta – encabezados marcadores adecuados
(Form1 . componentes [i] como TLabel) . fuente . color: = clWhite ; / / Establecer el valor predeterminado de color para la etiqueta – establece el color predeterminado de las etiquetas
si pos ( ‘ [ – % ] ‘ , LabelNames [k – 1])> ; 0 entonces (form1 . componentes [i] como TLabel) . fuente . color: = clyellow ; / / Establecer color para medición de la luz – para la medición del color de iluminación
si pos ( ‘ [ % ] ‘ , LabelNames [k – 1])> ; 0 entonces (form1 . componentes [i] como TLabel) . fuente . color: = Claque ; / / Establecer las mediciones de color para el porcentaje – color para el valor de interés
si pos ( ‘ [C] ‘ , LabelNames [k – 1])> ; 0 entonces (form1 . componentes [i] como TLabel) . fuente . color: = clWhite ; / / Establecer color para control de la temperatura – para valores de temperatura de color
(Form1 . componentes [i] como TLabel) . fuente . Tamaño: = labelfontsize ; / Font / Set tamaño de la etiqueta – establece el tamaño de fuente de la etiqueta de texto
inc (buttonindex) ; / / Etiqueta visible Siguiente – etiqueta aparece junto
final
más
comenzar
(Form1 . componentes [i] como TLabel) . visibles: = False ; / / Ocultar etiquetas de texto sin – ocultar etiquetas sin textu
final ;
inc (k) ; / / Etiqueta Siguiente – siguiente etiqueta
final ;
final ;
final ;
update_status ; / / Actualizar el panel de estado del dispositivo actual de los registros – actualiza el estado del controlador de los archivos de registro del servidor eHouse
final ;
El resultado final después de auto – configurado y colocación de los botones por el programa y eliminar elementos no contadas (si no queremos que tengan en el panel debido a las restricciones a los derechos de acceso o el uso de la salida) .
 El efecto final de la distribución automática de los elementos en el formulario
Leer más: Domótica – Controladores eHouse
Domótica eHouse Home Automation Fabricante